15
15
#include "pmbus.h"
16
16
17
17
enum chips {
18
+ adpm12100 ,
19
+ adpm12130 ,
18
20
adpm12160 ,
21
+ adpm12200 ,
19
22
max34440 ,
20
23
max34441 ,
21
24
max34446 ,
@@ -89,7 +92,8 @@ static int max34440_read_word_data(struct i2c_client *client, int page,
89
92
break ;
90
93
case PMBUS_VIRT_READ_IOUT_AVG :
91
94
if (data -> id != max34446 && data -> id != max34451 &&
92
- data -> id != adpm12160 )
95
+ data -> id != adpm12100 && data -> id != adpm12130 &&
96
+ data -> id != adpm12160 && data -> id != adpm12200 )
93
97
return - ENXIO ;
94
98
ret = pmbus_read_word_data (client , page , phase ,
95
99
MAX34446_MFR_IOUT_AVG );
@@ -174,7 +178,8 @@ static int max34440_write_word_data(struct i2c_client *client, int page,
174
178
ret = pmbus_write_word_data (client , page ,
175
179
MAX34440_MFR_IOUT_PEAK , 0 );
176
180
if (!ret && (data -> id == max34446 || data -> id == max34451 ||
177
- data -> id == adpm12160 ))
181
+ data -> id == adpm12100 || data -> id == adpm12130 ||
182
+ data -> id == adpm12160 || data -> id == adpm12200 ))
178
183
ret = pmbus_write_word_data (client , page ,
179
184
MAX34446_MFR_IOUT_AVG , 0 );
180
185
@@ -319,6 +324,76 @@ static int max34451_set_supported_funcs(struct i2c_client *client,
319
324
}
320
325
321
326
static struct pmbus_driver_info max34440_info [] = {
327
+ [adpm12100 ] = {
328
+ .pages = 19 ,
329
+ .format [PSC_VOLTAGE_IN ] = direct ,
330
+ .format [PSC_VOLTAGE_OUT ] = direct ,
331
+ .format [PSC_CURRENT_IN ] = direct ,
332
+ .format [PSC_CURRENT_OUT ] = direct ,
333
+ .format [PSC_TEMPERATURE ] = direct ,
334
+ .m [PSC_VOLTAGE_IN ] = 8 ,
335
+ .b [PSC_VOLTAGE_IN ] = 0 ,
336
+ .R [PSC_VOLTAGE_IN ] = 3 ,
337
+ .m [PSC_VOLTAGE_OUT ] = 8 ,
338
+ .b [PSC_VOLTAGE_OUT ] = 0 ,
339
+ .R [PSC_VOLTAGE_OUT ] = 3 ,
340
+ .m [PSC_CURRENT_IN ] = 4 ,
341
+ .b [PSC_CURRENT_IN ] = 0 ,
342
+ .R [PSC_CURRENT_IN ] = 2 ,
343
+ .m [PSC_CURRENT_OUT ] = 4 ,
344
+ .b [PSC_CURRENT_OUT ] = 0 ,
345
+ .R [PSC_CURRENT_OUT ] = 2 ,
346
+ .m [PSC_TEMPERATURE ] = 1 ,
347
+ .b [PSC_TEMPERATURE ] = 0 ,
348
+ .R [PSC_TEMPERATURE ] = 2 ,
349
+ /* absent func below [18] are not for monitoring */
350
+ .func [2 ] = PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT ,
351
+ .func [4 ] = PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT ,
352
+ .func [5 ] = PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT ,
353
+ .func [6 ] = PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT ,
354
+ .func [8 ] = PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT ,
355
+ .func [9 ] = PMBUS_HAVE_VIN | PMBUS_HAVE_STATUS_INPUT ,
356
+ .func [10 ] = PMBUS_HAVE_IIN | PMBUS_HAVE_STATUS_INPUT ,
357
+ .func [14 ] = PMBUS_HAVE_IOUT ,
358
+ .func [18 ] = PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP ,
359
+ .read_word_data = max34440_read_word_data ,
360
+ .write_word_data = max34440_write_word_data ,
361
+ },
362
+ [adpm12130 ] = {
363
+ .pages = 19 ,
364
+ .format [PSC_VOLTAGE_IN ] = direct ,
365
+ .format [PSC_VOLTAGE_OUT ] = direct ,
366
+ .format [PSC_CURRENT_IN ] = direct ,
367
+ .format [PSC_CURRENT_OUT ] = direct ,
368
+ .format [PSC_TEMPERATURE ] = direct ,
369
+ .m [PSC_VOLTAGE_IN ] = 8 ,
370
+ .b [PSC_VOLTAGE_IN ] = 0 ,
371
+ .R [PSC_VOLTAGE_IN ] = 3 ,
372
+ .m [PSC_VOLTAGE_OUT ] = 8 ,
373
+ .b [PSC_VOLTAGE_OUT ] = 0 ,
374
+ .R [PSC_VOLTAGE_OUT ] = 3 ,
375
+ .m [PSC_CURRENT_IN ] = 4 ,
376
+ .b [PSC_CURRENT_IN ] = 0 ,
377
+ .R [PSC_CURRENT_IN ] = 2 ,
378
+ .m [PSC_CURRENT_OUT ] = 4 ,
379
+ .b [PSC_CURRENT_OUT ] = 0 ,
380
+ .R [PSC_CURRENT_OUT ] = 2 ,
381
+ .m [PSC_TEMPERATURE ] = 1 ,
382
+ .b [PSC_TEMPERATURE ] = 0 ,
383
+ .R [PSC_TEMPERATURE ] = 2 ,
384
+ /* absent func below [18] are not for monitoring */
385
+ .func [2 ] = PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT ,
386
+ .func [4 ] = PMBUS_HAVE_IOUT ,
387
+ .func [5 ] = PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT ,
388
+ .func [6 ] = PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT ,
389
+ .func [8 ] = PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT ,
390
+ .func [9 ] = PMBUS_HAVE_VIN | PMBUS_HAVE_STATUS_INPUT ,
391
+ .func [10 ] = PMBUS_HAVE_IIN | PMBUS_HAVE_STATUS_INPUT ,
392
+ .func [14 ] = PMBUS_HAVE_IOUT ,
393
+ .func [18 ] = PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP ,
394
+ .read_word_data = max34440_read_word_data ,
395
+ .write_word_data = max34440_write_word_data ,
396
+ },
322
397
[adpm12160 ] = {
323
398
.pages = 19 ,
324
399
.format [PSC_VOLTAGE_IN ] = direct ,
@@ -354,6 +429,42 @@ static struct pmbus_driver_info max34440_info[] = {
354
429
.read_word_data = max34440_read_word_data ,
355
430
.write_word_data = max34440_write_word_data ,
356
431
},
432
+ [adpm12200 ] = {
433
+ .pages = 19 ,
434
+ .format [PSC_VOLTAGE_IN ] = direct ,
435
+ .format [PSC_VOLTAGE_OUT ] = direct ,
436
+ .format [PSC_CURRENT_IN ] = direct ,
437
+ .format [PSC_CURRENT_OUT ] = direct ,
438
+ .format [PSC_TEMPERATURE ] = direct ,
439
+ .m [PSC_VOLTAGE_IN ] = 125 ,
440
+ .b [PSC_VOLTAGE_IN ] = 0 ,
441
+ .R [PSC_VOLTAGE_IN ] = 0 ,
442
+ .m [PSC_VOLTAGE_OUT ] = 125 ,
443
+ .b [PSC_VOLTAGE_OUT ] = 0 ,
444
+ .R [PSC_VOLTAGE_OUT ] = 0 ,
445
+ .m [PSC_CURRENT_IN ] = 250 ,
446
+ .b [PSC_CURRENT_IN ] = 0 ,
447
+ .R [PSC_CURRENT_IN ] = -1 ,
448
+ .m [PSC_CURRENT_OUT ] = 250 ,
449
+ .b [PSC_CURRENT_OUT ] = 0 ,
450
+ .R [PSC_CURRENT_OUT ] = -1 ,
451
+ .m [PSC_TEMPERATURE ] = 1 ,
452
+ .b [PSC_TEMPERATURE ] = 0 ,
453
+ .R [PSC_TEMPERATURE ] = 2 ,
454
+ /* absent func below [18] are not for monitoring */
455
+ .func [2 ] = PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT ,
456
+ .func [4 ] = PMBUS_HAVE_STATUS_IOUT ,
457
+ .func [5 ] = PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT ,
458
+ .func [6 ] = PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT ,
459
+ .func [7 ] = PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT ,
460
+ .func [8 ] = PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT ,
461
+ .func [9 ] = PMBUS_HAVE_VIN | PMBUS_HAVE_STATUS_INPUT ,
462
+ .func [10 ] = PMBUS_HAVE_IIN | PMBUS_HAVE_STATUS_INPUT ,
463
+ .func [14 ] = PMBUS_HAVE_IOUT ,
464
+ .func [18 ] = PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP ,
465
+ .read_word_data = max34440_read_word_data ,
466
+ .write_word_data = max34440_write_word_data ,
467
+ },
357
468
[max34440 ] = {
358
469
.pages = 14 ,
359
470
.format [PSC_VOLTAGE_IN ] = direct ,
@@ -584,7 +695,8 @@ static int max34440_probe(struct i2c_client *client)
584
695
rv = max34451_set_supported_funcs (client , data );
585
696
if (rv )
586
697
return rv ;
587
- } else if (data -> id == adpm12160 ) {
698
+ } else if (data -> id == adpm12100 || data -> id == adpm12130 ||
699
+ data -> id == adpm12100 || data -> id == adpm12200 ) {
588
700
data -> iout_oc_fault_limit = PMBUS_IOUT_OC_FAULT_LIMIT ;
589
701
data -> iout_oc_warn_limit = PMBUS_IOUT_OC_WARN_LIMIT ;
590
702
}
@@ -593,7 +705,10 @@ static int max34440_probe(struct i2c_client *client)
593
705
}
594
706
595
707
static const struct i2c_device_id max34440_id [] = {
708
+ {"adpm12100" , adpm12100 },
709
+ {"adpm12130" , adpm12130 },
596
710
{"adpm12160" , adpm12160 },
711
+ {"adpm12200" , adpm12200 },
597
712
{"max34440" , max34440 },
598
713
{"max34441" , max34441 },
599
714
{"max34446" , max34446 },
0 commit comments