Message ID | 20190924193739.86133-4-andriy.shevchenko@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ACPI / utils: add new helper for HID/UID match | expand |
On Tue, Sep 24, 2019 at 10:37:36PM +0300, Andy Shevchenko wrote: > There are users outside of ACPI realm which reimplementing the comparator > function to check if the given device matches to given HID and UID. > > For better utilization, introduce a helper for everyone to use. > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > > --- > drivers/acpi/utils.c | 25 +++++++++++++++++++++++++ > include/acpi/acpi_bus.h | 2 ++ > include/linux/acpi.h | 6 ++++++ > 3 files changed, 33 insertions(+) > > diff --git a/drivers/acpi/utils.c b/drivers/acpi/utils.c > index dbd1c4cfd7d1..804ac0df58ec 100644 > --- a/drivers/acpi/utils.c > +++ b/drivers/acpi/utils.c > @@ -701,6 +701,31 @@ bool acpi_check_dsm(acpi_handle handle, const guid_t *guid, u64 rev, u64 funcs) > } > EXPORT_SYMBOL(acpi_check_dsm); > > +/** > + * acpi_dev_hid_uid_match - Match device by supplied HID and UID > + * @adev: ACPI device to match. > + * @hid2: Hardware ID of the device. > + * @uid2: Unique ID of the device, pass NULL to not check _UID. > + * > + * Matches HID and UID in @adev with given @hid2 and @uid2. > + * Returns true if matches. > + */ > +bool acpi_dev_hid_uid_match(struct acpi_device *adev, > + const char *hid2, const char *uid2) > +{ > + const char *hid1 = acpi_device_hid(adev); > + const char *uid1 = acpi_device_uid(adev); > + > + if (strcmp(hid1, hid2)) > + return false; > + > + if (!uid2) > + return true; > + > + return uid1 && !strcmp(uid1, uid2); > +} > +EXPORT_SYMBOL(acpi_dev_hid_uid_match); Should this be _GPL? In any case looks good, Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
On Tue, Oct 01, 2019 at 12:38:54PM +0300, Mika Westerberg wrote: > On Tue, Sep 24, 2019 at 10:37:36PM +0300, Andy Shevchenko wrote: > > There are users outside of ACPI realm which reimplementing the comparator > > function to check if the given device matches to given HID and UID. > > > > For better utilization, introduce a helper for everyone to use. > > +EXPORT_SYMBOL(acpi_dev_hid_uid_match); > > Should this be _GPL? No, the rest of the acpi_dev_*() are marked without it. > In any case looks good, > > Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com> Thanks!
diff --git a/drivers/acpi/utils.c b/drivers/acpi/utils.c index dbd1c4cfd7d1..804ac0df58ec 100644 --- a/drivers/acpi/utils.c +++ b/drivers/acpi/utils.c @@ -701,6 +701,31 @@ bool acpi_check_dsm(acpi_handle handle, const guid_t *guid, u64 rev, u64 funcs) } EXPORT_SYMBOL(acpi_check_dsm); +/** + * acpi_dev_hid_uid_match - Match device by supplied HID and UID + * @adev: ACPI device to match. + * @hid2: Hardware ID of the device. + * @uid2: Unique ID of the device, pass NULL to not check _UID. + * + * Matches HID and UID in @adev with given @hid2 and @uid2. + * Returns true if matches. + */ +bool acpi_dev_hid_uid_match(struct acpi_device *adev, + const char *hid2, const char *uid2) +{ + const char *hid1 = acpi_device_hid(adev); + const char *uid1 = acpi_device_uid(adev); + + if (strcmp(hid1, hid2)) + return false; + + if (!uid2) + return true; + + return uid1 && !strcmp(uid1, uid2); +} +EXPORT_SYMBOL(acpi_dev_hid_uid_match); + /** * acpi_dev_found - Detect presence of a given ACPI device in the namespace. * @hid: Hardware ID of the device. diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h index 3f6fddeb7519..0c23fd0548d1 100644 --- a/include/acpi/acpi_bus.h +++ b/include/acpi/acpi_bus.h @@ -680,6 +680,8 @@ static inline bool acpi_device_can_poweroff(struct acpi_device *adev) adev->power.states[ACPI_STATE_D3_HOT].flags.explicit_set); } +bool acpi_dev_hid_uid_match(struct acpi_device *adev, const char *hid2, const char *uid2); + struct acpi_device * acpi_dev_get_first_match_dev(const char *hid, const char *uid, s64 hrv); diff --git a/include/linux/acpi.h b/include/linux/acpi.h index 9426b9aaed86..34778e4757fd 100644 --- a/include/linux/acpi.h +++ b/include/linux/acpi.h @@ -672,6 +672,12 @@ static inline bool acpi_dev_present(const char *hid, const char *uid, s64 hrv) return false; } +static inline bool +acpi_dev_hid_uid_match(struct acpi_device *adev, const char *hid2, const char *uid2) +{ + return false; +} + static inline struct acpi_device * acpi_dev_get_first_match_dev(const char *hid, const char *uid, s64 hrv) {
There are users outside of ACPI realm which reimplementing the comparator function to check if the given device matches to given HID and UID. For better utilization, introduce a helper for everyone to use. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> --- drivers/acpi/utils.c | 25 +++++++++++++++++++++++++ include/acpi/acpi_bus.h | 2 ++ include/linux/acpi.h | 6 ++++++ 3 files changed, 33 insertions(+)