pmic: Convert pm8916 driver to a generic Qcom PMIC driver
Since both pm8916.c and pm8916_gpio.c are already supporting multiple Qcom SoCs, it makes sense to rename these drivers to pmic_qcom.c and qcom_pmic_gpio.c respectively. Also, these driver can be extended to support additional functionality if required for other Qcom SoCs. Along with this import latest DT binding: qcom,spmi-pmic.txt from Linux kernel and thereby remove pm8916.txt. Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
This commit is contained in:
parent
0c1eab6f75
commit
e555d4caac
@ -43,7 +43,7 @@ CONFIG_FASTBOOT_BUF_ADDR=0x91000000
|
|||||||
CONFIG_FASTBOOT_FLASH=y
|
CONFIG_FASTBOOT_FLASH=y
|
||||||
CONFIG_FASTBOOT_FLASH_MMC_DEV=0
|
CONFIG_FASTBOOT_FLASH_MMC_DEV=0
|
||||||
CONFIG_MSM_GPIO=y
|
CONFIG_MSM_GPIO=y
|
||||||
CONFIG_PM8916_GPIO=y
|
CONFIG_QCOM_PMIC_GPIO=y
|
||||||
CONFIG_LED=y
|
CONFIG_LED=y
|
||||||
CONFIG_LED_GPIO=y
|
CONFIG_LED_GPIO=y
|
||||||
CONFIG_MMC_SDHCI=y
|
CONFIG_MMC_SDHCI=y
|
||||||
@ -52,7 +52,7 @@ CONFIG_PHY=y
|
|||||||
CONFIG_PINCTRL=y
|
CONFIG_PINCTRL=y
|
||||||
CONFIG_PINCONF=y
|
CONFIG_PINCONF=y
|
||||||
CONFIG_DM_PMIC=y
|
CONFIG_DM_PMIC=y
|
||||||
CONFIG_PMIC_PM8916=y
|
CONFIG_PMIC_QCOM=y
|
||||||
CONFIG_MSM_SERIAL=y
|
CONFIG_MSM_SERIAL=y
|
||||||
CONFIG_SPMI_MSM=y
|
CONFIG_SPMI_MSM=y
|
||||||
CONFIG_USB=y
|
CONFIG_USB=y
|
||||||
|
@ -36,12 +36,12 @@ CONFIG_ENV_EXT4_INTERFACE="mmc"
|
|||||||
CONFIG_ENV_EXT4_DEVICE_AND_PART="0:1"
|
CONFIG_ENV_EXT4_DEVICE_AND_PART="0:1"
|
||||||
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
|
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
|
||||||
CONFIG_CLK=y
|
CONFIG_CLK=y
|
||||||
CONFIG_PM8916_GPIO=y
|
CONFIG_QCOM_PMIC_GPIO=y
|
||||||
CONFIG_MMC_SDHCI=y
|
CONFIG_MMC_SDHCI=y
|
||||||
CONFIG_MMC_SDHCI_MSM=y
|
CONFIG_MMC_SDHCI_MSM=y
|
||||||
CONFIG_PINCTRL=y
|
CONFIG_PINCTRL=y
|
||||||
CONFIG_PINCONF=y
|
CONFIG_PINCONF=y
|
||||||
CONFIG_DM_PMIC=y
|
CONFIG_DM_PMIC=y
|
||||||
CONFIG_PMIC_PM8916=y
|
CONFIG_PMIC_QCOM=y
|
||||||
CONFIG_MSM_SERIAL=y
|
CONFIG_MSM_SERIAL=y
|
||||||
CONFIG_SPMI_MSM=y
|
CONFIG_SPMI_MSM=y
|
||||||
|
@ -20,10 +20,10 @@ CONFIG_CMD_GPIO=y
|
|||||||
# CONFIG_NET is not set
|
# CONFIG_NET is not set
|
||||||
CONFIG_CLK=y
|
CONFIG_CLK=y
|
||||||
CONFIG_MSM_GPIO=y
|
CONFIG_MSM_GPIO=y
|
||||||
CONFIG_PM8916_GPIO=y
|
CONFIG_QCOM_PMIC_GPIO=y
|
||||||
CONFIG_PINCTRL=y
|
CONFIG_PINCTRL=y
|
||||||
CONFIG_DM_PMIC=y
|
CONFIG_DM_PMIC=y
|
||||||
CONFIG_PMIC_PM8916=y
|
CONFIG_PMIC_QCOM=y
|
||||||
CONFIG_MSM_GENI_SERIAL=y
|
CONFIG_MSM_GENI_SERIAL=y
|
||||||
CONFIG_SPMI_MSM=y
|
CONFIG_SPMI_MSM=y
|
||||||
CONFIG_LMB_MAX_REGIONS=64
|
CONFIG_LMB_MAX_REGIONS=64
|
||||||
|
@ -127,7 +127,7 @@ CONFIG_FASTBOOT_FLASH=y
|
|||||||
CONFIG_FASTBOOT_FLASH_MMC_DEV=0
|
CONFIG_FASTBOOT_FLASH_MMC_DEV=0
|
||||||
CONFIG_GPIO_HOG=y
|
CONFIG_GPIO_HOG=y
|
||||||
CONFIG_DM_GPIO_LOOKUP_LABEL=y
|
CONFIG_DM_GPIO_LOOKUP_LABEL=y
|
||||||
CONFIG_PM8916_GPIO=y
|
CONFIG_QCOM_PMIC_GPIO=y
|
||||||
CONFIG_SANDBOX_GPIO=y
|
CONFIG_SANDBOX_GPIO=y
|
||||||
CONFIG_I2C_CROS_EC_TUNNEL=y
|
CONFIG_I2C_CROS_EC_TUNNEL=y
|
||||||
CONFIG_I2C_CROS_EC_LDO=y
|
CONFIG_I2C_CROS_EC_LDO=y
|
||||||
@ -178,7 +178,7 @@ CONFIG_DM_PMIC=y
|
|||||||
CONFIG_PMIC_ACT8846=y
|
CONFIG_PMIC_ACT8846=y
|
||||||
CONFIG_DM_PMIC_PFUZE100=y
|
CONFIG_DM_PMIC_PFUZE100=y
|
||||||
CONFIG_DM_PMIC_MAX77686=y
|
CONFIG_DM_PMIC_MAX77686=y
|
||||||
CONFIG_PMIC_PM8916=y
|
CONFIG_PMIC_QCOM=y
|
||||||
CONFIG_PMIC_RK8XX=y
|
CONFIG_PMIC_RK8XX=y
|
||||||
CONFIG_PMIC_S2MPS11=y
|
CONFIG_PMIC_S2MPS11=y
|
||||||
CONFIG_DM_PMIC_SANDBOX=y
|
CONFIG_DM_PMIC_SANDBOX=y
|
||||||
|
@ -171,7 +171,7 @@ CONFIG_FASTBOOT_FLASH=y
|
|||||||
CONFIG_FASTBOOT_FLASH_MMC_DEV=0
|
CONFIG_FASTBOOT_FLASH_MMC_DEV=0
|
||||||
CONFIG_GPIO_HOG=y
|
CONFIG_GPIO_HOG=y
|
||||||
CONFIG_DM_GPIO_LOOKUP_LABEL=y
|
CONFIG_DM_GPIO_LOOKUP_LABEL=y
|
||||||
CONFIG_PM8916_GPIO=y
|
CONFIG_QCOM_PMIC_GPIO=y
|
||||||
CONFIG_SANDBOX_GPIO=y
|
CONFIG_SANDBOX_GPIO=y
|
||||||
CONFIG_DM_HWSPINLOCK=y
|
CONFIG_DM_HWSPINLOCK=y
|
||||||
CONFIG_HWSPINLOCK_SANDBOX=y
|
CONFIG_HWSPINLOCK_SANDBOX=y
|
||||||
@ -231,7 +231,7 @@ CONFIG_PMIC_ACT8846=y
|
|||||||
CONFIG_DM_PMIC_PFUZE100=y
|
CONFIG_DM_PMIC_PFUZE100=y
|
||||||
CONFIG_DM_PMIC_MAX77686=y
|
CONFIG_DM_PMIC_MAX77686=y
|
||||||
CONFIG_DM_PMIC_MC34708=y
|
CONFIG_DM_PMIC_MC34708=y
|
||||||
CONFIG_PMIC_PM8916=y
|
CONFIG_PMIC_QCOM=y
|
||||||
CONFIG_PMIC_RK8XX=y
|
CONFIG_PMIC_RK8XX=y
|
||||||
CONFIG_PMIC_S2MPS11=y
|
CONFIG_PMIC_S2MPS11=y
|
||||||
CONFIG_DM_PMIC_SANDBOX=y
|
CONFIG_DM_PMIC_SANDBOX=y
|
||||||
|
@ -100,7 +100,7 @@ CONFIG_DM_DEMO_SHAPE=y
|
|||||||
CONFIG_DFU_SF=y
|
CONFIG_DFU_SF=y
|
||||||
CONFIG_GPIO_HOG=y
|
CONFIG_GPIO_HOG=y
|
||||||
CONFIG_DM_GPIO_LOOKUP_LABEL=y
|
CONFIG_DM_GPIO_LOOKUP_LABEL=y
|
||||||
CONFIG_PM8916_GPIO=y
|
CONFIG_QCOM_PMIC_GPIO=y
|
||||||
CONFIG_SANDBOX_GPIO=y
|
CONFIG_SANDBOX_GPIO=y
|
||||||
CONFIG_I2C_CROS_EC_TUNNEL=y
|
CONFIG_I2C_CROS_EC_TUNNEL=y
|
||||||
CONFIG_I2C_CROS_EC_LDO=y
|
CONFIG_I2C_CROS_EC_LDO=y
|
||||||
@ -153,7 +153,7 @@ CONFIG_PMIC_ACT8846=y
|
|||||||
CONFIG_DM_PMIC_PFUZE100=y
|
CONFIG_DM_PMIC_PFUZE100=y
|
||||||
CONFIG_DM_PMIC_MAX77686=y
|
CONFIG_DM_PMIC_MAX77686=y
|
||||||
CONFIG_DM_PMIC_MC34708=y
|
CONFIG_DM_PMIC_MC34708=y
|
||||||
CONFIG_PMIC_PM8916=y
|
CONFIG_PMIC_QCOM=y
|
||||||
CONFIG_PMIC_S2MPS11=y
|
CONFIG_PMIC_S2MPS11=y
|
||||||
CONFIG_DM_PMIC_SANDBOX=y
|
CONFIG_DM_PMIC_SANDBOX=y
|
||||||
CONFIG_PMIC_S5M8767=y
|
CONFIG_PMIC_S5M8767=y
|
||||||
|
@ -126,7 +126,7 @@ CONFIG_DM_DEMO_SIMPLE=y
|
|||||||
CONFIG_DM_DEMO_SHAPE=y
|
CONFIG_DM_DEMO_SHAPE=y
|
||||||
CONFIG_SPL_FIRMWARE=y
|
CONFIG_SPL_FIRMWARE=y
|
||||||
CONFIG_GPIO_HOG=y
|
CONFIG_GPIO_HOG=y
|
||||||
CONFIG_PM8916_GPIO=y
|
CONFIG_QCOM_PMIC_GPIO=y
|
||||||
CONFIG_SANDBOX_GPIO=y
|
CONFIG_SANDBOX_GPIO=y
|
||||||
CONFIG_I2C_CROS_EC_TUNNEL=y
|
CONFIG_I2C_CROS_EC_TUNNEL=y
|
||||||
CONFIG_I2C_CROS_EC_LDO=y
|
CONFIG_I2C_CROS_EC_LDO=y
|
||||||
@ -176,7 +176,7 @@ CONFIG_PMIC_ACT8846=y
|
|||||||
CONFIG_DM_PMIC_PFUZE100=y
|
CONFIG_DM_PMIC_PFUZE100=y
|
||||||
CONFIG_DM_PMIC_MAX77686=y
|
CONFIG_DM_PMIC_MAX77686=y
|
||||||
CONFIG_DM_PMIC_MC34708=y
|
CONFIG_DM_PMIC_MC34708=y
|
||||||
CONFIG_PMIC_PM8916=y
|
CONFIG_PMIC_QCOM=y
|
||||||
CONFIG_PMIC_RK8XX=y
|
CONFIG_PMIC_RK8XX=y
|
||||||
CONFIG_PMIC_S2MPS11=y
|
CONFIG_PMIC_S2MPS11=y
|
||||||
CONFIG_DM_PMIC_SANDBOX=y
|
CONFIG_DM_PMIC_SANDBOX=y
|
||||||
|
@ -127,7 +127,7 @@ CONFIG_DM_DEMO_SIMPLE=y
|
|||||||
CONFIG_DM_DEMO_SHAPE=y
|
CONFIG_DM_DEMO_SHAPE=y
|
||||||
CONFIG_SPL_FIRMWARE=y
|
CONFIG_SPL_FIRMWARE=y
|
||||||
CONFIG_GPIO_HOG=y
|
CONFIG_GPIO_HOG=y
|
||||||
CONFIG_PM8916_GPIO=y
|
CONFIG_QCOM_PMIC_GPIO=y
|
||||||
CONFIG_SANDBOX_GPIO=y
|
CONFIG_SANDBOX_GPIO=y
|
||||||
CONFIG_I2C_CROS_EC_TUNNEL=y
|
CONFIG_I2C_CROS_EC_TUNNEL=y
|
||||||
CONFIG_I2C_CROS_EC_LDO=y
|
CONFIG_I2C_CROS_EC_LDO=y
|
||||||
@ -179,7 +179,7 @@ CONFIG_PMIC_ACT8846=y
|
|||||||
CONFIG_DM_PMIC_PFUZE100=y
|
CONFIG_DM_PMIC_PFUZE100=y
|
||||||
CONFIG_DM_PMIC_MAX77686=y
|
CONFIG_DM_PMIC_MAX77686=y
|
||||||
CONFIG_DM_PMIC_MC34708=y
|
CONFIG_DM_PMIC_MC34708=y
|
||||||
CONFIG_PMIC_PM8916=y
|
CONFIG_PMIC_QCOM=y
|
||||||
CONFIG_PMIC_RK8XX=y
|
CONFIG_PMIC_RK8XX=y
|
||||||
CONFIG_PMIC_S2MPS11=y
|
CONFIG_PMIC_S2MPS11=y
|
||||||
CONFIG_DM_PMIC_SANDBOX=y
|
CONFIG_DM_PMIC_SANDBOX=y
|
||||||
|
@ -136,7 +136,7 @@ CONFIG_DM_DEMO_SIMPLE=y
|
|||||||
CONFIG_DM_DEMO_SHAPE=y
|
CONFIG_DM_DEMO_SHAPE=y
|
||||||
CONFIG_SPL_FIRMWARE=y
|
CONFIG_SPL_FIRMWARE=y
|
||||||
CONFIG_GPIO_HOG=y
|
CONFIG_GPIO_HOG=y
|
||||||
CONFIG_PM8916_GPIO=y
|
CONFIG_QCOM_PMIC_GPIO=y
|
||||||
CONFIG_SANDBOX_GPIO=y
|
CONFIG_SANDBOX_GPIO=y
|
||||||
CONFIG_I2C_CROS_EC_TUNNEL=y
|
CONFIG_I2C_CROS_EC_TUNNEL=y
|
||||||
CONFIG_I2C_CROS_EC_LDO=y
|
CONFIG_I2C_CROS_EC_LDO=y
|
||||||
@ -184,7 +184,7 @@ CONFIG_PMIC_ACT8846=y
|
|||||||
CONFIG_DM_PMIC_PFUZE100=y
|
CONFIG_DM_PMIC_PFUZE100=y
|
||||||
CONFIG_DM_PMIC_MAX77686=y
|
CONFIG_DM_PMIC_MAX77686=y
|
||||||
CONFIG_DM_PMIC_MC34708=y
|
CONFIG_DM_PMIC_MC34708=y
|
||||||
CONFIG_PMIC_PM8916=y
|
CONFIG_PMIC_QCOM=y
|
||||||
CONFIG_PMIC_RK8XX=y
|
CONFIG_PMIC_RK8XX=y
|
||||||
CONFIG_PMIC_S2MPS11=y
|
CONFIG_PMIC_S2MPS11=y
|
||||||
CONFIG_DM_PMIC_SANDBOX=y
|
CONFIG_DM_PMIC_SANDBOX=y
|
||||||
|
@ -23,10 +23,10 @@ CONFIG_CMD_BMP=y
|
|||||||
# CONFIG_DM_STDIO is not set
|
# CONFIG_DM_STDIO is not set
|
||||||
CONFIG_CLK=y
|
CONFIG_CLK=y
|
||||||
CONFIG_MSM_GPIO=y
|
CONFIG_MSM_GPIO=y
|
||||||
CONFIG_PM8916_GPIO=y
|
CONFIG_QCOM_PMIC_GPIO=y
|
||||||
CONFIG_PINCTRL=y
|
CONFIG_PINCTRL=y
|
||||||
CONFIG_DM_PMIC=y
|
CONFIG_DM_PMIC=y
|
||||||
CONFIG_PMIC_PM8916=y
|
CONFIG_PMIC_QCOM=y
|
||||||
# CONFIG_REQUIRE_SERIAL_CONSOLE is not set
|
# CONFIG_REQUIRE_SERIAL_CONSOLE is not set
|
||||||
CONFIG_SPMI_MSM=y
|
CONFIG_SPMI_MSM=y
|
||||||
CONFIG_DM_VIDEO=y
|
CONFIG_DM_VIDEO=y
|
||||||
|
@ -1,18 +0,0 @@
|
|||||||
Qualcomm pm8916 PMIC
|
|
||||||
|
|
||||||
This PMIC is connected using SPMI bus so should be child of SPMI bus controller.
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
- compatible: "qcom,spmi-pmic";
|
|
||||||
- reg: SPMI Slave ID, size (ignored)
|
|
||||||
- #address-cells: 0x1 (peripheral ID)
|
|
||||||
- #size-cells: 0x1 (size of peripheral register space)
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
pm8916@0 {
|
|
||||||
compatible = "qcom,spmi-pmic";
|
|
||||||
reg = <0x0 0x1>;
|
|
||||||
#address-cells = <0x1>;
|
|
||||||
#size-cells = <0x1>;
|
|
||||||
};
|
|
94
doc/device-tree-bindings/pmic/qcom,spmi-pmic.txt
Normal file
94
doc/device-tree-bindings/pmic/qcom,spmi-pmic.txt
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
Qualcomm SPMI PMICs multi-function device bindings
|
||||||
|
|
||||||
|
The Qualcomm SPMI series presently includes PM8941, PM8841 and PMA8084
|
||||||
|
PMICs. These PMICs use a QPNP scheme through SPMI interface.
|
||||||
|
QPNP is effectively a partitioning scheme for dividing the SPMI extended
|
||||||
|
register space up into logical pieces, and set of fixed register
|
||||||
|
locations/definitions within these regions, with some of these regions
|
||||||
|
specifically used for interrupt handling.
|
||||||
|
|
||||||
|
The QPNP PMICs are used with the Qualcomm Snapdragon series SoCs, and are
|
||||||
|
interfaced to the chip via the SPMI (System Power Management Interface) bus.
|
||||||
|
Support for multiple independent functions are implemented by splitting the
|
||||||
|
16-bit SPMI slave address space into 256 smaller fixed-size regions, 256 bytes
|
||||||
|
each. A function can consume one or more of these fixed-size register regions.
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible: Should contain one of:
|
||||||
|
"qcom,pm660",
|
||||||
|
"qcom,pm660l",
|
||||||
|
"qcom,pm7325",
|
||||||
|
"qcom,pm8004",
|
||||||
|
"qcom,pm8005",
|
||||||
|
"qcom,pm8019",
|
||||||
|
"qcom,pm8028",
|
||||||
|
"qcom,pm8110",
|
||||||
|
"qcom,pm8150",
|
||||||
|
"qcom,pm8150b",
|
||||||
|
"qcom,pm8150c",
|
||||||
|
"qcom,pm8150l",
|
||||||
|
"qcom,pm8226",
|
||||||
|
"qcom,pm8350c",
|
||||||
|
"qcom,pm8841",
|
||||||
|
"qcom,pm8901",
|
||||||
|
"qcom,pm8909",
|
||||||
|
"qcom,pm8916",
|
||||||
|
"qcom,pm8941",
|
||||||
|
"qcom,pm8950",
|
||||||
|
"qcom,pm8953",
|
||||||
|
"qcom,pm8994",
|
||||||
|
"qcom,pm8998",
|
||||||
|
"qcom,pma8084",
|
||||||
|
"qcom,pmd9635",
|
||||||
|
"qcom,pmi8950",
|
||||||
|
"qcom,pmi8962",
|
||||||
|
"qcom,pmi8994",
|
||||||
|
"qcom,pmi8998",
|
||||||
|
"qcom,pmk8002",
|
||||||
|
"qcom,pmk8350",
|
||||||
|
"qcom,pmr735a",
|
||||||
|
"qcom,smb2351",
|
||||||
|
or generalized "qcom,spmi-pmic".
|
||||||
|
- reg: Specifies the SPMI USID slave address for this device.
|
||||||
|
For more information see:
|
||||||
|
Documentation/devicetree/bindings/spmi/spmi.yaml
|
||||||
|
|
||||||
|
Required properties for peripheral child nodes:
|
||||||
|
- compatible: Should contain "qcom,xxx", where "xxx" is a peripheral name.
|
||||||
|
|
||||||
|
Optional properties for peripheral child nodes:
|
||||||
|
- interrupts: Interrupts are specified as a 4-tuple. For more information
|
||||||
|
see:
|
||||||
|
Documentation/devicetree/bindings/spmi/qcom,spmi-pmic-arb.yaml
|
||||||
|
- interrupt-names: Corresponding interrupt name to the interrupts property
|
||||||
|
|
||||||
|
Each child node of SPMI slave id represents a function of the PMIC. In the
|
||||||
|
example below the rtc device node represents a peripheral of pm8941
|
||||||
|
SID = 0. The regulator device node represents a peripheral of pm8941 SID = 1.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
spmi {
|
||||||
|
compatible = "qcom,spmi-pmic-arb";
|
||||||
|
|
||||||
|
pm8941@0 {
|
||||||
|
compatible = "qcom,pm8941", "qcom,spmi-pmic";
|
||||||
|
reg = <0x0 SPMI_USID>;
|
||||||
|
|
||||||
|
rtc {
|
||||||
|
compatible = "qcom,rtc";
|
||||||
|
interrupts = <0x0 0x61 0x1 IRQ_TYPE_EDGE_RISING>;
|
||||||
|
interrupt-names = "alarm";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
pm8941@1 {
|
||||||
|
compatible = "qcom,pm8941", "qcom,spmi-pmic";
|
||||||
|
reg = <0x1 SPMI_USID>;
|
||||||
|
|
||||||
|
regulator {
|
||||||
|
compatible = "qcom,regulator";
|
||||||
|
regulator-name = "8941_boost";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
@ -303,14 +303,14 @@ config CMD_PCA953X
|
|||||||
legacy GPIO interface. Several subcommands are provided which mirror
|
legacy GPIO interface. Several subcommands are provided which mirror
|
||||||
the standard 'gpio' command. It should use that instead.
|
the standard 'gpio' command. It should use that instead.
|
||||||
|
|
||||||
config PM8916_GPIO
|
config QCOM_PMIC_GPIO
|
||||||
bool "Qualcomm PM8916 PMIC GPIO/keypad driver"
|
bool "Qualcomm generic PMIC GPIO/keypad driver"
|
||||||
depends on DM_GPIO && PMIC_PM8916
|
depends on DM_GPIO && PMIC_QCOM
|
||||||
help
|
help
|
||||||
Support for GPIO pins and power/reset buttons found on
|
Support for GPIO pins and power/reset buttons found on
|
||||||
Qualcomm PM8916 PMIC.
|
Qualcomm SoCs PMIC.
|
||||||
Default name for GPIO bank is "pm8916".
|
Default name for GPIO bank is "pm8916".
|
||||||
Power and reset buttons are placed in "pm8916_key" bank and
|
Power and reset buttons are placed in "pwkey_qcom" bank and
|
||||||
have gpio numbers 0 and 1 respectively.
|
have gpio numbers 0 and 1 respectively.
|
||||||
|
|
||||||
config PCF8575_GPIO
|
config PCF8575_GPIO
|
||||||
|
@ -63,7 +63,7 @@ obj-$(CONFIG_OCTEON_GPIO) += octeon_gpio.o
|
|||||||
obj-$(CONFIG_MVEBU_GPIO) += mvebu_gpio.o
|
obj-$(CONFIG_MVEBU_GPIO) += mvebu_gpio.o
|
||||||
obj-$(CONFIG_MSM_GPIO) += msm_gpio.o
|
obj-$(CONFIG_MSM_GPIO) += msm_gpio.o
|
||||||
obj-$(CONFIG_$(SPL_)PCF8575_GPIO) += pcf8575_gpio.o
|
obj-$(CONFIG_$(SPL_)PCF8575_GPIO) += pcf8575_gpio.o
|
||||||
obj-$(CONFIG_$(SPL_TPL_)PM8916_GPIO) += pm8916_gpio.o
|
obj-$(CONFIG_$(SPL_TPL_)QCOM_PMIC_GPIO) += qcom_pmic_gpio.o
|
||||||
obj-$(CONFIG_MT7620_GPIO) += mt7620_gpio.o
|
obj-$(CONFIG_MT7620_GPIO) += mt7620_gpio.o
|
||||||
obj-$(CONFIG_MT7621_GPIO) += mt7621_gpio.o
|
obj-$(CONFIG_MT7621_GPIO) += mt7621_gpio.o
|
||||||
obj-$(CONFIG_MSCC_SGPIO) += mscc_sgpio.o
|
obj-$(CONFIG_MSCC_SGPIO) += mscc_sgpio.o
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0+
|
// SPDX-License-Identifier: GPL-2.0+
|
||||||
/*
|
/*
|
||||||
* Qualcomm pm8916 pmic gpio driver - part of Qualcomm PM8916 PMIC
|
* Qualcomm generic pmic gpio driver
|
||||||
*
|
*
|
||||||
* (C) Copyright 2015 Mateusz Kulikowski <mateusz.kulikowski@gmail.com>
|
* (C) Copyright 2015 Mateusz Kulikowski <mateusz.kulikowski@gmail.com>
|
||||||
*/
|
*/
|
||||||
@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
/* Register maps */
|
/* Register maps */
|
||||||
|
|
||||||
/* Type and subtype are shared for all pm8916 peripherals */
|
/* Type and subtype are shared for all PMIC peripherals */
|
||||||
#define REG_TYPE 0x4
|
#define REG_TYPE 0x4
|
||||||
#define REG_SUBTYPE 0x5
|
#define REG_SUBTYPE 0x5
|
||||||
|
|
||||||
@ -47,14 +47,14 @@
|
|||||||
#define REG_EN_CTL 0x46
|
#define REG_EN_CTL 0x46
|
||||||
#define REG_EN_CTL_ENABLE (1 << 7)
|
#define REG_EN_CTL_ENABLE (1 << 7)
|
||||||
|
|
||||||
struct pm8916_gpio_bank {
|
struct qcom_gpio_bank {
|
||||||
uint32_t pid; /* Peripheral ID on SPMI bus */
|
uint32_t pid; /* Peripheral ID on SPMI bus */
|
||||||
};
|
};
|
||||||
|
|
||||||
static int pm8916_gpio_set_direction(struct udevice *dev, unsigned offset,
|
static int qcom_gpio_set_direction(struct udevice *dev, unsigned offset,
|
||||||
bool input, int value)
|
bool input, int value)
|
||||||
{
|
{
|
||||||
struct pm8916_gpio_bank *priv = dev_get_priv(dev);
|
struct qcom_gpio_bank *priv = dev_get_priv(dev);
|
||||||
uint32_t gpio_base = priv->pid + REG_OFFSET(offset);
|
uint32_t gpio_base = priv->pid + REG_OFFSET(offset);
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@ -101,20 +101,20 @@ static int pm8916_gpio_set_direction(struct udevice *dev, unsigned offset,
|
|||||||
REG_EN_CTL_ENABLE);
|
REG_EN_CTL_ENABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pm8916_gpio_direction_input(struct udevice *dev, unsigned offset)
|
static int qcom_gpio_direction_input(struct udevice *dev, unsigned offset)
|
||||||
{
|
{
|
||||||
return pm8916_gpio_set_direction(dev, offset, true, 0);
|
return qcom_gpio_set_direction(dev, offset, true, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pm8916_gpio_direction_output(struct udevice *dev, unsigned offset,
|
static int qcom_gpio_direction_output(struct udevice *dev, unsigned offset,
|
||||||
int value)
|
int value)
|
||||||
{
|
{
|
||||||
return pm8916_gpio_set_direction(dev, offset, false, value);
|
return qcom_gpio_set_direction(dev, offset, false, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pm8916_gpio_get_function(struct udevice *dev, unsigned offset)
|
static int qcom_gpio_get_function(struct udevice *dev, unsigned offset)
|
||||||
{
|
{
|
||||||
struct pm8916_gpio_bank *priv = dev_get_priv(dev);
|
struct qcom_gpio_bank *priv = dev_get_priv(dev);
|
||||||
uint32_t gpio_base = priv->pid + REG_OFFSET(offset);
|
uint32_t gpio_base = priv->pid + REG_OFFSET(offset);
|
||||||
int reg;
|
int reg;
|
||||||
|
|
||||||
@ -134,9 +134,9 @@ static int pm8916_gpio_get_function(struct udevice *dev, unsigned offset)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pm8916_gpio_get_value(struct udevice *dev, unsigned offset)
|
static int qcom_gpio_get_value(struct udevice *dev, unsigned offset)
|
||||||
{
|
{
|
||||||
struct pm8916_gpio_bank *priv = dev_get_priv(dev);
|
struct qcom_gpio_bank *priv = dev_get_priv(dev);
|
||||||
uint32_t gpio_base = priv->pid + REG_OFFSET(offset);
|
uint32_t gpio_base = priv->pid + REG_OFFSET(offset);
|
||||||
int reg;
|
int reg;
|
||||||
|
|
||||||
@ -147,10 +147,10 @@ static int pm8916_gpio_get_value(struct udevice *dev, unsigned offset)
|
|||||||
return !!(reg & REG_STATUS_VAL_MASK);
|
return !!(reg & REG_STATUS_VAL_MASK);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pm8916_gpio_set_value(struct udevice *dev, unsigned offset,
|
static int qcom_gpio_set_value(struct udevice *dev, unsigned offset,
|
||||||
int value)
|
int value)
|
||||||
{
|
{
|
||||||
struct pm8916_gpio_bank *priv = dev_get_priv(dev);
|
struct qcom_gpio_bank *priv = dev_get_priv(dev);
|
||||||
uint32_t gpio_base = priv->pid + REG_OFFSET(offset);
|
uint32_t gpio_base = priv->pid + REG_OFFSET(offset);
|
||||||
|
|
||||||
/* Set the output value of the gpio */
|
/* Set the output value of the gpio */
|
||||||
@ -158,17 +158,17 @@ static int pm8916_gpio_set_value(struct udevice *dev, unsigned offset,
|
|||||||
REG_CTL_OUTPUT_MASK, !!value);
|
REG_CTL_OUTPUT_MASK, !!value);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct dm_gpio_ops pm8916_gpio_ops = {
|
static const struct dm_gpio_ops qcom_gpio_ops = {
|
||||||
.direction_input = pm8916_gpio_direction_input,
|
.direction_input = qcom_gpio_direction_input,
|
||||||
.direction_output = pm8916_gpio_direction_output,
|
.direction_output = qcom_gpio_direction_output,
|
||||||
.get_value = pm8916_gpio_get_value,
|
.get_value = qcom_gpio_get_value,
|
||||||
.set_value = pm8916_gpio_set_value,
|
.set_value = qcom_gpio_set_value,
|
||||||
.get_function = pm8916_gpio_get_function,
|
.get_function = qcom_gpio_get_function,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int pm8916_gpio_probe(struct udevice *dev)
|
static int qcom_gpio_probe(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct pm8916_gpio_bank *priv = dev_get_priv(dev);
|
struct qcom_gpio_bank *priv = dev_get_priv(dev);
|
||||||
int reg;
|
int reg;
|
||||||
|
|
||||||
priv->pid = dev_read_addr(dev);
|
priv->pid = dev_read_addr(dev);
|
||||||
@ -187,33 +187,33 @@ static int pm8916_gpio_probe(struct udevice *dev)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pm8916_gpio_of_to_plat(struct udevice *dev)
|
static int qcom_gpio_of_to_plat(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
|
struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
|
||||||
|
|
||||||
uc_priv->gpio_count = dev_read_u32_default(dev, "gpio-count", 0);
|
uc_priv->gpio_count = dev_read_u32_default(dev, "gpio-count", 0);
|
||||||
uc_priv->bank_name = dev_read_string(dev, "gpio-bank-name");
|
uc_priv->bank_name = dev_read_string(dev, "gpio-bank-name");
|
||||||
if (uc_priv->bank_name == NULL)
|
if (uc_priv->bank_name == NULL)
|
||||||
uc_priv->bank_name = "pm8916";
|
uc_priv->bank_name = "qcom_pmic";
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct udevice_id pm8916_gpio_ids[] = {
|
static const struct udevice_id qcom_gpio_ids[] = {
|
||||||
{ .compatible = "qcom,pm8916-gpio" },
|
{ .compatible = "qcom,pm8916-gpio" },
|
||||||
{ .compatible = "qcom,pm8994-gpio" }, /* 22 GPIO's */
|
{ .compatible = "qcom,pm8994-gpio" }, /* 22 GPIO's */
|
||||||
{ .compatible = "qcom,pm8998-gpio" },
|
{ .compatible = "qcom,pm8998-gpio" },
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
||||||
U_BOOT_DRIVER(gpio_pm8916) = {
|
U_BOOT_DRIVER(qcom_pmic_gpio) = {
|
||||||
.name = "gpio_pm8916",
|
.name = "qcom_pmic_gpio",
|
||||||
.id = UCLASS_GPIO,
|
.id = UCLASS_GPIO,
|
||||||
.of_match = pm8916_gpio_ids,
|
.of_match = qcom_gpio_ids,
|
||||||
.of_to_plat = pm8916_gpio_of_to_plat,
|
.of_to_plat = qcom_gpio_of_to_plat,
|
||||||
.probe = pm8916_gpio_probe,
|
.probe = qcom_gpio_probe,
|
||||||
.ops = &pm8916_gpio_ops,
|
.ops = &qcom_gpio_ops,
|
||||||
.priv_auto = sizeof(struct pm8916_gpio_bank),
|
.priv_auto = sizeof(struct qcom_gpio_bank),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -222,14 +222,14 @@ U_BOOT_DRIVER(gpio_pm8916) = {
|
|||||||
#define KPDPWR_ON_INT_BIT 0
|
#define KPDPWR_ON_INT_BIT 0
|
||||||
#define RESIN_ON_INT_BIT 1
|
#define RESIN_ON_INT_BIT 1
|
||||||
|
|
||||||
static int pm8941_pwrkey_get_function(struct udevice *dev, unsigned offset)
|
static int qcom_pwrkey_get_function(struct udevice *dev, unsigned offset)
|
||||||
{
|
{
|
||||||
return GPIOF_INPUT;
|
return GPIOF_INPUT;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pm8941_pwrkey_get_value(struct udevice *dev, unsigned offset)
|
static int qcom_pwrkey_get_value(struct udevice *dev, unsigned offset)
|
||||||
{
|
{
|
||||||
struct pm8916_gpio_bank *priv = dev_get_priv(dev);
|
struct qcom_gpio_bank *priv = dev_get_priv(dev);
|
||||||
|
|
||||||
int reg = pmic_reg_read(dev->parent, priv->pid + PON_INT_RT_STS);
|
int reg = pmic_reg_read(dev->parent, priv->pid + PON_INT_RT_STS);
|
||||||
|
|
||||||
@ -247,14 +247,14 @@ static int pm8941_pwrkey_get_value(struct udevice *dev, unsigned offset)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct dm_gpio_ops pm8941_pwrkey_ops = {
|
static const struct dm_gpio_ops qcom_pwrkey_ops = {
|
||||||
.get_value = pm8941_pwrkey_get_value,
|
.get_value = qcom_pwrkey_get_value,
|
||||||
.get_function = pm8941_pwrkey_get_function,
|
.get_function = qcom_pwrkey_get_function,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int pm8941_pwrkey_probe(struct udevice *dev)
|
static int qcom_pwrkey_probe(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct pm8916_gpio_bank *priv = dev_get_priv(dev);
|
struct qcom_gpio_bank *priv = dev_get_priv(dev);
|
||||||
int reg;
|
int reg;
|
||||||
|
|
||||||
priv->pid = dev_read_addr(dev);
|
priv->pid = dev_read_addr(dev);
|
||||||
@ -273,31 +273,31 @@ static int pm8941_pwrkey_probe(struct udevice *dev)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pm8941_pwrkey_of_to_plat(struct udevice *dev)
|
static int qcom_pwrkey_of_to_plat(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
|
struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
|
||||||
|
|
||||||
uc_priv->gpio_count = 2;
|
uc_priv->gpio_count = 2;
|
||||||
uc_priv->bank_name = dev_read_string(dev, "gpio-bank-name");
|
uc_priv->bank_name = dev_read_string(dev, "gpio-bank-name");
|
||||||
if (uc_priv->bank_name == NULL)
|
if (uc_priv->bank_name == NULL)
|
||||||
uc_priv->bank_name = "pm8916_key";
|
uc_priv->bank_name = "pwkey_qcom";
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct udevice_id pm8941_pwrkey_ids[] = {
|
static const struct udevice_id qcom_pwrkey_ids[] = {
|
||||||
{ .compatible = "qcom,pm8916-pwrkey" },
|
{ .compatible = "qcom,pm8916-pwrkey" },
|
||||||
{ .compatible = "qcom,pm8994-pwrkey" },
|
{ .compatible = "qcom,pm8994-pwrkey" },
|
||||||
{ .compatible = "qcom,pm8998-pwrkey" },
|
{ .compatible = "qcom,pm8998-pwrkey" },
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
||||||
U_BOOT_DRIVER(pwrkey_pm89xx) = {
|
U_BOOT_DRIVER(pwrkey_qcom) = {
|
||||||
.name = "pwrkey_pm89xx",
|
.name = "pwrkey_qcom",
|
||||||
.id = UCLASS_GPIO,
|
.id = UCLASS_GPIO,
|
||||||
.of_match = pm8941_pwrkey_ids,
|
.of_match = qcom_pwrkey_ids,
|
||||||
.of_to_plat = pm8941_pwrkey_of_to_plat,
|
.of_to_plat = qcom_pwrkey_of_to_plat,
|
||||||
.probe = pm8941_pwrkey_probe,
|
.probe = qcom_pwrkey_probe,
|
||||||
.ops = &pm8941_pwrkey_ops,
|
.ops = &qcom_pwrkey_ops,
|
||||||
.priv_auto = sizeof(struct pm8916_gpio_bank),
|
.priv_auto = sizeof(struct qcom_gpio_bank),
|
||||||
};
|
};
|
@ -216,10 +216,10 @@ config PMIC_MAX8997
|
|||||||
- MUIC
|
- MUIC
|
||||||
- Others
|
- Others
|
||||||
|
|
||||||
config PMIC_PM8916
|
config PMIC_QCOM
|
||||||
bool "Enable Driver Model for Qualcomm PM8916 PMIC"
|
bool "Enable Driver Model for Qualcomm generic PMIC"
|
||||||
---help---
|
---help---
|
||||||
The PM8916 is a PMIC connected to one (or several) processors
|
The Qcom PMIC is connected to one (or several) processors
|
||||||
with SPMI bus. It has 2 slaves with several peripherals:
|
with SPMI bus. It has 2 slaves with several peripherals:
|
||||||
- 18x LDO
|
- 18x LDO
|
||||||
- 4x GPIO
|
- 4x GPIO
|
||||||
@ -229,7 +229,7 @@ config PMIC_PM8916
|
|||||||
- Vibrator drivers
|
- Vibrator drivers
|
||||||
- Others
|
- Others
|
||||||
|
|
||||||
Driver binding info: doc/device-tree-bindings/pmic/pm8916.txt
|
Driver binding info: doc/device-tree-bindings/pmic/qcom,spmi-pmic.txt
|
||||||
|
|
||||||
config PMIC_RK8XX
|
config PMIC_RK8XX
|
||||||
bool "Enable support for Rockchip PMIC RK8XX"
|
bool "Enable support for Rockchip PMIC RK8XX"
|
||||||
|
@ -20,7 +20,7 @@ obj-$(CONFIG_PMIC_ACT8846) += act8846.o
|
|||||||
obj-$(CONFIG_PMIC_AS3722) += as3722.o as3722_gpio.o
|
obj-$(CONFIG_PMIC_AS3722) += as3722.o as3722_gpio.o
|
||||||
obj-$(CONFIG_$(SPL_)PMIC_AXP) += axp.o
|
obj-$(CONFIG_$(SPL_)PMIC_AXP) += axp.o
|
||||||
obj-$(CONFIG_PMIC_MAX8997) += max8997.o
|
obj-$(CONFIG_PMIC_MAX8997) += max8997.o
|
||||||
obj-$(CONFIG_PMIC_PM8916) += pm8916.o
|
obj-$(CONFIG_PMIC_QCOM) += pmic_qcom.o
|
||||||
obj-$(CONFIG_$(SPL_TPL_)PMIC_RK8XX) += rk8xx.o
|
obj-$(CONFIG_$(SPL_TPL_)PMIC_RK8XX) += rk8xx.o
|
||||||
obj-$(CONFIG_PMIC_RN5T567) += rn5t567.o
|
obj-$(CONFIG_PMIC_RN5T567) += rn5t567.o
|
||||||
obj-$(CONFIG_PMIC_TPS65090) += tps65090.o
|
obj-$(CONFIG_PMIC_TPS65090) += tps65090.o
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0+
|
// SPDX-License-Identifier: GPL-2.0+
|
||||||
/*
|
/*
|
||||||
* Qualcomm pm8916 pmic driver
|
* Qualcomm generic pmic driver
|
||||||
*
|
*
|
||||||
* (C) Copyright 2015 Mateusz Kulikowski <mateusz.kulikowski@gmail.com>
|
* (C) Copyright 2015 Mateusz Kulikowski <mateusz.kulikowski@gmail.com>
|
||||||
*/
|
*/
|
||||||
@ -13,19 +13,19 @@
|
|||||||
#define PID_MASK (0xFF << PID_SHIFT)
|
#define PID_MASK (0xFF << PID_SHIFT)
|
||||||
#define REG_MASK 0xFF
|
#define REG_MASK 0xFF
|
||||||
|
|
||||||
struct pm8916_priv {
|
struct pmic_qcom_priv {
|
||||||
uint32_t usid; /* Slave ID on SPMI bus */
|
uint32_t usid; /* Slave ID on SPMI bus */
|
||||||
};
|
};
|
||||||
|
|
||||||
static int pm8916_reg_count(struct udevice *dev)
|
static int pmic_qcom_reg_count(struct udevice *dev)
|
||||||
{
|
{
|
||||||
return 0xFFFF;
|
return 0xFFFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pm8916_write(struct udevice *dev, uint reg, const uint8_t *buff,
|
static int pmic_qcom_write(struct udevice *dev, uint reg, const uint8_t *buff,
|
||||||
int len)
|
int len)
|
||||||
{
|
{
|
||||||
struct pm8916_priv *priv = dev_get_priv(dev);
|
struct pmic_qcom_priv *priv = dev_get_priv(dev);
|
||||||
|
|
||||||
if (len != 1)
|
if (len != 1)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@ -35,9 +35,9 @@ static int pm8916_write(struct udevice *dev, uint reg, const uint8_t *buff,
|
|||||||
*buff);
|
*buff);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pm8916_read(struct udevice *dev, uint reg, uint8_t *buff, int len)
|
static int pmic_qcom_read(struct udevice *dev, uint reg, uint8_t *buff, int len)
|
||||||
{
|
{
|
||||||
struct pm8916_priv *priv = dev_get_priv(dev);
|
struct pmic_qcom_priv *priv = dev_get_priv(dev);
|
||||||
int val;
|
int val;
|
||||||
|
|
||||||
if (len != 1)
|
if (len != 1)
|
||||||
@ -52,20 +52,20 @@ static int pm8916_read(struct udevice *dev, uint reg, uint8_t *buff, int len)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct dm_pmic_ops pm8916_ops = {
|
static struct dm_pmic_ops pmic_qcom_ops = {
|
||||||
.reg_count = pm8916_reg_count,
|
.reg_count = pmic_qcom_reg_count,
|
||||||
.read = pm8916_read,
|
.read = pmic_qcom_read,
|
||||||
.write = pm8916_write,
|
.write = pmic_qcom_write,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct udevice_id pm8916_ids[] = {
|
static const struct udevice_id pmic_qcom_ids[] = {
|
||||||
{ .compatible = "qcom,spmi-pmic" },
|
{ .compatible = "qcom,spmi-pmic" },
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
||||||
static int pm8916_probe(struct udevice *dev)
|
static int pmic_qcom_probe(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct pm8916_priv *priv = dev_get_priv(dev);
|
struct pmic_qcom_priv *priv = dev_get_priv(dev);
|
||||||
|
|
||||||
priv->usid = dev_read_addr(dev);
|
priv->usid = dev_read_addr(dev);
|
||||||
|
|
||||||
@ -75,12 +75,12 @@ static int pm8916_probe(struct udevice *dev)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
U_BOOT_DRIVER(pmic_pm8916) = {
|
U_BOOT_DRIVER(pmic_qcom) = {
|
||||||
.name = "pmic_pm8916",
|
.name = "pmic_qcom",
|
||||||
.id = UCLASS_PMIC,
|
.id = UCLASS_PMIC,
|
||||||
.of_match = pm8916_ids,
|
.of_match = pmic_qcom_ids,
|
||||||
.bind = dm_scan_fdt_dev,
|
.bind = dm_scan_fdt_dev,
|
||||||
.probe = pm8916_probe,
|
.probe = pmic_qcom_probe,
|
||||||
.ops = &pm8916_ops,
|
.ops = &pmic_qcom_ops,
|
||||||
.priv_auto = sizeof(struct pm8916_priv),
|
.priv_auto = sizeof(struct pmic_qcom_priv),
|
||||||
};
|
};
|
Loading…
Reference in New Issue
Block a user