hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/drivers/regulator/sy8106a-regulator.c
....@@ -22,12 +22,6 @@
2222 */
2323 #define SY8106A_GO_BIT BIT(7)
2424
25
-struct sy8106a {
26
- struct regulator_dev *rdev;
27
- struct regmap *regmap;
28
- u32 fixed_voltage;
29
-};
30
-
3125 static const struct regmap_config sy8106a_regmap_config = {
3226 .reg_bits = 8,
3327 .val_bits = 8,
....@@ -67,39 +61,34 @@
6761 /*
6862 * I2C driver interface functions
6963 */
70
-static int sy8106a_i2c_probe(struct i2c_client *i2c,
71
- const struct i2c_device_id *id)
64
+static int sy8106a_i2c_probe(struct i2c_client *i2c)
7265 {
73
- struct sy8106a *chip;
7466 struct device *dev = &i2c->dev;
75
- struct regulator_dev *rdev = NULL;
67
+ struct regulator_dev *rdev;
7668 struct regulator_config config = { };
69
+ struct regmap *regmap;
7770 unsigned int reg, vsel;
71
+ u32 fixed_voltage;
7872 int error;
7973
80
- chip = devm_kzalloc(&i2c->dev, sizeof(struct sy8106a), GFP_KERNEL);
81
- if (!chip)
82
- return -ENOMEM;
83
-
8474 error = of_property_read_u32(dev->of_node, "silergy,fixed-microvolt",
85
- &chip->fixed_voltage);
75
+ &fixed_voltage);
8676 if (error)
8777 return error;
8878
89
- if (chip->fixed_voltage < SY8106A_MIN_MV * 1000 ||
90
- chip->fixed_voltage > SY8106A_MAX_MV * 1000)
79
+ if (fixed_voltage < SY8106A_MIN_MV * 1000 ||
80
+ fixed_voltage > SY8106A_MAX_MV * 1000)
9181 return -EINVAL;
9282
93
- chip->regmap = devm_regmap_init_i2c(i2c, &sy8106a_regmap_config);
94
- if (IS_ERR(chip->regmap)) {
95
- error = PTR_ERR(chip->regmap);
83
+ regmap = devm_regmap_init_i2c(i2c, &sy8106a_regmap_config);
84
+ if (IS_ERR(regmap)) {
85
+ error = PTR_ERR(regmap);
9686 dev_err(dev, "Failed to allocate register map: %d\n", error);
9787 return error;
9888 }
9989
10090 config.dev = &i2c->dev;
101
- config.regmap = chip->regmap;
102
- config.driver_data = chip;
91
+ config.regmap = regmap;
10392
10493 config.of_node = dev->of_node;
10594 config.init_data = of_get_regulator_init_data(dev, dev->of_node,
....@@ -109,15 +98,15 @@
10998 return -ENOMEM;
11099
111100 /* Ensure GO_BIT is enabled when probing */
112
- error = regmap_read(chip->regmap, SY8106A_REG_VOUT1_SEL, &reg);
101
+ error = regmap_read(regmap, SY8106A_REG_VOUT1_SEL, &reg);
113102 if (error)
114103 return error;
115104
116105 if (!(reg & SY8106A_GO_BIT)) {
117
- vsel = (chip->fixed_voltage / 1000 - SY8106A_MIN_MV) /
106
+ vsel = (fixed_voltage / 1000 - SY8106A_MIN_MV) /
118107 SY8106A_STEP_MV;
119108
120
- error = regmap_write(chip->regmap, SY8106A_REG_VOUT1_SEL,
109
+ error = regmap_write(regmap, SY8106A_REG_VOUT1_SEL,
121110 vsel | SY8106A_GO_BIT);
122111 if (error)
123112 return error;
....@@ -131,14 +120,10 @@
131120 return error;
132121 }
133122
134
- chip->rdev = rdev;
135
-
136
- i2c_set_clientdata(i2c, chip);
137
-
138123 return 0;
139124 }
140125
141
-static const struct of_device_id sy8106a_i2c_of_match[] = {
126
+static const struct of_device_id __maybe_unused sy8106a_i2c_of_match[] = {
142127 { .compatible = "silergy,sy8106a" },
143128 { },
144129 };
....@@ -155,7 +140,7 @@
155140 .name = "sy8106a",
156141 .of_match_table = of_match_ptr(sy8106a_i2c_of_match),
157142 },
158
- .probe = sy8106a_i2c_probe,
143
+ .probe_new = sy8106a_i2c_probe,
159144 .id_table = sy8106a_i2c_id,
160145 };
161146