mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00: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)
|
||||
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) {
|
||||
kfree(connection);
|
||||
return NULL;
|
||||
|
@ -246,7 +246,7 @@ static int __init gb_init(void)
|
||||
if (greybus_disabled())
|
||||
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();
|
||||
|
||||
|
@ -52,14 +52,14 @@
|
||||
.serial_number = (s),
|
||||
|
||||
/* XXX I couldn't get my Kconfig file to be noticed for out-of-tree build */
|
||||
#ifndef CONFIG_HOST_DEV_CPORT_ID_MAX
|
||||
#define CONFIG_HOST_DEV_CPORT_ID_MAX 128
|
||||
#endif /* !CONFIG_HOST_DEV_CPORT_ID_MAX */
|
||||
#ifndef CONFIG_CPORT_ID_MAX
|
||||
#define CONFIG_CPORT_ID_MAX 128
|
||||
#endif /* !CONFIG_CPORT_ID_MAX */
|
||||
|
||||
/* Maximum number of CPorts usable by a host device */
|
||||
/* 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_BAD U16_MAX /* UniPro max id is 4095 */
|
||||
#define CPORT_ID_MAX CONFIG_CPORT_ID_MAX
|
||||
#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
|
||||
* 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)
|
||||
{
|
||||
return cport_id != CPORT_ID_BAD;
|
||||
return cport_id != CPORT_ID_BAD && cport_id <= CPORT_ID_MAX;
|
||||
}
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
@ -224,9 +224,12 @@ static u32 gb_manifest_parse_cports(struct gb_bundle *bundle)
|
||||
if (desc_cport->bundle != bundle_id)
|
||||
continue;
|
||||
|
||||
cport_id = le16_to_cpu(desc_cport->id);
|
||||
if (cport_id > CPORT_ID_MAX)
|
||||
goto cleanup;
|
||||
|
||||
/* Found one. Set up its function structure */
|
||||
protocol_id = desc_cport->protocol_id;
|
||||
cport_id = le16_to_cpu(desc_cport->id);
|
||||
if (!gb_connection_create(bundle, cport_id, protocol_id))
|
||||
goto cleanup;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user