* [PATCH] PM / AVS: rockchip-io: add io selectors and supplies for PX30
@ 2018-05-15 9:23 David Wu
2018-05-15 9:49 ` Heiko Stuebner
0 siblings, 1 reply; 2+ messages in thread
From: David Wu @ 2018-05-15 9:23 UTC (permalink / raw)
To: linux-arm-kernel
This adds the necessary data for handling io voltage domains on PX30.
As interesting tidbit, the PX30 contains two separate iodomain areas.
One in the regular General Register Files (GRF) and one in PMUGRF in the
pmu power domain.
Signed-off-by: David Wu <david.wu@rock-chips.com>
---
.../bindings/power/rockchip-io-domain.txt | 2 +
drivers/power/avs/rockchip-io-domain.c | 68 ++++++++++++++++++++++
2 files changed, 70 insertions(+)
diff --git a/Documentation/devicetree/bindings/power/rockchip-io-domain.txt b/Documentation/devicetree/bindings/power/rockchip-io-domain.txt
index 4a4766e..c2595ba 100644
--- a/Documentation/devicetree/bindings/power/rockchip-io-domain.txt
+++ b/Documentation/devicetree/bindings/power/rockchip-io-domain.txt
@@ -31,6 +31,8 @@ SoC is on the same page.
Required properties:
- compatible: should be one of:
+ - "rockchip,px30-io-voltage-domain" for px30
+ - "rockchip,px30-pmu-io-voltage-domain" for px30 pmu-domains
- "rockchip,rk3188-io-voltage-domain" for rk3188
- "rockchip,rk3228-io-voltage-domain" for rk3228
- "rockchip,rk3288-io-voltage-domain" for rk3288
diff --git a/drivers/power/avs/rockchip-io-domain.c b/drivers/power/avs/rockchip-io-domain.c
index ed2b109..41c2b83 100644
--- a/drivers/power/avs/rockchip-io-domain.c
+++ b/drivers/power/avs/rockchip-io-domain.c
@@ -39,6 +39,10 @@
#define MAX_VOLTAGE_1_8 1980000
#define MAX_VOLTAGE_3_3 3600000
+#define PX30_IO_VSEL 0x180
+#define PX30_IO_VSEL_VCCIO6_SRC BIT(0)
+#define PX30_IO_VSEL_VCCIO6_SUPPLY_NUM 1
+
#define RK3288_SOC_CON2 0x24c
#define RK3288_SOC_CON2_FLASH0 BIT(7)
#define RK3288_SOC_FLASH_SUPPLY_NUM 2
@@ -151,6 +155,25 @@ static int rockchip_iodomain_notify(struct notifier_block *nb,
return NOTIFY_OK;
}
+static void px30_iodomain_init(struct rockchip_iodomain *iod)
+{
+ int ret;
+ u32 val;
+
+ /* if no VCCIO0 supply we should leave things alone */
+ if (!iod->supplies[PX30_IO_VSEL_VCCIO6_SUPPLY_NUM].reg)
+ return;
+
+ /*
+ * set vccio0 iodomain to also use this framework
+ * instead of a special gpio.
+ */
+ val = PX30_IO_VSEL_VCCIO6_SRC | (PX30_IO_VSEL_VCCIO6_SRC << 16);
+ ret = regmap_write(iod->grf, PX30_IO_VSEL, val);
+ if (ret < 0)
+ dev_warn(iod->dev, "couldn't update vccio0 ctrl\n");
+}
+
static void rk3288_iodomain_init(struct rockchip_iodomain *iod)
{
int ret;
@@ -227,6 +250,43 @@ static void rk3399_pmu_iodomain_init(struct rockchip_iodomain *iod)
dev_warn(iod->dev, "couldn't update pmu io iodomain ctrl\n");
}
+static const struct rockchip_iodomain_soc_data soc_data_px30 = {
+ .grf_offset = 0x180,
+ .supply_names = {
+ NULL,
+ "vccio6",
+ "vccio1",
+ "vccio2",
+ "vccio3",
+ "vccio4",
+ "vccio5",
+ "vccio_oscgpi",
+ },
+ .init = px30_iodomain_init,
+};
+
+static const struct rockchip_iodomain_soc_data soc_data_px30_pmu = {
+ .grf_offset = 0x100,
+ .supply_names = {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "pmuio1",
+ "pmuio2",
+ },
+};
+
/*
* On the rk3188 the io-domains are handled by a shared register with the
* lower 8 bits being still being continuing drive-strength settings.
@@ -381,6 +441,14 @@ static const struct rockchip_iodomain_soc_data soc_data_rv1108_pmu = {
static const struct of_device_id rockchip_iodomain_match[] = {
{
+ .compatible = "rockchip,px30-io-voltage-domain",
+ .data = (void *)&soc_data_px30
+ },
+ {
+ .compatible = "rockchip,px30-pmu-io-voltage-domain",
+ .data = (void *)&soc_data_px30_pmu
+ },
+ {
.compatible = "rockchip,rk3188-io-voltage-domain",
.data = &soc_data_rk3188
},
--
2.7.4
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [PATCH] PM / AVS: rockchip-io: add io selectors and supplies for PX30
2018-05-15 9:23 [PATCH] PM / AVS: rockchip-io: add io selectors and supplies for PX30 David Wu
@ 2018-05-15 9:49 ` Heiko Stuebner
0 siblings, 0 replies; 2+ messages in thread
From: Heiko Stuebner @ 2018-05-15 9:49 UTC (permalink / raw)
To: linux-arm-kernel
Hi David,
looks good overall, some small things below.
Am Dienstag, 15. Mai 2018, 11:23:37 CEST schrieb David Wu:
> This adds the necessary data for handling io voltage domains on PX30.
> As interesting tidbit, the PX30 contains two separate iodomain areas.
> One in the regular General Register Files (GRF) and one in PMUGRF in the
> pmu power domain.
>
> Signed-off-by: David Wu <david.wu@rock-chips.com>
> ---
> .../bindings/power/rockchip-io-domain.txt | 2 +
> drivers/power/avs/rockchip-io-domain.c | 68 ++++++++++++++++++++++
> 2 files changed, 70 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/power/rockchip-io-domain.txt b/Documentation/devicetree/bindings/power/rockchip-io-domain.txt
> index 4a4766e..c2595ba 100644
> --- a/Documentation/devicetree/bindings/power/rockchip-io-domain.txt
> +++ b/Documentation/devicetree/bindings/power/rockchip-io-domain.txt
> @@ -31,6 +31,8 @@ SoC is on the same page.
>
> Required properties:
> - compatible: should be one of:
> + - "rockchip,px30-io-voltage-domain" for px30
> + - "rockchip,px30-pmu-io-voltage-domain" for px30 pmu-domains
> - "rockchip,rk3188-io-voltage-domain" for rk3188
> - "rockchip,rk3228-io-voltage-domain" for rk3228
> - "rockchip,rk3288-io-voltage-domain" for rk3288
please also define the px30-specific supply names as can be seen in that
file for the other socs.
Also, please include devicetree maintainers, when modifying
binding documents.
> +static const struct rockchip_iodomain_soc_data soc_data_px30 = {
> + .grf_offset = 0x180,
> + .supply_names = {
> + NULL,
> + "vccio6",
> + "vccio1",
> + "vccio2",
> + "vccio3",
> + "vccio4",
> + "vccio5",
> + "vccio_oscgpi",
vccio-oscgpi ... aka with a "-" instead of "_"
With the above fixed
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
Thanks
Heiko
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2018-05-15 9:49 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-05-15 9:23 [PATCH] PM / AVS: rockchip-io: add io selectors and supplies for PX30 David Wu
2018-05-15 9:49 ` Heiko Stuebner
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).