76 lines · c
1// SPDX-License-Identifier: GPL-2.0-or-later2/*3 * Hardware monitoring driver for Infineon Multi-phase Digital VR Controllers4 *5 * Copyright (c) 2022 Infineon Technologies. All rights reserved.6 */7 8#include <linux/err.h>9#include <linux/i2c.h>10#include <linux/init.h>11#include <linux/kernel.h>12#include <linux/module.h>13#include "pmbus.h"14 15#define XDPE152_PAGE_NUM 216 17static struct pmbus_driver_info xdpe152_info = {18 .pages = XDPE152_PAGE_NUM,19 .format[PSC_VOLTAGE_IN] = linear,20 .format[PSC_VOLTAGE_OUT] = linear,21 .format[PSC_TEMPERATURE] = linear,22 .format[PSC_CURRENT_IN] = linear,23 .format[PSC_CURRENT_OUT] = linear,24 .format[PSC_POWER] = linear,25 .func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT |26 PMBUS_HAVE_IIN | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT |27 PMBUS_HAVE_TEMP | PMBUS_HAVE_TEMP2 | PMBUS_HAVE_STATUS_TEMP |28 PMBUS_HAVE_POUT | PMBUS_HAVE_PIN | PMBUS_HAVE_STATUS_INPUT,29 .func[1] = PMBUS_HAVE_VIN | PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT |30 PMBUS_HAVE_IIN | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT |31 PMBUS_HAVE_POUT | PMBUS_HAVE_PIN | PMBUS_HAVE_STATUS_INPUT,32};33 34static int xdpe152_probe(struct i2c_client *client)35{36 struct pmbus_driver_info *info;37 38 info = devm_kmemdup(&client->dev, &xdpe152_info, sizeof(*info),39 GFP_KERNEL);40 if (!info)41 return -ENOMEM;42 43 return pmbus_do_probe(client, info);44}45 46static const struct i2c_device_id xdpe152_id[] = {47 {"xdpe152c4"},48 {"xdpe15284"},49 {}50};51 52MODULE_DEVICE_TABLE(i2c, xdpe152_id);53 54static const struct of_device_id __maybe_unused xdpe152_of_match[] = {55 {.compatible = "infineon,xdpe152c4"},56 {.compatible = "infineon,xdpe15284"},57 {}58};59MODULE_DEVICE_TABLE(of, xdpe152_of_match);60 61static struct i2c_driver xdpe152_driver = {62 .driver = {63 .name = "xdpe152c4",64 .of_match_table = of_match_ptr(xdpe152_of_match),65 },66 .probe = xdpe152_probe,67 .id_table = xdpe152_id,68};69 70module_i2c_driver(xdpe152_driver);71 72MODULE_AUTHOR("Greg Schwendimann <greg.schwendimann@infineon.com>");73MODULE_DESCRIPTION("PMBus driver for Infineon XDPE152 family");74MODULE_LICENSE("GPL");75MODULE_IMPORT_NS(PMBUS);76