Re: [PATCH 2/3] iio: proximity: add driver for Sharp GP2AP070S proximity sensor

"Kaustabh Chakraborty" <[email protected]> Wed, 29 Jul 2026 23:23:45 +0530
Newsgroups org.kernel.vger.linux-samsung-soc,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-iio,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
On 2026-07-23 23:44 +02:00, Joshua Crofts wrote:
> On Thu, 23 Jul 2026 22:58:34 +0530
> Kaustabh Chakraborty <[email protected]> wrote:
>
>> The GP2AP070S is a proximity sensor designed and manufactured by Sharp
>> Corporation. This sensor is used in mobile devices, including, but not
>> limited to - the Samsung Galaxy J6.
>>=20
>> The driver has been adopted from Samsung's downstream kernel
>> implementation [1]. Due to the lack of public documentation about the
>> schematics of this device. The downstream driver acts as the secondary
>> source of information. Driver clarity has also been improved with the
>> help of the GP2AP* drivers in iio/light.
>>=20
>> Link: https://github.com/Exynos7870/android_kernel_samsung_universal7870=
/blob/lineage-16.0/drivers/sensors/gp2ap070s.c [1]
>> Signed-off-by: Kaustabh Chakraborty <[email protected]>
>> ---

[...]

>> =20
>> +config GP2AP070S
>> +	tristate "Sharp GP2AP070S proximity sensor"
>> +	select REGMAP_I2C
>> +	depends on I2C
>
> A very small nit (and probably a personal opinion), but "depends on" shou=
ld
> go before "select"

I happen to agree with this one. However most (but not all) entries
follow select -> depends on though. In any case I'll change it.

>> +// SPDX-License-Identifier: GPL-2.0-only
>> +/*
>> + * IIO driver for Sharp GP2AP070S proximity sensor.
>> + *
>> + * Copyright (C) 2026 Kaustabh Chakraborty <[email protected]>
>> + */
>> +
>> +#include <linux/i2c.h>
>> +#include <linux/iio/events.h>
>> +#include <linux/iio/iio.h>
>> +#include <linux/iio/types.h>
>
> Please add iio/* includes after the generic linux/* headers. Ensure
> that there is a blank line between the two groups.
>
> Additionally, you're also missing <asm/byteorder.h>, array_size.h, err.h,
> types.h and delay.h.

By the way, is there any tooling to satisfactorily point out the
shortfalls with includes? Or is it just intuition and experience?

>> +	ret =3D devm_request_threaded_irq(dev, client->irq, NULL,
>> +					gp2ap070s_irq_handler, IRQF_ONESHOT,
>> +					"gp2ap070s-irq", indio_dev);
>> +	if (ret)
>> +		return dev_err_probe(dev, ret, "Failed to request IRQ");
>
> Just return ret instead, dev_err_probe() is called automatically on failu=
re.

Are you sure about that? I happen to call dev_err_probe() on all other
places and other drivers (as of late) as well (other than -ENOMEM).