mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2025-11-10 21:30:51 +00:00
- Standardise MFD_CELL_* helpers
- New Drivers
- Add support for Acer Iconia Tab A500 Embedded Controller
- New Device Support
- Add support for ROHM BD9574MWF to BD9571MWV
- Add support for Intel Alder Lake PCH-P PCI to LPSS
- Add support for Intel Alder Lake PCH-S PCI to LPSS
- New Functionality
- Support ACPI enumeration; arizona
- Fix-ups
- Managed resources; bd9571mwv
- DT additions/fix-ups; bd9571mwv, iqs62x, max8997, gateworks-gsc, ene-kb930
- Convert to SPDX; bd9571mw
- Fix return values/error handling; sunxi
- Provide SOFTDEP; arizona
- Make use of DIV_ROUND_UP; mcp-sa11x0
- Use generic APIs; arizona
- Add MAC address sysfs entries; intel-m10-bmc
- Trivial: Coding-style fix-ups; iqs62x
- Trivial: Remove superflouous code; iqs62x
- Clear-up naming conventions; iqs62x
- Bug Fixes
- Fix 'pointer from integer' error; altera-sysmgr
- Convert SGI_MFD_IOC3 from tristate to bool; Kconfig
- Fix interrupt handling; gateworks-gsc
- Extend required delay; iqs62x
- Do not use I2C polling during calibration; iqs62x
- Do no adjust clock frequency during calibration; iqs62x
- Fix use-after-free; wm831x-auxad
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEdrbJNaO+IJqU8IdIUa+KL4f8d2EFAmAr4agACgkQUa+KL4f8
d2GcqhAAkfGRWU7RVWlOK2NcYIDGiSU5kAJgirwIpDxkZM+kNjYITm+jt5JYBdIc
B1ShJSgc3kgcs62nTUTqkGjL6IQyI6aPsI4oF57XnN6nmIGzSQ84cCSbBn7eXUIP
wF2/4V0L+eE7i6TaZNcyZ4EltkKvo06MCs35eUATyFLB/9ZfhBCRjQlk5z4YOG6n
Mc3VJiLSpNv8PWTL+tw76RMk8mScUFaKwra8fYK4OVG/zjJ43tsADu4G6gF7FkZE
Erlp+fvFFmSR5STEri8cY0AFjHYHGWrST7lQ0HUsgM72A+TjFsy2X6WsDZzwVp+Z
Ymk0T4NAQWJ/QBu2kwws0L2EieYTtzY1DjKJV6MIiwp1OWIK+TQGV9zPgkXFq404
Rcw6LZjkEgeMJFx/4ljK5xC/y6CKGguxrXCYDVj0aeU+OcC1nnjx9KJwYWCsfwWU
0QUIPK0Fy0m2L0Jy/MeDakHtdkPzBLWOe5ybE9EmY8EV+RUorH6bEWVA6cmsJNgq
ycUlx8hK0nO+yIOMFua8Tk4+0gpcS9QrSGNoz3Iw/sZa6knX4vyvHxyebu/91qas
VwnU//s8LzpeiYu8hsjlbZsZTlP4Gnc2QhaWW757hTwykwMjhlHLAo/CZ85LVzCg
mmd1xybdMsQFAAoemp6D1HixLG/cMP5bflqCB+hZ8SUhHOiPZNU=
=ieAS
-----END PGP SIGNATURE-----
Merge tag 'mfd-next-5.12' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd
Pull MFD updates from Lee Jones:
"Core Frameworks:
- Standardise MFD_CELL_* helpers
New Drivers:
- Add support for Acer Iconia Tab A500 Embedded Controller
New Device Support:
- Add support for ROHM BD9574MWF to BD9571MWV
- Add support for Intel Alder Lake PCH-P PCI to LPSS
- Add support for Intel Alder Lake PCH-S PCI to LPSS
New Functionality:
- Support ACPI enumeration; arizona
Fix-ups:
- Managed resources; bd9571mwv
- DT additions/fix-ups; bd9571mwv, iqs62x, max8997, gateworks-gsc, ene-kb930
- Convert to SPDX; bd9571mw
- Fix return values/error handling; sunxi
- Provide SOFTDEP; arizona
- Make use of DIV_ROUND_UP; mcp-sa11x0
- Use generic APIs; arizona
- Add MAC address sysfs entries; intel-m10-bmc
- Trivial: Coding-style fix-ups; iqs62x
- Trivial: Remove superflouous code; iqs62x
- Clear-up naming conventions; iqs62x
Bug Fixes:
- Fix 'pointer from integer' error; altera-sysmgr
- Convert SGI_MFD_IOC3 from tristate to bool; Kconfig
- Fix interrupt handling; gateworks-gsc
- Extend required delay; iqs62x
- Do not use I2C polling during calibration; iqs62x
- Do no adjust clock frequency during calibration; iqs62x
- Fix use-after-free; wm831x-auxad"
* tag 'mfd-next-5.12' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd: (32 commits)
mfd: wm831x-auxadc: Prevent use after free in wm831x_auxadc_read_irq()
mfd: iqs62x: Do not change clock frequency during ATI
mfd: iqs62x: Do not poll during ATI
mfd: iqs62x: Increase interrupt handler return delay
mfd: iqs62x: Rename regmap_config struct
mfd: iqs62x: Remove unused bit mask
mfd: iqs62x: Remove superfluous whitespace above fallthroughs
mfd: intel-lpss: Add Intel Alder Lake PCH-S PCI IDs
mfd: intel-m10-bmc: Expose MAC address and count
mfd: Add driver for Embedded Controller found on Acer Iconia Tab A500
dt-bindings: mfd: Add ENE KB930 Embedded Controller binding
dt-bindings: mfd: gateworks-gsc: Add fan-tach mode
mfd: intel-lpss: Add Intel Alder Lake PCH-P PCI IDs
mfd: gateworks-gsc: Fix interrupt type
mfd: Standardise MFD_CELL_* helper names
mfd: mcp-sa11x0: Use DIV_ROUND_UP to calculate rw_timeout
mfd: max8997: Add of_compatible to Extcon and Charger mfd_cell
dt-bindings: mfd: Correct the node name of the panel LED
mfd: sgi-ioc3: Turn Kconfig option into a bool
mfd: altera-sysmgr: Fix physical address storing more
...
87 lines
2.6 KiB
C
87 lines
2.6 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/* Copyright (C) 2018 ROHM Semiconductors */
|
|
|
|
#ifndef __LINUX_MFD_ROHM_H__
|
|
#define __LINUX_MFD_ROHM_H__
|
|
|
|
#include <linux/regmap.h>
|
|
#include <linux/regulator/driver.h>
|
|
|
|
enum rohm_chip_type {
|
|
ROHM_CHIP_TYPE_BD71837 = 0,
|
|
ROHM_CHIP_TYPE_BD71847,
|
|
ROHM_CHIP_TYPE_BD70528,
|
|
ROHM_CHIP_TYPE_BD71828,
|
|
ROHM_CHIP_TYPE_BD9571,
|
|
ROHM_CHIP_TYPE_BD9574,
|
|
ROHM_CHIP_TYPE_AMOUNT
|
|
};
|
|
|
|
struct rohm_regmap_dev {
|
|
struct device *dev;
|
|
struct regmap *regmap;
|
|
};
|
|
|
|
#define ROHM_DVS_LEVEL_RUN BIT(0)
|
|
#define ROHM_DVS_LEVEL_IDLE BIT(1)
|
|
#define ROHM_DVS_LEVEL_SUSPEND BIT(2)
|
|
#define ROHM_DVS_LEVEL_LPSR BIT(3)
|
|
#define ROHM_DVS_LEVEL_VALID_AMOUNT 4
|
|
#define ROHM_DVS_LEVEL_UNKNOWN 0
|
|
|
|
/**
|
|
* struct rohm_dvs_config - dynamic voltage scaling register descriptions
|
|
*
|
|
* @level_map: bitmap representing supported run-levels for this
|
|
* regulator
|
|
* @run_reg: register address for regulator config at 'run' state
|
|
* @run_mask: value mask for regulator voltages at 'run' state
|
|
* @run_on_mask: enable mask for regulator at 'run' state
|
|
* @idle_reg: register address for regulator config at 'idle' state
|
|
* @idle_mask: value mask for regulator voltages at 'idle' state
|
|
* @idle_on_mask: enable mask for regulator at 'idle' state
|
|
* @suspend_reg: register address for regulator config at 'suspend' state
|
|
* @suspend_mask: value mask for regulator voltages at 'suspend' state
|
|
* @suspend_on_mask: enable mask for regulator at 'suspend' state
|
|
* @lpsr_reg: register address for regulator config at 'lpsr' state
|
|
* @lpsr_mask: value mask for regulator voltages at 'lpsr' state
|
|
* @lpsr_on_mask: enable mask for regulator at 'lpsr' state
|
|
*
|
|
* Description of ROHM PMICs voltage configuration registers for different
|
|
* system states. This is used to correctly configure the PMIC at startup
|
|
* based on values read from DT.
|
|
*/
|
|
struct rohm_dvs_config {
|
|
uint64_t level_map;
|
|
unsigned int run_reg;
|
|
unsigned int run_mask;
|
|
unsigned int run_on_mask;
|
|
unsigned int idle_reg;
|
|
unsigned int idle_mask;
|
|
unsigned int idle_on_mask;
|
|
unsigned int suspend_reg;
|
|
unsigned int suspend_mask;
|
|
unsigned int suspend_on_mask;
|
|
unsigned int lpsr_reg;
|
|
unsigned int lpsr_mask;
|
|
unsigned int lpsr_on_mask;
|
|
};
|
|
|
|
#if IS_ENABLED(CONFIG_REGULATOR_ROHM)
|
|
int rohm_regulator_set_dvs_levels(const struct rohm_dvs_config *dvs,
|
|
struct device_node *np,
|
|
const struct regulator_desc *desc,
|
|
struct regmap *regmap);
|
|
|
|
#else
|
|
static inline int rohm_regulator_set_dvs_levels(const struct rohm_dvs_config *dvs,
|
|
struct device_node *np,
|
|
const struct regulator_desc *desc,
|
|
struct regmap *regmap)
|
|
{
|
|
return 0;
|
|
}
|
|
#endif
|
|
|
|
#endif
|