Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

iio: magnetometer: ak8975: Convert enum->pointer for data in the match tables

Convert enum->pointer for data in the match tables to 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.

Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20230818075600.24277-2-biju.das.jz@bp.renesas.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

authored by

Biju Das and committed by
Jonathan Cameron
4f9ea93a 4545d477

+30 -45
+30 -45
drivers/iio/magnetometer/ak8975.c
··· 813 813 }; 814 814 815 815 static const struct acpi_device_id ak_acpi_match[] = { 816 - {"AK8975", AK8975}, 817 - {"AK8963", AK8963}, 818 - {"INVN6500", AK8963}, 819 - {"AK009911", AK09911}, 820 - {"AK09911", AK09911}, 821 - {"AKM9911", AK09911}, 822 - {"AK09912", AK09912}, 816 + {"AK8975", (kernel_ulong_t)&ak_def_array[AK8975] }, 817 + {"AK8963", (kernel_ulong_t)&ak_def_array[AK8963] }, 818 + {"INVN6500", (kernel_ulong_t)&ak_def_array[AK8963] }, 819 + {"AK009911", (kernel_ulong_t)&ak_def_array[AK09911] }, 820 + {"AK09911", (kernel_ulong_t)&ak_def_array[AK09911] }, 821 + {"AKM9911", (kernel_ulong_t)&ak_def_array[AK09911] }, 822 + {"AK09912", (kernel_ulong_t)&ak_def_array[AK09912] }, 823 823 { } 824 824 }; 825 825 MODULE_DEVICE_TABLE(acpi, ak_acpi_match); ··· 883 883 struct iio_dev *indio_dev; 884 884 struct gpio_desc *eoc_gpiod; 885 885 struct gpio_desc *reset_gpiod; 886 - const void *match; 887 - unsigned int i; 888 886 int err; 889 - enum asahi_compass_chipset chipset; 890 887 const char *name = NULL; 891 888 892 889 /* ··· 925 928 return err; 926 929 927 930 /* id will be NULL when enumerated via ACPI */ 928 - match = device_get_match_data(&client->dev); 929 - if (match) { 930 - chipset = (uintptr_t)match; 931 - name = dev_name(&client->dev); 932 - } else if (id) { 933 - chipset = (enum asahi_compass_chipset)(id->driver_data); 934 - name = id->name; 935 - } else 936 - return -ENOSYS; 937 - 938 - for (i = 0; i < ARRAY_SIZE(ak_def_array); i++) 939 - if (ak_def_array[i].type == chipset) 940 - break; 941 - 942 - if (i == ARRAY_SIZE(ak_def_array)) { 943 - dev_err(&client->dev, "AKM device type unsupported: %d\n", 944 - chipset); 931 + data->def = i2c_get_match_data(client); 932 + if (!data->def) 945 933 return -ENODEV; 946 - } 947 934 948 - data->def = &ak_def_array[i]; 935 + /* If enumerated via firmware node, fix the ABI */ 936 + if (dev_fwnode(&client->dev)) 937 + name = dev_name(&client->dev); 938 + else 939 + name = id->name; 949 940 950 941 /* Fetch the regulators */ 951 942 data->vdd = devm_regulator_get(&client->dev, "vdd"); ··· 1062 1077 ak8975_runtime_resume, NULL); 1063 1078 1064 1079 static const struct i2c_device_id ak8975_id[] = { 1065 - {"ak8975", AK8975}, 1066 - {"ak8963", AK8963}, 1067 - {"AK8963", AK8963}, 1068 - {"ak09911", AK09911}, 1069 - {"ak09912", AK09912}, 1070 - {"ak09916", AK09916}, 1080 + {"ak8975", (kernel_ulong_t)&ak_def_array[AK8975] }, 1081 + {"ak8963", (kernel_ulong_t)&ak_def_array[AK8963] }, 1082 + {"AK8963", (kernel_ulong_t)&ak_def_array[AK8963] }, 1083 + {"ak09911", (kernel_ulong_t)&ak_def_array[AK09911] }, 1084 + {"ak09912", (kernel_ulong_t)&ak_def_array[AK09912] }, 1085 + {"ak09916", (kernel_ulong_t)&ak_def_array[AK09916] }, 1071 1086 {} 1072 1087 }; 1073 1088 1074 1089 MODULE_DEVICE_TABLE(i2c, ak8975_id); 1075 1090 1076 1091 static const struct of_device_id ak8975_of_match[] = { 1077 - { .compatible = "asahi-kasei,ak8975", }, 1078 - { .compatible = "ak8975", }, 1079 - { .compatible = "asahi-kasei,ak8963", }, 1080 - { .compatible = "ak8963", }, 1081 - { .compatible = "asahi-kasei,ak09911", }, 1082 - { .compatible = "ak09911", }, 1083 - { .compatible = "asahi-kasei,ak09912", }, 1084 - { .compatible = "ak09912", }, 1085 - { .compatible = "asahi-kasei,ak09916", }, 1086 - { .compatible = "ak09916", }, 1092 + { .compatible = "asahi-kasei,ak8975", .data = &ak_def_array[AK8975] }, 1093 + { .compatible = "ak8975", .data = &ak_def_array[AK8975] }, 1094 + { .compatible = "asahi-kasei,ak8963", .data = &ak_def_array[AK8963] }, 1095 + { .compatible = "ak8963", .data = &ak_def_array[AK8963] }, 1096 + { .compatible = "asahi-kasei,ak09911", .data = &ak_def_array[AK09911] }, 1097 + { .compatible = "ak09911", .data = &ak_def_array[AK09911] }, 1098 + { .compatible = "asahi-kasei,ak09912", .data = &ak_def_array[AK09912] }, 1099 + { .compatible = "ak09912", .data = &ak_def_array[AK09912] }, 1100 + { .compatible = "asahi-kasei,ak09916", .data = &ak_def_array[AK09916] }, 1101 + { .compatible = "ak09916", .data = &ak_def_array[AK09916] }, 1087 1102 {} 1088 1103 }; 1089 1104 MODULE_DEVICE_TABLE(of, ak8975_of_match);