diff options
| -rw-r--r-- | drivers/soc/rockchip/pm_domains.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/drivers/soc/rockchip/pm_domains.c b/drivers/soc/rockchip/pm_domains.c index 36ded8396bb5..09a34e3a9375 100644 --- a/drivers/soc/rockchip/pm_domains.c +++ b/drivers/soc/rockchip/pm_domains.c | |||
| @@ -18,6 +18,7 @@ | |||
| 18 | #include <linux/clk.h> | 18 | #include <linux/clk.h> |
| 19 | #include <linux/regmap.h> | 19 | #include <linux/regmap.h> |
| 20 | #include <linux/mfd/syscon.h> | 20 | #include <linux/mfd/syscon.h> |
| 21 | #include <dt-bindings/power/px30-power.h> | ||
| 21 | #include <dt-bindings/power/rk3036-power.h> | 22 | #include <dt-bindings/power/rk3036-power.h> |
| 22 | #include <dt-bindings/power/rk3128-power.h> | 23 | #include <dt-bindings/power/rk3128-power.h> |
| 23 | #include <dt-bindings/power/rk3228-power.h> | 24 | #include <dt-bindings/power/rk3228-power.h> |
| @@ -115,6 +116,9 @@ struct rockchip_pmu { | |||
| 115 | .active_wakeup = wakeup, \ | 116 | .active_wakeup = wakeup, \ |
| 116 | } | 117 | } |
| 117 | 118 | ||
| 119 | #define DOMAIN_PX30(pwr, status, req, wakeup) \ | ||
| 120 | DOMAIN_M(pwr, status, req, (req) + 16, req, wakeup) | ||
| 121 | |||
| 118 | #define DOMAIN_RK3288(pwr, status, req, wakeup) \ | 122 | #define DOMAIN_RK3288(pwr, status, req, wakeup) \ |
| 119 | DOMAIN(pwr, status, req, req, (req) + 16, wakeup) | 123 | DOMAIN(pwr, status, req, req, (req) + 16, wakeup) |
| 120 | 124 | ||
| @@ -713,6 +717,17 @@ err_out: | |||
| 713 | return error; | 717 | return error; |
| 714 | } | 718 | } |
| 715 | 719 | ||
| 720 | static const struct rockchip_domain_info px30_pm_domains[] = { | ||
| 721 | [PX30_PD_USB] = DOMAIN_PX30(5, 5, 10, false), | ||
| 722 | [PX30_PD_SDCARD] = DOMAIN_PX30(8, 8, 9, false), | ||
| 723 | [PX30_PD_GMAC] = DOMAIN_PX30(10, 10, 6, false), | ||
| 724 | [PX30_PD_MMC_NAND] = DOMAIN_PX30(11, 11, 5, false), | ||
| 725 | [PX30_PD_VPU] = DOMAIN_PX30(12, 12, 14, false), | ||
| 726 | [PX30_PD_VO] = DOMAIN_PX30(13, 13, 7, false), | ||
| 727 | [PX30_PD_VI] = DOMAIN_PX30(14, 14, 8, false), | ||
| 728 | [PX30_PD_GPU] = DOMAIN_PX30(15, 15, 2, false), | ||
| 729 | }; | ||
| 730 | |||
| 716 | static const struct rockchip_domain_info rk3036_pm_domains[] = { | 731 | static const struct rockchip_domain_info rk3036_pm_domains[] = { |
| 717 | [RK3036_PD_MSCH] = DOMAIN_RK3036(14, 23, 30, true), | 732 | [RK3036_PD_MSCH] = DOMAIN_RK3036(14, 23, 30, true), |
| 718 | [RK3036_PD_CORE] = DOMAIN_RK3036(13, 17, 24, false), | 733 | [RK3036_PD_CORE] = DOMAIN_RK3036(13, 17, 24, false), |
| @@ -812,6 +827,17 @@ static const struct rockchip_domain_info rk3399_pm_domains[] = { | |||
| 812 | [RK3399_PD_SDIOAUDIO] = DOMAIN_RK3399(31, 31, 29, true), | 827 | [RK3399_PD_SDIOAUDIO] = DOMAIN_RK3399(31, 31, 29, true), |
| 813 | }; | 828 | }; |
| 814 | 829 | ||
| 830 | static const struct rockchip_pmu_info px30_pmu = { | ||
| 831 | .pwr_offset = 0x18, | ||
| 832 | .status_offset = 0x20, | ||
| 833 | .req_offset = 0x64, | ||
| 834 | .idle_offset = 0x6c, | ||
| 835 | .ack_offset = 0x6c, | ||
| 836 | |||
| 837 | .num_domains = ARRAY_SIZE(px30_pm_domains), | ||
| 838 | .domain_info = px30_pm_domains, | ||
| 839 | }; | ||
| 840 | |||
| 815 | static const struct rockchip_pmu_info rk3036_pmu = { | 841 | static const struct rockchip_pmu_info rk3036_pmu = { |
| 816 | .req_offset = 0x148, | 842 | .req_offset = 0x148, |
| 817 | .idle_offset = 0x14c, | 843 | .idle_offset = 0x14c, |
| @@ -916,6 +942,10 @@ static const struct rockchip_pmu_info rk3399_pmu = { | |||
| 916 | 942 | ||
| 917 | static const struct of_device_id rockchip_pm_domain_dt_match[] = { | 943 | static const struct of_device_id rockchip_pm_domain_dt_match[] = { |
| 918 | { | 944 | { |
| 945 | .compatible = "rockchip,px30-power-controller", | ||
| 946 | .data = (void *)&px30_pmu, | ||
| 947 | }, | ||
| 948 | { | ||
| 919 | .compatible = "rockchip,rk3036-power-controller", | 949 | .compatible = "rockchip,rk3036-power-controller", |
| 920 | .data = (void *)&rk3036_pmu, | 950 | .data = (void *)&rk3036_pmu, |
| 921 | }, | 951 | }, |
