Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8e23cee8 authored by Lee Jones's avatar Lee Jones
Browse files

Merge branches 'ib-mfd-clk-gpio-power-regulator-rtc-5.3',...

Merge branches 'ib-mfd-clk-gpio-power-regulator-rtc-5.3', 'ib-mfd-clk-regulator-rtc-5.3', 'ib-mfd-cros-5.3' and 'ib-mfd-regulator-5.3' into ibs-for-mfd-merged
Loading
Loading
Loading
Loading
+36 −0
Original line number Diff line number Diff line
@@ -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;
		};
	};
};
+44 −0
Original line number Diff line number Diff line
@@ -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.
@@ -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
@@ -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.
@@ -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
+4 −5
Original line number Diff line number Diff line
@@ -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
+63 −1
Original line number Diff line number Diff line
@@ -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);
@@ -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 */
+3 −3
Original line number Diff line number Diff line
@@ -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