Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mfd: simple-mfd-i2c: Enable support for the silergy,sy7636a

Signed-off-by: Alistair Francis <alistair@alistair23.me>
Signed-off-by: Lee Jones <lee.jones@linaro.org>

authored by

Alistair Francis and committed by
Lee Jones
5913eb45 bae5a4ac

+45
+11
drivers/mfd/simple-mfd-i2c.c
··· 62 62 return ret; 63 63 } 64 64 65 + static const struct mfd_cell sy7636a_cells[] = { 66 + { .name = "sy7636a-regulator", }, 67 + { .name = "sy7636a-temperature", }, 68 + }; 69 + 70 + static const struct simple_mfd_data silergy_sy7636a = { 71 + .mfd_cell = sy7636a_cells, 72 + .mfd_cell_size = ARRAY_SIZE(sy7636a_cells), 73 + }; 74 + 65 75 static const struct of_device_id simple_mfd_i2c_of_match[] = { 66 76 { .compatible = "kontron,sl28cpld" }, 77 + { .compatible = "silergy,sy7636a", .data = &silergy_sy7636a}, 67 78 {} 68 79 }; 69 80 MODULE_DEVICE_TABLE(of, simple_mfd_i2c_of_match);
+34
include/linux/mfd/sy7636a.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0-only */ 2 + /* 3 + * Functions to access SY3686A power management chip. 4 + * 5 + * Copyright (C) 2021 reMarkable AS - http://www.remarkable.com/ 6 + */ 7 + 8 + #ifndef __MFD_SY7636A_H 9 + #define __MFD_SY7636A_H 10 + 11 + #define SY7636A_REG_OPERATION_MODE_CRL 0x00 12 + /* It is set if a gpio is used to control the regulator */ 13 + #define SY7636A_OPERATION_MODE_CRL_VCOMCTL BIT(6) 14 + #define SY7636A_OPERATION_MODE_CRL_ONOFF BIT(7) 15 + #define SY7636A_REG_VCOM_ADJUST_CTRL_L 0x01 16 + #define SY7636A_REG_VCOM_ADJUST_CTRL_H 0x02 17 + #define SY7636A_REG_VCOM_ADJUST_CTRL_MASK 0x01ff 18 + #define SY7636A_REG_VLDO_VOLTAGE_ADJULST_CTRL 0x03 19 + #define SY7636A_REG_POWER_ON_DELAY_TIME 0x06 20 + #define SY7636A_REG_FAULT_FLAG 0x07 21 + #define SY7636A_FAULT_FLAG_PG BIT(0) 22 + #define SY7636A_REG_TERMISTOR_READOUT 0x08 23 + 24 + #define SY7636A_REG_MAX 0x08 25 + 26 + #define VCOM_ADJUST_CTRL_MASK 0x1ff 27 + // Used to shift the high byte 28 + #define VCOM_ADJUST_CTRL_SHIFT 8 29 + // Used to scale from VCOM_ADJUST_CTRL to mv 30 + #define VCOM_ADJUST_CTRL_SCAL 10000 31 + 32 + #define FAULT_FLAG_SHIFT 1 33 + 34 + #endif /* __LINUX_MFD_SY7636A_H */