Loading drivers/mfd/simple-mfd-i2c.c +11 −0 Original line number Diff line number Diff line Loading @@ -62,8 +62,19 @@ static int simple_mfd_i2c_probe(struct i2c_client *i2c) return ret; } static const struct mfd_cell sy7636a_cells[] = { { .name = "sy7636a-regulator", }, { .name = "sy7636a-temperature", }, }; static const struct simple_mfd_data silergy_sy7636a = { .mfd_cell = sy7636a_cells, .mfd_cell_size = ARRAY_SIZE(sy7636a_cells), }; static const struct of_device_id simple_mfd_i2c_of_match[] = { { .compatible = "kontron,sl28cpld" }, { .compatible = "silergy,sy7636a", .data = &silergy_sy7636a}, {} }; MODULE_DEVICE_TABLE(of, simple_mfd_i2c_of_match); Loading include/linux/mfd/sy7636a.h 0 → 100644 +34 −0 Original line number Diff line number Diff line /* SPDX-License-Identifier: GPL-2.0-only */ /* * Functions to access SY3686A power management chip. * * Copyright (C) 2021 reMarkable AS - http://www.remarkable.com/ */ #ifndef __MFD_SY7636A_H #define __MFD_SY7636A_H #define SY7636A_REG_OPERATION_MODE_CRL 0x00 /* It is set if a gpio is used to control the regulator */ #define SY7636A_OPERATION_MODE_CRL_VCOMCTL BIT(6) #define SY7636A_OPERATION_MODE_CRL_ONOFF BIT(7) #define SY7636A_REG_VCOM_ADJUST_CTRL_L 0x01 #define SY7636A_REG_VCOM_ADJUST_CTRL_H 0x02 #define SY7636A_REG_VCOM_ADJUST_CTRL_MASK 0x01ff #define SY7636A_REG_VLDO_VOLTAGE_ADJULST_CTRL 0x03 #define SY7636A_REG_POWER_ON_DELAY_TIME 0x06 #define SY7636A_REG_FAULT_FLAG 0x07 #define SY7636A_FAULT_FLAG_PG BIT(0) #define SY7636A_REG_TERMISTOR_READOUT 0x08 #define SY7636A_REG_MAX 0x08 #define VCOM_ADJUST_CTRL_MASK 0x1ff // Used to shift the high byte #define VCOM_ADJUST_CTRL_SHIFT 8 // Used to scale from VCOM_ADJUST_CTRL to mv #define VCOM_ADJUST_CTRL_SCAL 10000 #define FAULT_FLAG_SHIFT 1 #endif /* __LINUX_MFD_SY7636A_H */ Loading
drivers/mfd/simple-mfd-i2c.c +11 −0 Original line number Diff line number Diff line Loading @@ -62,8 +62,19 @@ static int simple_mfd_i2c_probe(struct i2c_client *i2c) return ret; } static const struct mfd_cell sy7636a_cells[] = { { .name = "sy7636a-regulator", }, { .name = "sy7636a-temperature", }, }; static const struct simple_mfd_data silergy_sy7636a = { .mfd_cell = sy7636a_cells, .mfd_cell_size = ARRAY_SIZE(sy7636a_cells), }; static const struct of_device_id simple_mfd_i2c_of_match[] = { { .compatible = "kontron,sl28cpld" }, { .compatible = "silergy,sy7636a", .data = &silergy_sy7636a}, {} }; MODULE_DEVICE_TABLE(of, simple_mfd_i2c_of_match); Loading
include/linux/mfd/sy7636a.h 0 → 100644 +34 −0 Original line number Diff line number Diff line /* SPDX-License-Identifier: GPL-2.0-only */ /* * Functions to access SY3686A power management chip. * * Copyright (C) 2021 reMarkable AS - http://www.remarkable.com/ */ #ifndef __MFD_SY7636A_H #define __MFD_SY7636A_H #define SY7636A_REG_OPERATION_MODE_CRL 0x00 /* It is set if a gpio is used to control the regulator */ #define SY7636A_OPERATION_MODE_CRL_VCOMCTL BIT(6) #define SY7636A_OPERATION_MODE_CRL_ONOFF BIT(7) #define SY7636A_REG_VCOM_ADJUST_CTRL_L 0x01 #define SY7636A_REG_VCOM_ADJUST_CTRL_H 0x02 #define SY7636A_REG_VCOM_ADJUST_CTRL_MASK 0x01ff #define SY7636A_REG_VLDO_VOLTAGE_ADJULST_CTRL 0x03 #define SY7636A_REG_POWER_ON_DELAY_TIME 0x06 #define SY7636A_REG_FAULT_FLAG 0x07 #define SY7636A_FAULT_FLAG_PG BIT(0) #define SY7636A_REG_TERMISTOR_READOUT 0x08 #define SY7636A_REG_MAX 0x08 #define VCOM_ADJUST_CTRL_MASK 0x1ff // Used to shift the high byte #define VCOM_ADJUST_CTRL_SHIFT 8 // Used to scale from VCOM_ADJUST_CTRL to mv #define VCOM_ADJUST_CTRL_SCAL 10000 #define FAULT_FLAG_SHIFT 1 #endif /* __LINUX_MFD_SY7636A_H */