Loading Documentation/devicetree/bindings/mfd/lp87565.txt +36 −0 Original line number Diff line number Diff line Loading @@ -41,3 +41,39 @@ lp87565_pmic: pmic@60 { }; }; }; TI LP87561 PMIC: This is a single output 4-phase regulator configuration Required properties: - compatible: "ti,lp87561-q1" - reg: I2C slave address. - gpio-controller: Marks the device node as a GPIO Controller. - #gpio-cells: Should be two. The first cell is the pin number and the second cell is used to specify flags. See ../gpio/gpio.txt for more information. - xxx-in-supply: Phandle to parent supply node of each regulator populated under regulators node. xxx should match the supply_name populated in driver. Example: lp87561_pmic: pmic@62 { compatible = "ti,lp87561-q1"; reg = <0x62>; gpio-controller; #gpio-cells = <2>; buck3210-in-supply = <&vsys_3v3>; regulators: regulators { buck3210_reg: buck3210 { /* VDD_CORE */ regulator-name = "buck3210"; regulator-min-microvolt = <800000>; regulator-max-microvolt = <800000>; regulator-always-on; regulator-boot-on; }; }; }; Documentation/devicetree/bindings/mfd/rk808.txt +44 −0 Original line number Diff line number Diff line Loading @@ -3,11 +3,15 @@ RK8XX Power Management Integrated Circuit The rk8xx family current members: rk805 rk808 rk809 rk817 rk818 Required properties: - compatible: "rockchip,rk805" - compatible: "rockchip,rk808" - compatible: "rockchip,rk809" - compatible: "rockchip,rk817" - compatible: "rockchip,rk818" - reg: I2C slave address - interrupts: the interrupt outputs of the controller. Loading Loading @@ -45,6 +49,23 @@ Optional RK808 properties: the gpio controller. If DVS GPIOs aren't present, voltage changes will happen very quickly with no slow ramp time. Optional shared RK809 and RK817 properties: - vcc1-supply: The input supply for DCDC_REG1 - vcc2-supply: The input supply for DCDC_REG2 - vcc3-supply: The input supply for DCDC_REG3 - vcc4-supply: The input supply for DCDC_REG4 - vcc5-supply: The input supply for LDO_REG1, LDO_REG2, LDO_REG3 - vcc6-supply: The input supply for LDO_REG4, LDO_REG5, LDO_REG6 - vcc7-supply: The input supply for LDO_REG7, LDO_REG8, LDO_REG9 Optional RK809 properties: - vcc8-supply: The input supply for SWITCH_REG1 - vcc9-supply: The input supply for DCDC_REG5, SWITCH_REG2 Optional RK817 properties: - vcc8-supply: The input supply for BOOST - vcc9-supply: The input supply for OTG_SWITCH Optional RK818 properties: - vcc1-supply: The input supply for DCDC_REG1 - vcc2-supply: The input supply for DCDC_REG2 Loading Loading @@ -86,6 +107,21 @@ number as described in RK808 datasheet. - SWITCH_REGn - valid values for n are 1 to 2 Following regulators of the RK809 and RK817 PMIC blocks are supported. Note that the 'n' in regulator name, as in DCDC_REGn or LDOn, represents the DCDC or LDO number as described in RK809 and RK817 datasheets. - DCDC_REGn - valid values for n are 1 to 5 for RK809. - valid values for n are 1 to 4 for RK817. - LDO_REGn - valid values for n are 1 to 9 for RK809. - valid values for n are 1 to 9 for RK817. - SWITCH_REGn - valid values for n are 1 to 2 for RK809. - BOOST for RK817 - OTG_SWITCH for RK817 Following regulators of the RK818 PMIC block are supported. Note that the 'n' in regulator name, as in DCDC_REGn or LDOn, represents the DCDC or LDO number as described in RK818 datasheet. Loading @@ -98,6 +134,14 @@ number as described in RK818 datasheet. - HDMI_SWITCH - OTG_SWITCH It is necessary to configure three pins for both the RK809 and RK817, the three pins are "gpio_ts" "gpio_gt" "gpio_slp". The gpio_gt and gpio_ts pins support the gpio function. The gpio_slp pin is for controlling the pmic states, as below: - reset - power down - sleep Standard regulator bindings are used inside regulator subnodes. Check Documentation/devicetree/bindings/regulator/regulator.txt for more details Loading drivers/clk/Kconfig +4 −5 Original line number Diff line number Diff line Loading @@ -53,13 +53,12 @@ config COMMON_CLK_MAX9485 This driver supports Maxim 9485 Programmable Audio Clock Generator config COMMON_CLK_RK808 tristate "Clock driver for RK805/RK808/RK818" tristate "Clock driver for RK805/RK808/RK809/RK817/RK818" depends on MFD_RK808 ---help--- This driver supports RK805, RK808 and RK818 crystal oscillator clock. These multi-function devices have two fixed-rate oscillators, clocked at 32KHz each. Clkout1 is always on, Clkout2 can off by control register. This driver supports RK805, RK809 and RK817, RK808 and RK818 crystal oscillator clock. These multi-function devices have two fixed-rate oscillators, clocked at 32KHz each. Clkout1 is always on, Clkout2 can off by control register. config COMMON_CLK_HI655X tristate "Clock driver for Hi655x" if EXPERT Loading drivers/clk/clk-rk808.c +63 −1 Original line number Diff line number Diff line Loading @@ -96,6 +96,68 @@ of_clk_rk808_get(struct of_phandle_args *clkspec, void *data) return idx ? &rk808_clkout->clkout2_hw : &rk808_clkout->clkout1_hw; } static int rk817_clkout2_enable(struct clk_hw *hw, bool enable) { struct rk808_clkout *rk808_clkout = container_of(hw, struct rk808_clkout, clkout2_hw); struct rk808 *rk808 = rk808_clkout->rk808; return regmap_update_bits(rk808->regmap, RK817_SYS_CFG(1), RK817_CLK32KOUT2_EN, enable ? RK817_CLK32KOUT2_EN : 0); } static int rk817_clkout2_prepare(struct clk_hw *hw) { return rk817_clkout2_enable(hw, true); } static void rk817_clkout2_unprepare(struct clk_hw *hw) { rk817_clkout2_enable(hw, false); } static int rk817_clkout2_is_prepared(struct clk_hw *hw) { struct rk808_clkout *rk808_clkout = container_of(hw, struct rk808_clkout, clkout2_hw); struct rk808 *rk808 = rk808_clkout->rk808; unsigned int val; int ret = regmap_read(rk808->regmap, RK817_SYS_CFG(1), &val); if (ret < 0) return 0; return (val & RK817_CLK32KOUT2_EN) ? 1 : 0; } static const struct clk_ops rk817_clkout2_ops = { .prepare = rk817_clkout2_prepare, .unprepare = rk817_clkout2_unprepare, .is_prepared = rk817_clkout2_is_prepared, .recalc_rate = rk808_clkout_recalc_rate, }; static const struct clk_ops *rkpmic_get_ops(long variant) { switch (variant) { case RK809_ID: case RK817_ID: return &rk817_clkout2_ops; /* * For the default case, it match the following PMIC type. * RK805_ID * RK808_ID * RK818_ID */ default: return &rk808_clkout2_ops; } } static int rk808_clkout_probe(struct platform_device *pdev) { struct rk808 *rk808 = dev_get_drvdata(pdev->dev.parent); Loading Loading @@ -127,7 +189,7 @@ static int rk808_clkout_probe(struct platform_device *pdev) return ret; init.name = "rk808-clkout2"; init.ops = &rk808_clkout2_ops; init.ops = rkpmic_get_ops(rk808->variant); rk808_clkout->clkout2_hw.init = &init; /* optional override of the clockname */ Loading drivers/mfd/Kconfig +3 −3 Original line number Diff line number Diff line Loading @@ -1030,14 +1030,14 @@ config MFD_RC5T583 different functionality of the device. config MFD_RK808 tristate "Rockchip RK805/RK808/RK818 Power Management Chip" tristate "Rockchip RK805/RK808/RK809/RK817/RK818 Power Management Chip" depends on I2C && OF select MFD_CORE select REGMAP_I2C select REGMAP_IRQ help If you say yes here you get support for the RK805, RK808 and RK818 Power Management chips. If you say yes here you get support for the RK805, RK808, RK809, RK817 and RK818 Power Management chips. This driver provides common support for accessing the device through I2C interface. The device supports multiple sub-devices including interrupts, RTC, LDO & DCDC regulators, and onkey. Loading Loading
Documentation/devicetree/bindings/mfd/lp87565.txt +36 −0 Original line number Diff line number Diff line Loading @@ -41,3 +41,39 @@ lp87565_pmic: pmic@60 { }; }; }; TI LP87561 PMIC: This is a single output 4-phase regulator configuration Required properties: - compatible: "ti,lp87561-q1" - reg: I2C slave address. - gpio-controller: Marks the device node as a GPIO Controller. - #gpio-cells: Should be two. The first cell is the pin number and the second cell is used to specify flags. See ../gpio/gpio.txt for more information. - xxx-in-supply: Phandle to parent supply node of each regulator populated under regulators node. xxx should match the supply_name populated in driver. Example: lp87561_pmic: pmic@62 { compatible = "ti,lp87561-q1"; reg = <0x62>; gpio-controller; #gpio-cells = <2>; buck3210-in-supply = <&vsys_3v3>; regulators: regulators { buck3210_reg: buck3210 { /* VDD_CORE */ regulator-name = "buck3210"; regulator-min-microvolt = <800000>; regulator-max-microvolt = <800000>; regulator-always-on; regulator-boot-on; }; }; };
Documentation/devicetree/bindings/mfd/rk808.txt +44 −0 Original line number Diff line number Diff line Loading @@ -3,11 +3,15 @@ RK8XX Power Management Integrated Circuit The rk8xx family current members: rk805 rk808 rk809 rk817 rk818 Required properties: - compatible: "rockchip,rk805" - compatible: "rockchip,rk808" - compatible: "rockchip,rk809" - compatible: "rockchip,rk817" - compatible: "rockchip,rk818" - reg: I2C slave address - interrupts: the interrupt outputs of the controller. Loading Loading @@ -45,6 +49,23 @@ Optional RK808 properties: the gpio controller. If DVS GPIOs aren't present, voltage changes will happen very quickly with no slow ramp time. Optional shared RK809 and RK817 properties: - vcc1-supply: The input supply for DCDC_REG1 - vcc2-supply: The input supply for DCDC_REG2 - vcc3-supply: The input supply for DCDC_REG3 - vcc4-supply: The input supply for DCDC_REG4 - vcc5-supply: The input supply for LDO_REG1, LDO_REG2, LDO_REG3 - vcc6-supply: The input supply for LDO_REG4, LDO_REG5, LDO_REG6 - vcc7-supply: The input supply for LDO_REG7, LDO_REG8, LDO_REG9 Optional RK809 properties: - vcc8-supply: The input supply for SWITCH_REG1 - vcc9-supply: The input supply for DCDC_REG5, SWITCH_REG2 Optional RK817 properties: - vcc8-supply: The input supply for BOOST - vcc9-supply: The input supply for OTG_SWITCH Optional RK818 properties: - vcc1-supply: The input supply for DCDC_REG1 - vcc2-supply: The input supply for DCDC_REG2 Loading Loading @@ -86,6 +107,21 @@ number as described in RK808 datasheet. - SWITCH_REGn - valid values for n are 1 to 2 Following regulators of the RK809 and RK817 PMIC blocks are supported. Note that the 'n' in regulator name, as in DCDC_REGn or LDOn, represents the DCDC or LDO number as described in RK809 and RK817 datasheets. - DCDC_REGn - valid values for n are 1 to 5 for RK809. - valid values for n are 1 to 4 for RK817. - LDO_REGn - valid values for n are 1 to 9 for RK809. - valid values for n are 1 to 9 for RK817. - SWITCH_REGn - valid values for n are 1 to 2 for RK809. - BOOST for RK817 - OTG_SWITCH for RK817 Following regulators of the RK818 PMIC block are supported. Note that the 'n' in regulator name, as in DCDC_REGn or LDOn, represents the DCDC or LDO number as described in RK818 datasheet. Loading @@ -98,6 +134,14 @@ number as described in RK818 datasheet. - HDMI_SWITCH - OTG_SWITCH It is necessary to configure three pins for both the RK809 and RK817, the three pins are "gpio_ts" "gpio_gt" "gpio_slp". The gpio_gt and gpio_ts pins support the gpio function. The gpio_slp pin is for controlling the pmic states, as below: - reset - power down - sleep Standard regulator bindings are used inside regulator subnodes. Check Documentation/devicetree/bindings/regulator/regulator.txt for more details Loading
drivers/clk/Kconfig +4 −5 Original line number Diff line number Diff line Loading @@ -53,13 +53,12 @@ config COMMON_CLK_MAX9485 This driver supports Maxim 9485 Programmable Audio Clock Generator config COMMON_CLK_RK808 tristate "Clock driver for RK805/RK808/RK818" tristate "Clock driver for RK805/RK808/RK809/RK817/RK818" depends on MFD_RK808 ---help--- This driver supports RK805, RK808 and RK818 crystal oscillator clock. These multi-function devices have two fixed-rate oscillators, clocked at 32KHz each. Clkout1 is always on, Clkout2 can off by control register. This driver supports RK805, RK809 and RK817, RK808 and RK818 crystal oscillator clock. These multi-function devices have two fixed-rate oscillators, clocked at 32KHz each. Clkout1 is always on, Clkout2 can off by control register. config COMMON_CLK_HI655X tristate "Clock driver for Hi655x" if EXPERT Loading
drivers/clk/clk-rk808.c +63 −1 Original line number Diff line number Diff line Loading @@ -96,6 +96,68 @@ of_clk_rk808_get(struct of_phandle_args *clkspec, void *data) return idx ? &rk808_clkout->clkout2_hw : &rk808_clkout->clkout1_hw; } static int rk817_clkout2_enable(struct clk_hw *hw, bool enable) { struct rk808_clkout *rk808_clkout = container_of(hw, struct rk808_clkout, clkout2_hw); struct rk808 *rk808 = rk808_clkout->rk808; return regmap_update_bits(rk808->regmap, RK817_SYS_CFG(1), RK817_CLK32KOUT2_EN, enable ? RK817_CLK32KOUT2_EN : 0); } static int rk817_clkout2_prepare(struct clk_hw *hw) { return rk817_clkout2_enable(hw, true); } static void rk817_clkout2_unprepare(struct clk_hw *hw) { rk817_clkout2_enable(hw, false); } static int rk817_clkout2_is_prepared(struct clk_hw *hw) { struct rk808_clkout *rk808_clkout = container_of(hw, struct rk808_clkout, clkout2_hw); struct rk808 *rk808 = rk808_clkout->rk808; unsigned int val; int ret = regmap_read(rk808->regmap, RK817_SYS_CFG(1), &val); if (ret < 0) return 0; return (val & RK817_CLK32KOUT2_EN) ? 1 : 0; } static const struct clk_ops rk817_clkout2_ops = { .prepare = rk817_clkout2_prepare, .unprepare = rk817_clkout2_unprepare, .is_prepared = rk817_clkout2_is_prepared, .recalc_rate = rk808_clkout_recalc_rate, }; static const struct clk_ops *rkpmic_get_ops(long variant) { switch (variant) { case RK809_ID: case RK817_ID: return &rk817_clkout2_ops; /* * For the default case, it match the following PMIC type. * RK805_ID * RK808_ID * RK818_ID */ default: return &rk808_clkout2_ops; } } static int rk808_clkout_probe(struct platform_device *pdev) { struct rk808 *rk808 = dev_get_drvdata(pdev->dev.parent); Loading Loading @@ -127,7 +189,7 @@ static int rk808_clkout_probe(struct platform_device *pdev) return ret; init.name = "rk808-clkout2"; init.ops = &rk808_clkout2_ops; init.ops = rkpmic_get_ops(rk808->variant); rk808_clkout->clkout2_hw.init = &init; /* optional override of the clockname */ Loading
drivers/mfd/Kconfig +3 −3 Original line number Diff line number Diff line Loading @@ -1030,14 +1030,14 @@ config MFD_RC5T583 different functionality of the device. config MFD_RK808 tristate "Rockchip RK805/RK808/RK818 Power Management Chip" tristate "Rockchip RK805/RK808/RK809/RK817/RK818 Power Management Chip" depends on I2C && OF select MFD_CORE select REGMAP_I2C select REGMAP_IRQ help If you say yes here you get support for the RK805, RK808 and RK818 Power Management chips. If you say yes here you get support for the RK805, RK808, RK809, RK817 and RK818 Power Management chips. This driver provides common support for accessing the device through I2C interface. The device supports multiple sub-devices including interrupts, RTC, LDO & DCDC regulators, and onkey. Loading