Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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: Maximilian Luz <luzmaximilian@gmail.com>
Acked-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Link: https://lore.kernel.org/r/20221202223327.690880-9-luzmaximilian@gmail.com
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>

authored by

Maximilian Luz and committed by
Hans de Goede
78abf1b5 ea11bf4e

+35 -35
+1 -1
drivers/hid/surface-hid/surface_hid.c
··· 230 230 } 231 231 232 232 static const struct ssam_device_id surface_hid_match[] = { 233 - { SSAM_SDEV(HID, SSAM_ANY_TID, SSAM_ANY_IID, 0x00) }, 233 + { SSAM_SDEV(HID, ANY, SSAM_SSH_IID_ANY, 0x00) }, 234 234 { }, 235 235 }; 236 236 MODULE_DEVICE_TABLE(ssam, surface_hid_match);
+2 -2
drivers/platform/surface/surface_aggregator_hub.c
··· 348 348 /* -- Driver registration. -------------------------------------------------- */ 349 349 350 350 static const struct ssam_device_id ssam_hub_match[] = { 351 - { SSAM_VDEV(HUB, 0x01, SSAM_SSH_TC_KIP, 0x00), (unsigned long)&kip_hub }, 352 - { SSAM_VDEV(HUB, 0x02, SSAM_SSH_TC_BAS, 0x00), (unsigned long)&base_hub }, 351 + { SSAM_VDEV(HUB, SAM, SSAM_SSH_TC_KIP, 0x00), (unsigned long)&kip_hub }, 352 + { SSAM_VDEV(HUB, KIP, SSAM_SSH_TC_BAS, 0x00), (unsigned long)&base_hub }, 353 353 { } 354 354 }; 355 355 MODULE_DEVICE_TABLE(ssam, ssam_hub_match);
+2 -2
drivers/platform/surface/surface_aggregator_tabletsw.c
··· 510 510 /* -- Driver registration. -------------------------------------------------- */ 511 511 512 512 static const struct ssam_device_id ssam_tablet_sw_match[] = { 513 - { SSAM_SDEV(KIP, 0x01, 0x00, 0x01), (unsigned long)&ssam_kip_sw_desc }, 514 - { SSAM_SDEV(POS, 0x01, 0x00, 0x01), (unsigned long)&ssam_pos_sw_desc }, 513 + { SSAM_SDEV(KIP, SAM, 0x00, 0x01), (unsigned long)&ssam_kip_sw_desc }, 514 + { SSAM_SDEV(POS, SAM, 0x00, 0x01), (unsigned long)&ssam_pos_sw_desc }, 515 515 { }, 516 516 }; 517 517 MODULE_DEVICE_TABLE(ssam, ssam_tablet_sw_match);
+1 -1
drivers/platform/surface/surface_dtx.c
··· 1214 1214 } 1215 1215 1216 1216 static const struct ssam_device_id surface_dtx_ssam_match[] = { 1217 - { SSAM_SDEV(BAS, 0x01, 0x00, 0x00) }, 1217 + { SSAM_SDEV(BAS, SAM, 0x00, 0x00) }, 1218 1218 { }, 1219 1219 }; 1220 1220 MODULE_DEVICE_TABLE(ssam, surface_dtx_ssam_match);
+1 -1
drivers/platform/surface/surface_platform_profile.c
··· 169 169 } 170 170 171 171 static const struct ssam_device_id ssam_platform_profile_match[] = { 172 - { SSAM_SDEV(TMP, 0x01, 0x00, 0x01) }, 172 + { SSAM_SDEV(TMP, SAM, 0x00, 0x01) }, 173 173 { }, 174 174 }; 175 175 MODULE_DEVICE_TABLE(ssam, ssam_platform_profile_match);
+2 -2
drivers/power/supply/surface_battery.c
··· 852 852 }; 853 853 854 854 static const struct ssam_device_id surface_battery_match[] = { 855 - { SSAM_SDEV(BAT, 0x01, 0x01, 0x00), (unsigned long)&spwr_psy_props_bat1 }, 856 - { SSAM_SDEV(BAT, 0x02, 0x01, 0x00), (unsigned long)&spwr_psy_props_bat2_sb3 }, 855 + { SSAM_SDEV(BAT, SAM, 0x01, 0x00), (unsigned long)&spwr_psy_props_bat1 }, 856 + { SSAM_SDEV(BAT, KIP, 0x01, 0x00), (unsigned long)&spwr_psy_props_bat2_sb3 }, 857 857 { }, 858 858 }; 859 859 MODULE_DEVICE_TABLE(ssam, surface_battery_match);
+1 -1
drivers/power/supply/surface_charger.c
··· 260 260 }; 261 261 262 262 static const struct ssam_device_id surface_ac_match[] = { 263 - { SSAM_SDEV(BAT, 0x01, 0x01, 0x01), (unsigned long)&spwr_psy_props_adp1 }, 263 + { SSAM_SDEV(BAT, SAM, 0x01, 0x01), (unsigned long)&spwr_psy_props_adp1 }, 264 264 { }, 265 265 }; 266 266 MODULE_DEVICE_TABLE(ssam, surface_ac_match);
+25 -25
include/linux/surface_aggregator/device.h
··· 68 68 * match_flags member of the device ID structure. Do not use them directly 69 69 * with struct ssam_device_id or struct ssam_device_uid. 70 70 */ 71 - #define SSAM_ANY_TID 0xffff 72 - #define SSAM_ANY_IID 0xffff 73 - #define SSAM_ANY_FUN 0xffff 71 + #define SSAM_SSH_TID_ANY 0xffff 72 + #define SSAM_SSH_IID_ANY 0xffff 73 + #define SSAM_SSH_FUN_ANY 0xffff 74 74 75 75 /** 76 76 * SSAM_DEVICE() - Initialize a &struct ssam_device_id with the given ··· 83 83 * 84 84 * Initializes a &struct ssam_device_id with the given parameters. See &struct 85 85 * ssam_device_uid for details regarding the parameters. The special values 86 - * %SSAM_ANY_TID, %SSAM_ANY_IID, and %SSAM_ANY_FUN can be used to specify that 86 + * %SSAM_SSH_TID_ANY, %SSAM_SSH_IID_ANY, and %SSAM_SSH_FUN_ANY can be used to specify that 87 87 * matching should ignore target ID, instance ID, and/or sub-function, 88 88 * respectively. This macro initializes the ``match_flags`` field based on the 89 89 * given parameters. 90 90 * 91 91 * Note: The parameters @d and @cat must be valid &u8 values, the parameters 92 - * @tid, @iid, and @fun must be either valid &u8 values or %SSAM_ANY_TID, 93 - * %SSAM_ANY_IID, or %SSAM_ANY_FUN, respectively. Other non-&u8 values are not 92 + * @tid, @iid, and @fun must be either valid &u8 values or %SSAM_SSH_TID_ANY, 93 + * %SSAM_SSH_IID_ANY, or %SSAM_SSH_FUN_ANY, respectively. Other non-&u8 values are not 94 94 * allowed. 95 95 */ 96 96 #define SSAM_DEVICE(d, cat, tid, iid, fun) \ 97 - .match_flags = (((tid) != SSAM_ANY_TID) ? SSAM_MATCH_TARGET : 0) \ 98 - | (((iid) != SSAM_ANY_IID) ? SSAM_MATCH_INSTANCE : 0) \ 99 - | (((fun) != SSAM_ANY_FUN) ? SSAM_MATCH_FUNCTION : 0), \ 97 + .match_flags = (((tid) != SSAM_SSH_TID_ANY) ? SSAM_MATCH_TARGET : 0) \ 98 + | (((iid) != SSAM_SSH_IID_ANY) ? SSAM_MATCH_INSTANCE : 0) \ 99 + | (((fun) != SSAM_SSH_FUN_ANY) ? SSAM_MATCH_FUNCTION : 0), \ 100 100 .domain = d, \ 101 101 .category = cat, \ 102 - .target = __builtin_choose_expr((tid) != SSAM_ANY_TID, (tid), 0), \ 103 - .instance = __builtin_choose_expr((iid) != SSAM_ANY_IID, (iid), 0), \ 104 - .function = __builtin_choose_expr((fun) != SSAM_ANY_FUN, (fun), 0) 102 + .target = __builtin_choose_expr((tid) != SSAM_SSH_TID_ANY, (tid), 0), \ 103 + .instance = __builtin_choose_expr((iid) != SSAM_SSH_IID_ANY, (iid), 0), \ 104 + .function = __builtin_choose_expr((fun) != SSAM_SSH_FUN_ANY, (fun), 0) 105 105 106 106 /** 107 107 * SSAM_VDEV() - Initialize a &struct ssam_device_id as virtual device with ··· 113 113 * 114 114 * Initializes a &struct ssam_device_id with the given parameters in the 115 115 * virtual domain. See &struct ssam_device_uid for details regarding the 116 - * parameters. The special values %SSAM_ANY_TID, %SSAM_ANY_IID, and 117 - * %SSAM_ANY_FUN can be used to specify that matching should ignore target ID, 116 + * parameters. The special values %SSAM_SSH_TID_ANY, %SSAM_SSH_IID_ANY, and 117 + * %SSAM_SSH_FUN_ANY can be used to specify that matching should ignore target ID, 118 118 * instance ID, and/or sub-function, respectively. This macro initializes the 119 119 * ``match_flags`` field based on the given parameters. 120 120 * 121 121 * Note: The parameter @cat must be a valid &u8 value, the parameters @tid, 122 - * @iid, and @fun must be either valid &u8 values or %SSAM_ANY_TID, 123 - * %SSAM_ANY_IID, or %SSAM_ANY_FUN, respectively. Other non-&u8 values are not 122 + * @iid, and @fun must be either valid &u8 values or %SSAM_SSH_TID_ANY, 123 + * %SSAM_SSH_IID_ANY, or %SSAM_SSH_FUN_ANY, respectively. Other non-&u8 values are not 124 124 * allowed. 125 125 */ 126 126 #define SSAM_VDEV(cat, tid, iid, fun) \ 127 - SSAM_DEVICE(SSAM_DOMAIN_VIRTUAL, SSAM_VIRTUAL_TC_##cat, tid, iid, fun) 127 + SSAM_DEVICE(SSAM_DOMAIN_VIRTUAL, SSAM_VIRTUAL_TC_##cat, SSAM_SSH_TID_##tid, iid, fun) 128 128 129 129 /** 130 130 * SSAM_SDEV() - Initialize a &struct ssam_device_id as physical SSH device ··· 136 136 * 137 137 * Initializes a &struct ssam_device_id with the given parameters in the SSH 138 138 * domain. See &struct ssam_device_uid for details regarding the parameters. 139 - * The special values %SSAM_ANY_TID, %SSAM_ANY_IID, and %SSAM_ANY_FUN can be 140 - * used to specify that matching should ignore target ID, instance ID, and/or 141 - * sub-function, respectively. This macro initializes the ``match_flags`` 142 - * field based on the given parameters. 139 + * The special values %SSAM_SSH_TID_ANY, %SSAM_SSH_IID_ANY, and 140 + * %SSAM_SSH_FUN_ANY can be used to specify that matching should ignore target 141 + * ID, instance ID, and/or sub-function, respectively. This macro initializes 142 + * the ``match_flags`` field based on the given parameters. 143 143 * 144 144 * Note: The parameter @cat must be a valid &u8 value, the parameters @tid, 145 - * @iid, and @fun must be either valid &u8 values or %SSAM_ANY_TID, 146 - * %SSAM_ANY_IID, or %SSAM_ANY_FUN, respectively. Other non-&u8 values are not 147 - * allowed. 145 + * @iid, and @fun must be either valid &u8 values or %SSAM_SSH_TID_ANY, 146 + * %SSAM_SSH_IID_ANY, or %SSAM_SSH_FUN_ANY, respectively. Other non-&u8 values 147 + * are not allowed. 148 148 */ 149 149 #define SSAM_SDEV(cat, tid, iid, fun) \ 150 - SSAM_DEVICE(SSAM_DOMAIN_SERIALHUB, SSAM_SSH_TC_##cat, tid, iid, fun) 150 + SSAM_DEVICE(SSAM_DOMAIN_SERIALHUB, SSAM_SSH_TC_##cat, SSAM_SSH_TID_##tid, iid, fun) 151 151 152 152 /* 153 153 * enum ssam_device_flags - Flags for SSAM client devices.