On Mon, Sep 09, 2024 at 02:11:50PM +0200, Hans de Goede wrote:
On 9/9/24 2:06 PM, Andy Shevchenko wrote:
On Mon, Sep 09, 2024 at 01:32:25PM +0200, Hans de Goede wrote:
...
+static umode_t pcc_sysfs_is_visible(struct kobject *kobj, struct attribute *attr, int idx) +{
- struct device *dev = kobj_to_dev(kobj);
- struct acpi_device *acpi = to_acpi_device(dev);
- struct pcc_acpi *pcc = acpi_driver_data(acpi);
Isn't it the same as dev_get_drvdata()?
No I also thought so and I checked. It is not the same, struct acpi_device has its own driver_data member, which this gets.
Ouch, you are right! It's a bit confusing :-(
- if (attr == &dev_attr_mute.attr)
return (pcc->num_sifr > SINF_MUTE) ? attr->mode : 0;
- if (attr == &dev_attr_eco_mode.attr)
return (pcc->num_sifr > SINF_ECO_MODE) ? attr->mode : 0;
- if (attr == &dev_attr_current_brightness.attr)
return (pcc->num_sifr > SINF_CUR_BRIGHT) ? attr->mode : 0;
- return attr->mode;
+}
...
- /*
* pcc->sinf is expected to at least have the AC+DC brightness entries.
* Accesses to higher SINF entries are checked against num_sifr.
*/
- if (num_sifr <= SINF_DC_CUR_BRIGHT || num_sifr > 255) {
pr_err("num_sifr %d out of range %d - 255\n", num_sifr, SINF_DC_CUR_BRIGHT + 1);
acpi_handle_err() ?
The driver is using pr_err() already in 18 other places, so IMHO it is better to be consistent and also use it here.
Fair enough, so can be material for a followup in the future.