Commit 78abf1b5 authored by Maximilian Luz's avatar Maximilian Luz Committed by Hans de Goede

platform/surface: aggregator: Enforce use of target-ID enum in device ID macros

Similar to the target category (TC), the target ID (TID) can be one
value out of a small number of choices, given in enum ssam_ssh_tid.

In the device ID macros, SSAM_SDEV() and SSAM_VDEV() we already use text
expansion to, both, remove some textual clutter for the target category
values and enforce that the value belongs to the known set. Now that we
know the names for the target IDs, use the same trick for them as well.

Also rename the SSAM_ANY_x macros to SSAM_SSH_x_ANY to better fit in.
Signed-off-by: default avatarMaximilian Luz <luzmaximilian@gmail.com>
Acked-by: default avatarSebastian Reichel <sebastian.reichel@collabora.com>
Link: https://lore.kernel.org/r/20221202223327.690880-9-luzmaximilian@gmail.comReviewed-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
parent ea11bf4e
...@@ -230,7 +230,7 @@ static void surface_hid_remove(struct ssam_device *sdev) ...@@ -230,7 +230,7 @@ static void surface_hid_remove(struct ssam_device *sdev)
} }
static const struct ssam_device_id surface_hid_match[] = { static const struct ssam_device_id surface_hid_match[] = {
{ SSAM_SDEV(HID, SSAM_ANY_TID, SSAM_ANY_IID, 0x00) }, { SSAM_SDEV(HID, ANY, SSAM_SSH_IID_ANY, 0x00) },
{ }, { },
}; };
MODULE_DEVICE_TABLE(ssam, surface_hid_match); MODULE_DEVICE_TABLE(ssam, surface_hid_match);
......
...@@ -348,8 +348,8 @@ static const struct ssam_hub_desc kip_hub = { ...@@ -348,8 +348,8 @@ static const struct ssam_hub_desc kip_hub = {
/* -- Driver registration. -------------------------------------------------- */ /* -- Driver registration. -------------------------------------------------- */
static const struct ssam_device_id ssam_hub_match[] = { static const struct ssam_device_id ssam_hub_match[] = {
{ SSAM_VDEV(HUB, 0x01, SSAM_SSH_TC_KIP, 0x00), (unsigned long)&kip_hub }, { SSAM_VDEV(HUB, SAM, SSAM_SSH_TC_KIP, 0x00), (unsigned long)&kip_hub },
{ SSAM_VDEV(HUB, 0x02, SSAM_SSH_TC_BAS, 0x00), (unsigned long)&base_hub }, { SSAM_VDEV(HUB, KIP, SSAM_SSH_TC_BAS, 0x00), (unsigned long)&base_hub },
{ } { }
}; };
MODULE_DEVICE_TABLE(ssam, ssam_hub_match); MODULE_DEVICE_TABLE(ssam, ssam_hub_match);
......
...@@ -510,8 +510,8 @@ static const struct ssam_tablet_sw_desc ssam_pos_sw_desc = { ...@@ -510,8 +510,8 @@ static const struct ssam_tablet_sw_desc ssam_pos_sw_desc = {
/* -- Driver registration. -------------------------------------------------- */ /* -- Driver registration. -------------------------------------------------- */
static const struct ssam_device_id ssam_tablet_sw_match[] = { static const struct ssam_device_id ssam_tablet_sw_match[] = {
{ SSAM_SDEV(KIP, 0x01, 0x00, 0x01), (unsigned long)&ssam_kip_sw_desc }, { SSAM_SDEV(KIP, SAM, 0x00, 0x01), (unsigned long)&ssam_kip_sw_desc },
{ SSAM_SDEV(POS, 0x01, 0x00, 0x01), (unsigned long)&ssam_pos_sw_desc }, { SSAM_SDEV(POS, SAM, 0x00, 0x01), (unsigned long)&ssam_pos_sw_desc },
{ }, { },
}; };
MODULE_DEVICE_TABLE(ssam, ssam_tablet_sw_match); MODULE_DEVICE_TABLE(ssam, ssam_tablet_sw_match);
......
...@@ -1214,7 +1214,7 @@ static void surface_dtx_ssam_remove(struct ssam_device *sdev) ...@@ -1214,7 +1214,7 @@ static void surface_dtx_ssam_remove(struct ssam_device *sdev)
} }
static const struct ssam_device_id surface_dtx_ssam_match[] = { static const struct ssam_device_id surface_dtx_ssam_match[] = {
{ SSAM_SDEV(BAS, 0x01, 0x00, 0x00) }, { SSAM_SDEV(BAS, SAM, 0x00, 0x00) },
{ }, { },
}; };
MODULE_DEVICE_TABLE(ssam, surface_dtx_ssam_match); MODULE_DEVICE_TABLE(ssam, surface_dtx_ssam_match);
......
...@@ -169,7 +169,7 @@ static void surface_platform_profile_remove(struct ssam_device *sdev) ...@@ -169,7 +169,7 @@ static void surface_platform_profile_remove(struct ssam_device *sdev)
} }
static const struct ssam_device_id ssam_platform_profile_match[] = { static const struct ssam_device_id ssam_platform_profile_match[] = {
{ SSAM_SDEV(TMP, 0x01, 0x00, 0x01) }, { SSAM_SDEV(TMP, SAM, 0x00, 0x01) },
{ }, { },
}; };
MODULE_DEVICE_TABLE(ssam, ssam_platform_profile_match); MODULE_DEVICE_TABLE(ssam, ssam_platform_profile_match);
......
...@@ -852,8 +852,8 @@ static const struct spwr_psy_properties spwr_psy_props_bat2_sb3 = { ...@@ -852,8 +852,8 @@ static const struct spwr_psy_properties spwr_psy_props_bat2_sb3 = {
}; };
static const struct ssam_device_id surface_battery_match[] = { static const struct ssam_device_id surface_battery_match[] = {
{ SSAM_SDEV(BAT, 0x01, 0x01, 0x00), (unsigned long)&spwr_psy_props_bat1 }, { SSAM_SDEV(BAT, SAM, 0x01, 0x00), (unsigned long)&spwr_psy_props_bat1 },
{ SSAM_SDEV(BAT, 0x02, 0x01, 0x00), (unsigned long)&spwr_psy_props_bat2_sb3 }, { SSAM_SDEV(BAT, KIP, 0x01, 0x00), (unsigned long)&spwr_psy_props_bat2_sb3 },
{ }, { },
}; };
MODULE_DEVICE_TABLE(ssam, surface_battery_match); MODULE_DEVICE_TABLE(ssam, surface_battery_match);
......
...@@ -260,7 +260,7 @@ static const struct spwr_psy_properties spwr_psy_props_adp1 = { ...@@ -260,7 +260,7 @@ static const struct spwr_psy_properties spwr_psy_props_adp1 = {
}; };
static const struct ssam_device_id surface_ac_match[] = { static const struct ssam_device_id surface_ac_match[] = {
{ SSAM_SDEV(BAT, 0x01, 0x01, 0x01), (unsigned long)&spwr_psy_props_adp1 }, { SSAM_SDEV(BAT, SAM, 0x01, 0x01), (unsigned long)&spwr_psy_props_adp1 },
{ }, { },
}; };
MODULE_DEVICE_TABLE(ssam, surface_ac_match); MODULE_DEVICE_TABLE(ssam, surface_ac_match);
......
...@@ -68,9 +68,9 @@ struct ssam_device_uid { ...@@ -68,9 +68,9 @@ struct ssam_device_uid {
* match_flags member of the device ID structure. Do not use them directly * match_flags member of the device ID structure. Do not use them directly
* with struct ssam_device_id or struct ssam_device_uid. * with struct ssam_device_id or struct ssam_device_uid.
*/ */
#define SSAM_ANY_TID 0xffff #define SSAM_SSH_TID_ANY 0xffff
#define SSAM_ANY_IID 0xffff #define SSAM_SSH_IID_ANY 0xffff
#define SSAM_ANY_FUN 0xffff #define SSAM_SSH_FUN_ANY 0xffff
/** /**
* SSAM_DEVICE() - Initialize a &struct ssam_device_id with the given * SSAM_DEVICE() - Initialize a &struct ssam_device_id with the given
...@@ -83,25 +83,25 @@ struct ssam_device_uid { ...@@ -83,25 +83,25 @@ struct ssam_device_uid {
* *
* Initializes a &struct ssam_device_id with the given parameters. See &struct * Initializes a &struct ssam_device_id with the given parameters. See &struct
* ssam_device_uid for details regarding the parameters. The special values * ssam_device_uid for details regarding the parameters. The special values
* %SSAM_ANY_TID, %SSAM_ANY_IID, and %SSAM_ANY_FUN can be used to specify that * %SSAM_SSH_TID_ANY, %SSAM_SSH_IID_ANY, and %SSAM_SSH_FUN_ANY can be used to specify that
* matching should ignore target ID, instance ID, and/or sub-function, * matching should ignore target ID, instance ID, and/or sub-function,
* respectively. This macro initializes the ``match_flags`` field based on the * respectively. This macro initializes the ``match_flags`` field based on the
* given parameters. * given parameters.
* *
* Note: The parameters @d and @cat must be valid &u8 values, the parameters * Note: The parameters @d and @cat must be valid &u8 values, the parameters
* @tid, @iid, and @fun must be either valid &u8 values or %SSAM_ANY_TID, * @tid, @iid, and @fun must be either valid &u8 values or %SSAM_SSH_TID_ANY,
* %SSAM_ANY_IID, or %SSAM_ANY_FUN, respectively. Other non-&u8 values are not * %SSAM_SSH_IID_ANY, or %SSAM_SSH_FUN_ANY, respectively. Other non-&u8 values are not
* allowed. * allowed.
*/ */
#define SSAM_DEVICE(d, cat, tid, iid, fun) \ #define SSAM_DEVICE(d, cat, tid, iid, fun) \
.match_flags = (((tid) != SSAM_ANY_TID) ? SSAM_MATCH_TARGET : 0) \ .match_flags = (((tid) != SSAM_SSH_TID_ANY) ? SSAM_MATCH_TARGET : 0) \
| (((iid) != SSAM_ANY_IID) ? SSAM_MATCH_INSTANCE : 0) \ | (((iid) != SSAM_SSH_IID_ANY) ? SSAM_MATCH_INSTANCE : 0) \
| (((fun) != SSAM_ANY_FUN) ? SSAM_MATCH_FUNCTION : 0), \ | (((fun) != SSAM_SSH_FUN_ANY) ? SSAM_MATCH_FUNCTION : 0), \
.domain = d, \ .domain = d, \
.category = cat, \ .category = cat, \
.target = __builtin_choose_expr((tid) != SSAM_ANY_TID, (tid), 0), \ .target = __builtin_choose_expr((tid) != SSAM_SSH_TID_ANY, (tid), 0), \
.instance = __builtin_choose_expr((iid) != SSAM_ANY_IID, (iid), 0), \ .instance = __builtin_choose_expr((iid) != SSAM_SSH_IID_ANY, (iid), 0), \
.function = __builtin_choose_expr((fun) != SSAM_ANY_FUN, (fun), 0) .function = __builtin_choose_expr((fun) != SSAM_SSH_FUN_ANY, (fun), 0)
/** /**
* SSAM_VDEV() - Initialize a &struct ssam_device_id as virtual device with * SSAM_VDEV() - Initialize a &struct ssam_device_id as virtual device with
...@@ -113,18 +113,18 @@ struct ssam_device_uid { ...@@ -113,18 +113,18 @@ struct ssam_device_uid {
* *
* Initializes a &struct ssam_device_id with the given parameters in the * Initializes a &struct ssam_device_id with the given parameters in the
* virtual domain. See &struct ssam_device_uid for details regarding the * virtual domain. See &struct ssam_device_uid for details regarding the
* parameters. The special values %SSAM_ANY_TID, %SSAM_ANY_IID, and * parameters. The special values %SSAM_SSH_TID_ANY, %SSAM_SSH_IID_ANY, and
* %SSAM_ANY_FUN can be used to specify that matching should ignore target ID, * %SSAM_SSH_FUN_ANY can be used to specify that matching should ignore target ID,
* instance ID, and/or sub-function, respectively. This macro initializes the * instance ID, and/or sub-function, respectively. This macro initializes the
* ``match_flags`` field based on the given parameters. * ``match_flags`` field based on the given parameters.
* *
* Note: The parameter @cat must be a valid &u8 value, the parameters @tid, * Note: The parameter @cat must be a valid &u8 value, the parameters @tid,
* @iid, and @fun must be either valid &u8 values or %SSAM_ANY_TID, * @iid, and @fun must be either valid &u8 values or %SSAM_SSH_TID_ANY,
* %SSAM_ANY_IID, or %SSAM_ANY_FUN, respectively. Other non-&u8 values are not * %SSAM_SSH_IID_ANY, or %SSAM_SSH_FUN_ANY, respectively. Other non-&u8 values are not
* allowed. * allowed.
*/ */
#define SSAM_VDEV(cat, tid, iid, fun) \ #define SSAM_VDEV(cat, tid, iid, fun) \
SSAM_DEVICE(SSAM_DOMAIN_VIRTUAL, SSAM_VIRTUAL_TC_##cat, tid, iid, fun) SSAM_DEVICE(SSAM_DOMAIN_VIRTUAL, SSAM_VIRTUAL_TC_##cat, SSAM_SSH_TID_##tid, iid, fun)
/** /**
* SSAM_SDEV() - Initialize a &struct ssam_device_id as physical SSH device * SSAM_SDEV() - Initialize a &struct ssam_device_id as physical SSH device
...@@ -136,18 +136,18 @@ struct ssam_device_uid { ...@@ -136,18 +136,18 @@ struct ssam_device_uid {
* *
* Initializes a &struct ssam_device_id with the given parameters in the SSH * Initializes a &struct ssam_device_id with the given parameters in the SSH
* domain. See &struct ssam_device_uid for details regarding the parameters. * domain. See &struct ssam_device_uid for details regarding the parameters.
* The special values %SSAM_ANY_TID, %SSAM_ANY_IID, and %SSAM_ANY_FUN can be * The special values %SSAM_SSH_TID_ANY, %SSAM_SSH_IID_ANY, and
* used to specify that matching should ignore target ID, instance ID, and/or * %SSAM_SSH_FUN_ANY can be used to specify that matching should ignore target
* sub-function, respectively. This macro initializes the ``match_flags`` * ID, instance ID, and/or sub-function, respectively. This macro initializes
* field based on the given parameters. * the ``match_flags`` field based on the given parameters.
* *
* Note: The parameter @cat must be a valid &u8 value, the parameters @tid, * Note: The parameter @cat must be a valid &u8 value, the parameters @tid,
* @iid, and @fun must be either valid &u8 values or %SSAM_ANY_TID, * @iid, and @fun must be either valid &u8 values or %SSAM_SSH_TID_ANY,
* %SSAM_ANY_IID, or %SSAM_ANY_FUN, respectively. Other non-&u8 values are not * %SSAM_SSH_IID_ANY, or %SSAM_SSH_FUN_ANY, respectively. Other non-&u8 values
* allowed. * are not allowed.
*/ */
#define SSAM_SDEV(cat, tid, iid, fun) \ #define SSAM_SDEV(cat, tid, iid, fun) \
SSAM_DEVICE(SSAM_DOMAIN_SERIALHUB, SSAM_SSH_TC_##cat, tid, iid, fun) SSAM_DEVICE(SSAM_DOMAIN_SERIALHUB, SSAM_SSH_TC_##cat, SSAM_SSH_TID_##tid, iid, fun)
/* /*
* enum ssam_device_flags - Flags for SSAM client devices. * enum ssam_device_flags - Flags for SSAM client devices.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment