On Sun, Nov 19, 2017 at 11:11 AM, Marek Vasut <marex@xxxxxxx> wrote: > On 11/19/2017 06:38 PM, Gabriele Mazzotta wrote: >> 2017-11-19 18:03 GMT+01:00 Jonathan Cameron <jic23@xxxxxxxxxx>: >>> On Wed, 15 Nov 2017 20:27:54 -0700 >>> Kiernan Hager <kah.listaddress@xxxxxxxxx> wrote: >>> >>>> This makes acpi-als properly enable the light sensor on the Zenbook UX430UQ. I don't know if the checking that I do to make sure that the ACPI method exists is sufficient or if it should disable the sensor when the module is unloaded, so input is appreciated on those matters. >>> >>> Please wrap descriptions to around 72 characters (leaves room for indentation >>> in the email thread :) >>> >>> This seems very much like a board specific hack. I've cc'd people >>> who have worked on the driver recently and the acpi list. >> >> This is indeed board specific. I know many other laptops of the >> Zenbook line need something similar and if you look at >> drivers/platform/x86/asus-wmi.c or any other asus-* driver you'll >> find several quirks to enable various features. > > Maybe that's where it should go . EC0 in the ACPI path seems like > Embedded Controller to me . > >> Kiernan, check commit aca234f6378864d85514be558746c0ea6eabfa8e >> ("asus-wmi: provide access to ALS control") in particular. >> >>>> >>>> Signed-off-by: Kiernan Hager <kah.listaddress@xxxxxxxxx> >>>> --- >>>> drivers/iio/light/acpi-als.c | 16 ++++++++++++++++ >>>> 1 file changed, 16 insertions(+) >>>> >>>> diff --git a/drivers/iio/light/acpi-als.c b/drivers/iio/light/acpi-als.c >>>> index c35e2f8df339..8fd66166f19f 100644 >>>> --- a/drivers/iio/light/acpi-als.c >>>> +++ b/drivers/iio/light/acpi-als.c >>>> @@ -179,6 +179,10 @@ static int acpi_als_add(struct acpi_device *device) >>>> struct acpi_als *als; >>>> struct iio_dev *indio_dev; >>>> struct iio_buffer *buffer; >>>> + unsigned long long temp_val; >>>> + acpi_status status; >>>> + struct acpi_object_list arg_list; >>>> + union acpi_object arg; >>>> >>>> indio_dev = devm_iio_device_alloc(&device->dev, sizeof(*als)); >>>> if (!indio_dev) >>>> @@ -203,6 +207,18 @@ static int acpi_als_add(struct acpi_device *device) >>>> >>>> iio_device_attach_buffer(indio_dev, buffer); >>>> >>>> + arg_list.count = 1; >>>> + arg_list.pointer = &arg; >>>> + arg.type = ACPI_TYPE_INTEGER; >>>> + arg.integer.value = 1; >>>> + >>>> + if (acpi_has_method(als->device->handle, "\\_SB.PCI0.LPCB.EC0.ALSC")) { >>> So this is poking something on >>> PCI bus 0 >>> LPC bus B >>> Somethingbus 0 >>> Ambient light controller. >>> >>> I assume there is a better way of establishing this needs to be set? >>> >>>> + status = acpi_evaluate_integer(als->device->handle, >>>> + "\\_SB.PCI0.LPCB.EC0.ALSC", >>>> + &arg_list, >>>> + &temp_val); >>>> + } >>>> + >>>> return devm_iio_device_register(&device->dev, indio_dev); >>>> } >>>> >>> > > > -- > Best regards, > Marek Vasut That sounds like a good idea. I'll have a look at that file and possibly apply my patch to that instead. Kiernan -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html