Re: [PATCH v1 1/2] platform: x86-android-tablets: lenovo: Add Yoga Book haptics entries
From: Yauhen Kharuzhy
Date: Mon Feb 23 2026 - 18:44:42 EST
On Mon, Feb 23, 2026 at 04:26:25PM +0200, Ilpo Järvinen wrote:
> On Wed, 18 Feb 2026, Yauhen Kharuzhy wrote:
>
> > Add drv2604l i2c_board_info for drv2604l haptics drivers present in
> > Lenovo Yoga Book YB1-X90 and YB1-X91. Set properties required for device
> > initialization and self-calibration.
> >
> > Signed-off-by: Yauhen Kharuzhy <jekhor@xxxxxxxxx>
> > ---
> > .../platform/x86/x86-android-tablets/lenovo.c | 96 +++++++++++++++++++
> > 1 file changed, 96 insertions(+)
> >
> >
> > +#define YB1_X91_DRV2604L_0_DEVICE "i2c-DRV2604:00"
> > +#define YB1_X91_DRV2604L_1_DEVICE "i2c-DRV2604:01"
> > +
> > +static int __init lenovo_yb1_x91_init(struct device *dev)
> > +{
> > + struct device *drv2604l_0_dev = NULL, *drv2604l_1_dev = NULL;
> > + int ret = 0;
> > +
> > + drv2604l_0_dev = bus_find_device_by_name(&i2c_bus_type, NULL,
> > + YB1_X91_DRV2604L_0_DEVICE);
> > + if (!drv2604l_0_dev) {
> > + pr_err("error: cannot find %s device\n",
> > + YB1_X91_DRV2604L_0_DEVICE);
> > + return -ENODEV;
> > + }
> > +
> > + ret = device_create_managed_software_node(drv2604l_0_dev,
> > + lenovo_yb1_x9x_drv2604l_0_props, NULL);
> > + if (ret) {
> > + pr_err("error: cannot create software node for %s: %d\n",
> > + YB1_X91_DRV2604L_0_DEVICE, ret);
> > + goto put_drv2604l_0;
> > + }
> > +
> > + drv2604l_1_dev = bus_find_device_by_name(&i2c_bus_type, NULL,
> > + YB1_X91_DRV2604L_1_DEVICE);
> > + if (!drv2604l_1_dev) {
> > + pr_err("error: cannot find %s device\n",
> > + YB1_X91_DRV2604L_1_DEVICE);
> > + ret = -ENODEV;
> > + goto put_drv2604l_0;
> > + }
> > +
> > + ret = device_create_managed_software_node(drv2604l_1_dev,
> > + lenovo_yb1_x9x_drv2604l_1_props, NULL);
> > + if (ret) {
> > + pr_err("error: cannot create software node for %s\n",
> > + YB1_X91_DRV2604L_1_DEVICE);
> > + ret = -EINVAL;
> > + goto put_drv2604l_1;
> > + }
> > +
> > +put_drv2604l_0:
> > + put_device(drv2604l_0_dev);
> > +put_drv2604l_1:
> > + put_device(drv2604l_1_dev);
>
> This looks like a case that would benefit from using cleanup.h
> (__free(put_device)).
>
> Remember to declare variables that use __free() mid-function as per the
> usage pattern in documented cleanup.h.
>
> Please also make sure you have all necessary includes for using it (not
> through some obscure indirect include path).
A good point, thanks!
--
Yauhen Kharuzhy