From patchwork Mon Aug 7 17:25:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Biju Das X-Patchwork-Id: 13344660 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 5AE7DC41513 for ; Mon, 7 Aug 2023 17:26:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230184AbjHGRZ6 (ORCPT ); Mon, 7 Aug 2023 13:25:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59874 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231671AbjHGRZ6 (ORCPT ); Mon, 7 Aug 2023 13:25:58 -0400 Received: from relmlie5.idc.renesas.com (relmlor1.renesas.com [210.160.252.171]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 47BD510C1; Mon, 7 Aug 2023 10:25:55 -0700 (PDT) X-IronPort-AV: E=Sophos;i="6.01,262,1684767600"; d="scan'208";a="172211156" Received: from unknown (HELO relmlir6.idc.renesas.com) ([10.200.68.152]) by relmlie5.idc.renesas.com with ESMTP; 08 Aug 2023 02:25:54 +0900 Received: from localhost.localdomain (unknown [10.226.92.227]) by relmlir6.idc.renesas.com (Postfix) with ESMTP id 87769403C48B; Tue, 8 Aug 2023 02:25:50 +0900 (JST) From: Biju Das To: Jonathan Cameron Cc: Biju Das , Peter Rosin , Lars-Peter Clausen , Andy Shevchenko , Andi Shyti , Jakob Hauser , Linus Walleij , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , linux-iio@vger.kernel.org, Geert Uytterhoeven , linux-renesas-soc@vger.kernel.org Subject: [PATCH 1/2] iio: magnetometer: yamaha-yas530: Use i2c_get_match_data() Date: Mon, 7 Aug 2023 18:25:47 +0100 Message-Id: <20230807172548.258247-1-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org Simplify the probe() by replacing device_get_match_data() with i2c_get_match_data(). While at it, drop unnecessary enum chip_ids by splitting the array yas5xx_chip_info_tbl[] as individual variables. Signed-off-by: Biju Das --- drivers/iio/magnetometer/yamaha-yas530.c | 150 +++++++++++------------ 1 file changed, 71 insertions(+), 79 deletions(-) diff --git a/drivers/iio/magnetometer/yamaha-yas530.c b/drivers/iio/magnetometer/yamaha-yas530.c index c5e485bfc6fc..0ff3d81e24b4 100644 --- a/drivers/iio/magnetometer/yamaha-yas530.c +++ b/drivers/iio/magnetometer/yamaha-yas530.c @@ -133,13 +133,6 @@ /* Turn off device regulators etc after 5 seconds of inactivity */ #define YAS5XX_AUTOSUSPEND_DELAY_MS 5000 -enum chip_ids { - yas530, - yas532, - yas533, - yas537, -}; - static const int yas530_volatile_reg[] = { YAS530_ACTUATE_INIT_COIL, YAS530_MEASURE, @@ -1321,67 +1314,68 @@ static int yas537_power_on(struct yas5xx *yas5xx) return 0; } -static const struct yas5xx_chip_info yas5xx_chip_info_tbl[] = { - [yas530] = { - .devid = YAS530_DEVICE_ID, - .product_name = "YAS530 MS-3E", - .version_names = { "A", "B" }, - .volatile_reg = yas530_volatile_reg, - .volatile_reg_qty = ARRAY_SIZE(yas530_volatile_reg), - .scaling_val2 = 100000000, /* picotesla to Gauss */ - .t_ref = 182, /* counts */ - .min_temp_x10 = -620, /* 1/10:s degrees Celsius */ - .get_measure = yas530_get_measure, - .get_calibration_data = yas530_get_calibration_data, - .dump_calibration = yas530_dump_calibration, - .measure_offsets = yas530_measure_offsets, - .power_on = yas530_power_on, - }, - [yas532] = { - .devid = YAS532_DEVICE_ID, - .product_name = "YAS532 MS-3R", - .version_names = { "AB", "AC" }, - .volatile_reg = yas530_volatile_reg, - .volatile_reg_qty = ARRAY_SIZE(yas530_volatile_reg), - .scaling_val2 = 100000, /* nanotesla to Gauss */ - .t_ref = 390, /* counts */ - .min_temp_x10 = -500, /* 1/10:s degrees Celsius */ - .get_measure = yas530_get_measure, - .get_calibration_data = yas532_get_calibration_data, - .dump_calibration = yas530_dump_calibration, - .measure_offsets = yas530_measure_offsets, - .power_on = yas530_power_on, - }, - [yas533] = { - .devid = YAS532_DEVICE_ID, - .product_name = "YAS533 MS-3F", - .version_names = { "AB", "AC" }, - .volatile_reg = yas530_volatile_reg, - .volatile_reg_qty = ARRAY_SIZE(yas530_volatile_reg), - .scaling_val2 = 100000, /* nanotesla to Gauss */ - .t_ref = 390, /* counts */ - .min_temp_x10 = -500, /* 1/10:s degrees Celsius */ - .get_measure = yas530_get_measure, - .get_calibration_data = yas532_get_calibration_data, - .dump_calibration = yas530_dump_calibration, - .measure_offsets = yas530_measure_offsets, - .power_on = yas530_power_on, - }, - [yas537] = { - .devid = YAS537_DEVICE_ID, - .product_name = "YAS537 MS-3T", - .version_names = { "v0", "v1" }, /* version naming unknown */ - .volatile_reg = yas537_volatile_reg, - .volatile_reg_qty = ARRAY_SIZE(yas537_volatile_reg), - .scaling_val2 = 100000, /* nanotesla to Gauss */ - .t_ref = 8120, /* counts */ - .min_temp_x10 = -3860, /* 1/10:s degrees Celsius */ - .get_measure = yas537_get_measure, - .get_calibration_data = yas537_get_calibration_data, - .dump_calibration = yas537_dump_calibration, - /* .measure_offets is not needed for yas537 */ - .power_on = yas537_power_on, - }, +static const struct yas5xx_chip_info yas530_chip_info = { + .devid = YAS530_DEVICE_ID, + .product_name = "YAS530 MS-3E", + .version_names = { "A", "B" }, + .volatile_reg = yas530_volatile_reg, + .volatile_reg_qty = ARRAY_SIZE(yas530_volatile_reg), + .scaling_val2 = 100000000, /* picotesla to Gauss */ + .t_ref = 182, /* counts */ + .min_temp_x10 = -620, /* 1/10:s degrees Celsius */ + .get_measure = yas530_get_measure, + .get_calibration_data = yas530_get_calibration_data, + .dump_calibration = yas530_dump_calibration, + .measure_offsets = yas530_measure_offsets, + .power_on = yas530_power_on, +}; + +static const struct yas5xx_chip_info yas532_chip_info = { + .devid = YAS532_DEVICE_ID, + .product_name = "YAS532 MS-3R", + .version_names = { "AB", "AC" }, + .volatile_reg = yas530_volatile_reg, + .volatile_reg_qty = ARRAY_SIZE(yas530_volatile_reg), + .scaling_val2 = 100000, /* nanotesla to Gauss */ + .t_ref = 390, /* counts */ + .min_temp_x10 = -500, /* 1/10:s degrees Celsius */ + .get_measure = yas530_get_measure, + .get_calibration_data = yas532_get_calibration_data, + .dump_calibration = yas530_dump_calibration, + .measure_offsets = yas530_measure_offsets, + .power_on = yas530_power_on, +}; + +static const struct yas5xx_chip_info yas533_chip_info = { + .devid = YAS532_DEVICE_ID, + .product_name = "YAS533 MS-3F", + .version_names = { "AB", "AC" }, + .volatile_reg = yas530_volatile_reg, + .volatile_reg_qty = ARRAY_SIZE(yas530_volatile_reg), + .scaling_val2 = 100000, /* nanotesla to Gauss */ + .t_ref = 390, /* counts */ + .min_temp_x10 = -500, /* 1/10:s degrees Celsius */ + .get_measure = yas530_get_measure, + .get_calibration_data = yas532_get_calibration_data, + .dump_calibration = yas530_dump_calibration, + .measure_offsets = yas530_measure_offsets, + .power_on = yas530_power_on, +}; + +static const struct yas5xx_chip_info yas537_chip_info = { + .devid = YAS537_DEVICE_ID, + .product_name = "YAS537 MS-3T", + .version_names = { "v0", "v1" }, /* version naming unknown */ + .volatile_reg = yas537_volatile_reg, + .volatile_reg_qty = ARRAY_SIZE(yas537_volatile_reg), + .scaling_val2 = 100000, /* nanotesla to Gauss */ + .t_ref = 8120, /* counts */ + .min_temp_x10 = -3860, /* 1/10:s degrees Celsius */ + .get_measure = yas537_get_measure, + .get_calibration_data = yas537_get_calibration_data, + .dump_calibration = yas537_dump_calibration, + /* .measure_offets is not needed for yas537 */ + .power_on = yas537_power_on, }; static int yas5xx_probe(struct i2c_client *i2c) @@ -1434,9 +1428,7 @@ static int yas5xx_probe(struct i2c_client *i2c) goto assert_reset; } - ci = device_get_match_data(dev); - if (!ci) - ci = (const struct yas5xx_chip_info *)id->driver_data; + ci = i2c_get_match_data(i2c); yas5xx->chip_info = ci; ret = regmap_read(yas5xx->map, YAS5XX_DEVICE_ID, &id_check); @@ -1582,19 +1574,19 @@ static DEFINE_RUNTIME_DEV_PM_OPS(yas5xx_dev_pm_ops, yas5xx_runtime_suspend, yas5xx_runtime_resume, NULL); static const struct i2c_device_id yas5xx_id[] = { - {"yas530", (kernel_ulong_t)&yas5xx_chip_info_tbl[yas530] }, - {"yas532", (kernel_ulong_t)&yas5xx_chip_info_tbl[yas532] }, - {"yas533", (kernel_ulong_t)&yas5xx_chip_info_tbl[yas533] }, - {"yas537", (kernel_ulong_t)&yas5xx_chip_info_tbl[yas537] }, + {"yas530", (kernel_ulong_t)&yas530_chip_info }, + {"yas532", (kernel_ulong_t)&yas532_chip_info }, + {"yas533", (kernel_ulong_t)&yas533_chip_info }, + {"yas537", (kernel_ulong_t)&yas537_chip_info }, {} }; MODULE_DEVICE_TABLE(i2c, yas5xx_id); static const struct of_device_id yas5xx_of_match[] = { - { .compatible = "yamaha,yas530", &yas5xx_chip_info_tbl[yas530] }, - { .compatible = "yamaha,yas532", &yas5xx_chip_info_tbl[yas532] }, - { .compatible = "yamaha,yas533", &yas5xx_chip_info_tbl[yas533] }, - { .compatible = "yamaha,yas537", &yas5xx_chip_info_tbl[yas537] }, + { .compatible = "yamaha,yas530", &yas530_chip_info }, + { .compatible = "yamaha,yas532", &yas532_chip_info }, + { .compatible = "yamaha,yas533", &yas533_chip_info }, + { .compatible = "yamaha,yas537", &yas537_chip_info }, {} }; MODULE_DEVICE_TABLE(of, yas5xx_of_match); From patchwork Mon Aug 7 17:25:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Biju Das X-Patchwork-Id: 13344661 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 6F214C04A6A for ; Mon, 7 Aug 2023 17:26:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231194AbjHGR0C (ORCPT ); Mon, 7 Aug 2023 13:26:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59906 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231462AbjHGR0B (ORCPT ); Mon, 7 Aug 2023 13:26:01 -0400 Received: from relmlie6.idc.renesas.com (relmlor2.renesas.com [210.160.252.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id DAA759F; Mon, 7 Aug 2023 10:25:59 -0700 (PDT) X-IronPort-AV: E=Sophos;i="6.01,262,1684767600"; d="scan'208";a="175893230" Received: from unknown (HELO relmlir6.idc.renesas.com) ([10.200.68.152]) by relmlie6.idc.renesas.com with ESMTP; 08 Aug 2023 02:25:59 +0900 Received: from localhost.localdomain (unknown [10.226.92.227]) by relmlir6.idc.renesas.com (Postfix) with ESMTP id 15102403C9A4; Tue, 8 Aug 2023 02:25:54 +0900 (JST) From: Biju Das To: Jonathan Cameron Cc: Biju Das , Peter Rosin , Lars-Peter Clausen , Andy Shevchenko , Andi Shyti , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Crt Mori , Dmitry Torokhov , linux-iio@vger.kernel.org, Geert Uytterhoeven , linux-renesas-soc@vger.kernel.org Subject: [PATCH 2/2] iio: magnetometer: ak8975: Simplify probe() Date: Mon, 7 Aug 2023 18:25:48 +0100 Message-Id: <20230807172548.258247-2-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230807172548.258247-1-biju.das.jz@bp.renesas.com> References: <20230807172548.258247-1-biju.das.jz@bp.renesas.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org Simplify the probe() by replacing device_get_match_data() and i2c_client_get_device_id by i2c_get_match_data() as we have similar I2C, ACPI and DT matching table. While at it, replace name->chipset to make error message consistent. Signed-off-by: Biju Das --- drivers/iio/magnetometer/ak8975.c | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/drivers/iio/magnetometer/ak8975.c b/drivers/iio/magnetometer/ak8975.c index eb706d0bf70b..9c4d942ffab3 100644 --- a/drivers/iio/magnetometer/ak8975.c +++ b/drivers/iio/magnetometer/ak8975.c @@ -878,16 +878,13 @@ static irqreturn_t ak8975_handle_trigger(int irq, void *p) static int ak8975_probe(struct i2c_client *client) { - const struct i2c_device_id *id = i2c_client_get_device_id(client); struct ak8975_data *data; struct iio_dev *indio_dev; struct gpio_desc *eoc_gpiod; struct gpio_desc *reset_gpiod; - const void *match; unsigned int i; int err; enum asahi_compass_chipset chipset; - const char *name = NULL; /* * Grab and set up the supplied GPIO. @@ -927,15 +924,8 @@ static int ak8975_probe(struct i2c_client *client) if (err) return err; - /* id will be NULL when enumerated via ACPI */ - match = device_get_match_data(&client->dev); - if (match) { - chipset = (uintptr_t)match; - name = dev_name(&client->dev); - } else if (id) { - chipset = (enum asahi_compass_chipset)(id->driver_data); - name = id->name; - } else + chipset = (uintptr_t)i2c_get_match_data(client); + if (!chipset) return -ENOSYS; for (i = 0; i < ARRAY_SIZE(ak_def_array); i++) @@ -967,12 +957,13 @@ static int ak8975_probe(struct i2c_client *client) dev_err(&client->dev, "Unexpected device\n"); goto power_off; } - dev_dbg(&client->dev, "Asahi compass chip %s\n", name); + dev_dbg(&client->dev, "Asahi compass chip %d\n", chipset); /* Perform some basic start-of-day setup of the device. */ err = ak8975_setup(client); if (err < 0) { - dev_err(&client->dev, "%s initialization fails\n", name); + dev_err(&client->dev, "Initialization failed for chip %d\n", + chipset); goto power_off; } @@ -982,7 +973,7 @@ static int ak8975_probe(struct i2c_client *client) indio_dev->info = &ak8975_info; indio_dev->available_scan_masks = ak8975_scan_masks; indio_dev->modes = INDIO_DIRECT_MODE; - indio_dev->name = name; + indio_dev->name = dev_name(&client->dev); err = iio_triggered_buffer_setup(indio_dev, NULL, ak8975_handle_trigger, NULL);