From nobody Thu Dec 18 18:39:36 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9EDFFEEB57D for ; Sun, 10 Sep 2023 15:22:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346739AbjIJPWT (ORCPT ); Sun, 10 Sep 2023 11:22:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58134 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231391AbjIJPWS (ORCPT ); Sun, 10 Sep 2023 11:22:18 -0400 Received: from relmlie5.idc.renesas.com (relmlor1.renesas.com [210.160.252.171]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 7392B1BD; Sun, 10 Sep 2023 08:22:13 -0700 (PDT) X-IronPort-AV: E=Sophos;i="6.02,241,1688396400"; d="scan'208";a="175582258" Received: from unknown (HELO relmlir6.idc.renesas.com) ([10.200.68.152]) by relmlie5.idc.renesas.com with ESMTP; 11 Sep 2023 00:22:07 +0900 Received: from localhost.localdomain (unknown [10.226.92.9]) by relmlir6.idc.renesas.com (Postfix) with ESMTP id 70EF54006C6A; Mon, 11 Sep 2023 00:22:05 +0900 (JST) From: Biju Das To: Mauro Carvalho Chehab Cc: Biju Das , Lars-Peter Clausen , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Biju Das , Andy Shevchenko Subject: [PATCH 1/2] media: i2c: adv7180: Extend match support for OF tables Date: Sun, 10 Sep 2023 16:21:59 +0100 Message-Id: <20230910152200.56086-2-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230910152200.56086-1-biju.das.jz@bp.renesas.com> References: <20230910152200.56086-1-biju.das.jz@bp.renesas.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The driver has an OF match table, still, it uses an ID lookup table for retrieving match data. Currently, the driver is working on the assumption that an I2C device registered via OF will always match a legacy I2C device ID. The correct approach is to have an OF device ID table using i2c_get_match_data() if the devices are registered via OF/ID. Unify the OF/ID table by using struct adv7180_chip_info as match data for both these tables and replace the ID lookup table for the match data by i2c_get_match_data(). While at it, remove the trailing comma in the terminator entry for the OF table making code robust against (theoretical) misrebases or other similar things where the new entry goes _after_ the termination without the compiler noticing. Signed-off-by: Biju Das Reviewed-by: Jacopo Mondi --- drivers/media/i2c/adv7180.c | 60 ++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 31 deletions(-) diff --git a/drivers/media/i2c/adv7180.c b/drivers/media/i2c/adv7180.c index 99ba925e8ec8..fc4f29e74e05 100644 --- a/drivers/media/i2c/adv7180.c +++ b/drivers/media/i2c/adv7180.c @@ -1395,7 +1395,6 @@ static int init_device(struct adv7180_state *state) =20 static int adv7180_probe(struct i2c_client *client) { - const struct i2c_device_id *id =3D i2c_client_get_device_id(client); struct device_node *np =3D client->dev.of_node; struct adv7180_state *state; struct v4l2_subdev *sd; @@ -1411,7 +1410,7 @@ static int adv7180_probe(struct i2c_client *client) =20 state->client =3D client; state->field =3D V4L2_FIELD_ALTERNATE; - state->chip_info =3D (struct adv7180_chip_info *)id->driver_data; + state->chip_info =3D i2c_get_match_data(client); =20 state->pwdn_gpio =3D devm_gpiod_get_optional(&client->dev, "powerdown", GPIOD_OUT_HIGH); @@ -1536,22 +1535,6 @@ static void adv7180_remove(struct i2c_client *client) mutex_destroy(&state->mutex); } =20 -static const struct i2c_device_id adv7180_id[] =3D { - { "adv7180", (kernel_ulong_t)&adv7180_info }, - { "adv7180cp", (kernel_ulong_t)&adv7180_info }, - { "adv7180st", (kernel_ulong_t)&adv7180_info }, - { "adv7182", (kernel_ulong_t)&adv7182_info }, - { "adv7280", (kernel_ulong_t)&adv7280_info }, - { "adv7280-m", (kernel_ulong_t)&adv7280_m_info }, - { "adv7281", (kernel_ulong_t)&adv7281_info }, - { "adv7281-m", (kernel_ulong_t)&adv7281_m_info }, - { "adv7281-ma", (kernel_ulong_t)&adv7281_ma_info }, - { "adv7282", (kernel_ulong_t)&adv7282_info }, - { "adv7282-m", (kernel_ulong_t)&adv7282_m_info }, - {}, -}; -MODULE_DEVICE_TABLE(i2c, adv7180_id); - #ifdef CONFIG_PM_SLEEP static int adv7180_suspend(struct device *dev) { @@ -1585,22 +1568,37 @@ static SIMPLE_DEV_PM_OPS(adv7180_pm_ops, adv7180_su= spend, adv7180_resume); #define ADV7180_PM_OPS NULL #endif =20 +static const struct i2c_device_id adv7180_id[] =3D { + { "adv7180", (kernel_ulong_t)&adv7180_info }, + { "adv7180cp", (kernel_ulong_t)&adv7180_info }, + { "adv7180st", (kernel_ulong_t)&adv7180_info }, + { "adv7182", (kernel_ulong_t)&adv7182_info }, + { "adv7280", (kernel_ulong_t)&adv7280_info }, + { "adv7280-m", (kernel_ulong_t)&adv7280_m_info }, + { "adv7281", (kernel_ulong_t)&adv7281_info }, + { "adv7281-m", (kernel_ulong_t)&adv7281_m_info }, + { "adv7281-ma", (kernel_ulong_t)&adv7281_ma_info }, + { "adv7282", (kernel_ulong_t)&adv7282_info }, + { "adv7282-m", (kernel_ulong_t)&adv7282_m_info }, + {} +}; +MODULE_DEVICE_TABLE(i2c, adv7180_id); + #ifdef CONFIG_OF static const struct of_device_id adv7180_of_id[] =3D { - { .compatible =3D "adi,adv7180", }, - { .compatible =3D "adi,adv7180cp", }, - { .compatible =3D "adi,adv7180st", }, - { .compatible =3D "adi,adv7182", }, - { .compatible =3D "adi,adv7280", }, - { .compatible =3D "adi,adv7280-m", }, - { .compatible =3D "adi,adv7281", }, - { .compatible =3D "adi,adv7281-m", }, - { .compatible =3D "adi,adv7281-ma", }, - { .compatible =3D "adi,adv7282", }, - { .compatible =3D "adi,adv7282-m", }, - { }, + { .compatible =3D "adi,adv7180", &adv7180_info }, + { .compatible =3D "adi,adv7180cp", &adv7180_info }, + { .compatible =3D "adi,adv7180st", &adv7180_info }, + { .compatible =3D "adi,adv7182", &adv7182_info }, + { .compatible =3D "adi,adv7280", &adv7280_info }, + { .compatible =3D "adi,adv7280-m", &adv7280_m_info }, + { .compatible =3D "adi,adv7281", &adv7281_info }, + { .compatible =3D "adi,adv7281-m", &adv7281_m_info }, + { .compatible =3D "adi,adv7281-ma", &adv7281_ma_info }, + { .compatible =3D "adi,adv7282", &adv7282_info }, + { .compatible =3D "adi,adv7282-m", &adv7282_m_info }, + {} }; - MODULE_DEVICE_TABLE(of, adv7180_of_id); #endif =20 --=20 2.25.1 From nobody Thu Dec 18 18:39:36 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id AE1E8EEB580 for ; Sun, 10 Sep 2023 15:22:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346750AbjIJPWW (ORCPT ); Sun, 10 Sep 2023 11:22:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58150 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346740AbjIJPWT (ORCPT ); Sun, 10 Sep 2023 11:22:19 -0400 Received: from relmlie5.idc.renesas.com (relmlor1.renesas.com [210.160.252.171]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id F38361BD; Sun, 10 Sep 2023 08:22:14 -0700 (PDT) X-IronPort-AV: E=Sophos;i="6.02,241,1688396400"; d="scan'208";a="175582261" Received: from unknown (HELO relmlir6.idc.renesas.com) ([10.200.68.152]) by relmlie5.idc.renesas.com with ESMTP; 11 Sep 2023 00:22:10 +0900 Received: from localhost.localdomain (unknown [10.226.92.9]) by relmlir6.idc.renesas.com (Postfix) with ESMTP id 3EBFA4006C6C; Mon, 11 Sep 2023 00:22:07 +0900 (JST) From: Biju Das To: Mauro Carvalho Chehab Cc: Biju Das , Lars-Peter Clausen , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Biju Das , Andy Shevchenko Subject: [PATCH 2/2] media: i2c: adv7180: Drop CONFIG_OF ifdeffery Date: Sun, 10 Sep 2023 16:22:00 +0100 Message-Id: <20230910152200.56086-3-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230910152200.56086-1-biju.das.jz@bp.renesas.com> References: <20230910152200.56086-1-biju.das.jz@bp.renesas.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Drop of_match_ptr() from adv7180_driver and get rid of ugly CONFIG_OF if check. This slightly increases the size of adv7180_driver on non-OF system and shouldn't be an issue. Add mod_devicetable.h include. It also allows, in case if needed, to enumerate this device via ACPI with PRP0001 magic. Signed-off-by: Biju Das Reviewed-by: Jacopo Mondi --- drivers/media/i2c/adv7180.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/media/i2c/adv7180.c b/drivers/media/i2c/adv7180.c index fc4f29e74e05..54134473186b 100644 --- a/drivers/media/i2c/adv7180.c +++ b/drivers/media/i2c/adv7180.c @@ -5,6 +5,7 @@ * Copyright (C) 2013 Cogent Embedded, Inc. * Copyright (C) 2013 Renesas Solutions Corp. */ +#include #include #include #include @@ -1584,7 +1585,6 @@ static const struct i2c_device_id adv7180_id[] =3D { }; MODULE_DEVICE_TABLE(i2c, adv7180_id); =20 -#ifdef CONFIG_OF static const struct of_device_id adv7180_of_id[] =3D { { .compatible =3D "adi,adv7180", &adv7180_info }, { .compatible =3D "adi,adv7180cp", &adv7180_info }, @@ -1600,13 +1600,12 @@ static const struct of_device_id adv7180_of_id[] = =3D { {} }; MODULE_DEVICE_TABLE(of, adv7180_of_id); -#endif =20 static struct i2c_driver adv7180_driver =3D { .driver =3D { .name =3D KBUILD_MODNAME, .pm =3D ADV7180_PM_OPS, - .of_match_table =3D of_match_ptr(adv7180_of_id), + .of_match_table =3D adv7180_of_id, }, .probe =3D adv7180_probe, .remove =3D adv7180_remove, --=20 2.25.1