Lines Matching +full:client +full:- +full:id
1 // SPDX-License-Identifier: GPL-2.0-or-later
65 int id; member
75 static int max34440_read_word_data(struct i2c_client *client, int page, in max34440_read_word_data() argument
79 const struct pmbus_driver_info *info = pmbus_get_driver_info(client); in max34440_read_word_data()
84 ret = pmbus_read_word_data(client, page, phase, in max34440_read_word_data()
85 data->iout_oc_fault_limit); in max34440_read_word_data()
88 ret = pmbus_read_word_data(client, page, phase, in max34440_read_word_data()
89 data->iout_oc_warn_limit); in max34440_read_word_data()
92 ret = pmbus_read_word_data(client, page, phase, in max34440_read_word_data()
96 ret = pmbus_read_word_data(client, page, phase, in max34440_read_word_data()
100 if (data->id != max34446 && data->id != max34451 && in max34440_read_word_data()
101 data->id != adpm12160) in max34440_read_word_data()
102 return -ENXIO; in max34440_read_word_data()
103 ret = pmbus_read_word_data(client, page, phase, in max34440_read_word_data()
107 ret = pmbus_read_word_data(client, page, phase, in max34440_read_word_data()
111 if (data->id != max34446) in max34440_read_word_data()
112 return -ENXIO; in max34440_read_word_data()
113 ret = pmbus_read_word_data(client, page, phase, in max34440_read_word_data()
117 if (data->id != max34446) in max34440_read_word_data()
118 return -ENXIO; in max34440_read_word_data()
119 ret = pmbus_read_word_data(client, page, phase, in max34440_read_word_data()
123 if (data->id != max34446 && data->id != max34460 && in max34440_read_word_data()
124 data->id != max34461) in max34440_read_word_data()
125 return -ENXIO; in max34440_read_word_data()
126 ret = pmbus_read_word_data(client, page, phase, in max34440_read_word_data()
130 ret = pmbus_read_word_data(client, page, phase, in max34440_read_word_data()
134 if (data->id != max34446) in max34440_read_word_data()
135 return -ENXIO; in max34440_read_word_data()
144 ret = -ENODATA; in max34440_read_word_data()
150 static int max34440_write_word_data(struct i2c_client *client, int page, in max34440_write_word_data() argument
153 const struct pmbus_driver_info *info = pmbus_get_driver_info(client); in max34440_write_word_data()
159 ret = pmbus_write_word_data(client, page, data->iout_oc_fault_limit, in max34440_write_word_data()
163 ret = pmbus_write_word_data(client, page, data->iout_oc_warn_limit, in max34440_write_word_data()
167 ret = pmbus_write_word_data(client, page, in max34440_write_word_data()
171 ret = pmbus_write_word_data(client, page, in max34440_write_word_data()
175 ret = pmbus_write_word_data(client, page, in max34440_write_word_data()
179 ret = pmbus_write_word_data(client, page, in max34440_write_word_data()
183 ret = pmbus_write_word_data(client, page, in max34440_write_word_data()
185 if (!ret && (data->id == max34446 || data->id == max34451 || in max34440_write_word_data()
186 data->id == adpm12160)) in max34440_write_word_data()
187 ret = pmbus_write_word_data(client, page, in max34440_write_word_data()
192 ret = pmbus_write_word_data(client, page, in max34440_write_word_data()
195 if (!ret && data->id == max34446) in max34440_write_word_data()
196 ret = pmbus_write_word_data(client, page, in max34440_write_word_data()
200 ret = -ENODATA; in max34440_write_word_data()
206 static int max34440_read_byte_data(struct i2c_client *client, int page, int reg) in max34440_read_byte_data() argument
212 ret = pmbus_set_page(client, page, 0xff); in max34440_read_byte_data()
219 mfg_status = pmbus_read_word_data(client, 0, 0xff, in max34440_read_byte_data()
229 mfg_status = pmbus_read_word_data(client, 0, 0xff, in max34440_read_byte_data()
239 ret = -ENODATA; in max34440_read_byte_data()
245 static int max34451_set_supported_funcs(struct i2c_client *client, in max34451_set_supported_funcs() argument
249 * Each of the channel 0-15 can be configured to monitor the following in max34451_set_supported_funcs()
256 * 0x30: General-purpose input active low in max34451_set_supported_funcs()
257 * 0x34: General-purpose input active high in max34451_set_supported_funcs()
264 rv = i2c_smbus_read_word_data(client, PMBUS_MFR_REVISION); in max34451_set_supported_funcs()
270 data->info.format[PSC_VOLTAGE_IN] = direct; in max34451_set_supported_funcs()
271 data->info.format[PSC_CURRENT_IN] = direct; in max34451_set_supported_funcs()
272 data->info.m[PSC_VOLTAGE_IN] = 1; in max34451_set_supported_funcs()
273 data->info.b[PSC_VOLTAGE_IN] = 0; in max34451_set_supported_funcs()
274 data->info.R[PSC_VOLTAGE_IN] = 3; in max34451_set_supported_funcs()
275 data->info.m[PSC_CURRENT_IN] = 1; in max34451_set_supported_funcs()
276 data->info.b[PSC_CURRENT_IN] = 0; in max34451_set_supported_funcs()
277 data->info.R[PSC_CURRENT_IN] = 2; in max34451_set_supported_funcs()
278 data->iout_oc_fault_limit = PMBUS_IOUT_OC_FAULT_LIMIT; in max34451_set_supported_funcs()
279 data->iout_oc_warn_limit = PMBUS_IOUT_OC_WARN_LIMIT; in max34451_set_supported_funcs()
283 rv = i2c_smbus_write_byte_data(client, PMBUS_PAGE, page); in max34451_set_supported_funcs()
288 rv = i2c_smbus_read_word_data(client, in max34451_set_supported_funcs()
296 data->info.func[page] = PMBUS_HAVE_VOUT | in max34451_set_supported_funcs()
300 data->info.func[page] |= PMBUS_HAVE_VIN | in max34451_set_supported_funcs()
304 data->info.func[page] = PMBUS_HAVE_VOUT; in max34451_set_supported_funcs()
307 data->info.func[page] |= PMBUS_HAVE_VIN; in max34451_set_supported_funcs()
310 data->info.func[page] = PMBUS_HAVE_IOUT | in max34451_set_supported_funcs()
314 data->info.func[page] |= PMBUS_HAVE_IIN | in max34451_set_supported_funcs()
318 data->info.func[page] = PMBUS_HAVE_IOUT; in max34451_set_supported_funcs()
321 data->info.func[page] |= PMBUS_HAVE_IIN; in max34451_set_supported_funcs()
347 .R[PSC_CURRENT_IN] = -1,
350 .R[PSC_CURRENT_OUT] = -1,
506 /* func 0-15 is set dynamically before probing */
585 static int max34440_probe(struct i2c_client *client) in max34440_probe() argument
590 data = devm_kzalloc(&client->dev, sizeof(struct max34440_data), in max34440_probe()
593 return -ENOMEM; in max34440_probe()
594 data->id = i2c_match_id(max34440_id, client)->driver_data; in max34440_probe()
595 data->info = max34440_info[data->id]; in max34440_probe()
596 data->iout_oc_fault_limit = MAX34440_IOUT_OC_FAULT_LIMIT; in max34440_probe()
597 data->iout_oc_warn_limit = MAX34440_IOUT_OC_WARN_LIMIT; in max34440_probe()
599 if (data->id == max34451) { in max34440_probe()
600 rv = max34451_set_supported_funcs(client, data); in max34440_probe()
603 } else if (data->id == adpm12160) { in max34440_probe()
604 data->iout_oc_fault_limit = PMBUS_IOUT_OC_FAULT_LIMIT; in max34440_probe()
605 data->iout_oc_warn_limit = PMBUS_IOUT_OC_WARN_LIMIT; in max34440_probe()
608 return pmbus_do_probe(client, &data->info); in max34440_probe()