mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-21 10:00:03 +07:00
greybus: rename HOST_DEV_CPORT_ID_MAX
We limit the number of host-side CPorts to a fixed maximum (which is less than the 4096 that UniPro allows). This patch imposes a similar limit on the CPort IDs defined by modules (signaling an error if one too large is found in a manifest). It seems reasonable to use the same value for both limits. Change the name of the constant that defines the host limit and use it for both. Update cport_id_valid() to enforce the maximum. (Ultimately we should impose a limit like this; this change is being made in preparation for supporting multiple connections over a single CPort.) Signed-off-by: Alex Elder <elder@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
parent
d29b3d631e
commit
fb690ca96f
@ -158,7 +158,7 @@ struct gb_connection *gb_connection_create(struct gb_bundle *bundle,
|
|||||||
if (!connection)
|
if (!connection)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
retval = ida_simple_get(id_map, 0, HOST_DEV_CPORT_ID_MAX, GFP_KERNEL);
|
retval = ida_simple_get(id_map, 0, CPORT_ID_MAX, GFP_KERNEL);
|
||||||
if (retval < 0) {
|
if (retval < 0) {
|
||||||
kfree(connection);
|
kfree(connection);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -246,7 +246,7 @@ static int __init gb_init(void)
|
|||||||
if (greybus_disabled())
|
if (greybus_disabled())
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
BUILD_BUG_ON(HOST_DEV_CPORT_ID_MAX >= (long)CPORT_ID_BAD);
|
BUILD_BUG_ON(CPORT_ID_MAX >= (long)CPORT_ID_BAD);
|
||||||
|
|
||||||
gb_debugfs_init();
|
gb_debugfs_init();
|
||||||
|
|
||||||
|
@ -52,14 +52,14 @@
|
|||||||
.serial_number = (s),
|
.serial_number = (s),
|
||||||
|
|
||||||
/* XXX I couldn't get my Kconfig file to be noticed for out-of-tree build */
|
/* XXX I couldn't get my Kconfig file to be noticed for out-of-tree build */
|
||||||
#ifndef CONFIG_HOST_DEV_CPORT_ID_MAX
|
#ifndef CONFIG_CPORT_ID_MAX
|
||||||
#define CONFIG_HOST_DEV_CPORT_ID_MAX 128
|
#define CONFIG_CPORT_ID_MAX 128
|
||||||
#endif /* !CONFIG_HOST_DEV_CPORT_ID_MAX */
|
#endif /* !CONFIG_CPORT_ID_MAX */
|
||||||
|
|
||||||
/* Maximum number of CPorts usable by a host device */
|
/* Maximum number of CPorts usable by a host device */
|
||||||
/* XXX This should really be determined by the AP module manifest */
|
/* XXX This should really be determined by the AP module manifest */
|
||||||
#define HOST_DEV_CPORT_ID_MAX CONFIG_HOST_DEV_CPORT_ID_MAX
|
#define CPORT_ID_MAX CONFIG_CPORT_ID_MAX
|
||||||
#define CPORT_ID_BAD U16_MAX /* UniPro max id is 4095 */
|
#define CPORT_ID_BAD U16_MAX /* UniPro max id is 4095 */
|
||||||
|
|
||||||
/* For SP1 hardware, we are going to "hardcode" each device to have all logical
|
/* For SP1 hardware, we are going to "hardcode" each device to have all logical
|
||||||
* blocks in order to be able to address them as one unified "unit". Then
|
* blocks in order to be able to address them as one unified "unit". Then
|
||||||
@ -198,7 +198,7 @@ static inline int is_gb_connection(const struct device *dev)
|
|||||||
|
|
||||||
static inline bool cport_id_valid(u16 cport_id)
|
static inline bool cport_id_valid(u16 cport_id)
|
||||||
{
|
{
|
||||||
return cport_id != CPORT_ID_BAD;
|
return cport_id != CPORT_ID_BAD && cport_id <= CPORT_ID_MAX;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* __KERNEL__ */
|
#endif /* __KERNEL__ */
|
||||||
|
@ -224,9 +224,12 @@ static u32 gb_manifest_parse_cports(struct gb_bundle *bundle)
|
|||||||
if (desc_cport->bundle != bundle_id)
|
if (desc_cport->bundle != bundle_id)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
cport_id = le16_to_cpu(desc_cport->id);
|
||||||
|
if (cport_id > CPORT_ID_MAX)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
/* Found one. Set up its function structure */
|
/* Found one. Set up its function structure */
|
||||||
protocol_id = desc_cport->protocol_id;
|
protocol_id = desc_cport->protocol_id;
|
||||||
cport_id = le16_to_cpu(desc_cport->id);
|
|
||||||
if (!gb_connection_create(bundle, cport_id, protocol_id))
|
if (!gb_connection_create(bundle, cport_id, protocol_id))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user