Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

soc: rockchip: power-domain: add power domain support for rk3036

This driver is modified to support RK3036 SoC.

Signed-off-by: Caesar Wang <wxt@rock-chips.com>
Signed-off-by: Elaine Zhang <zhangqing@rock-chips.com>
Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>

authored by

Caesar Wang and committed by
Heiko Stuebner
6f686e85 cbdfa770

+33
+33
drivers/soc/rockchip/pm_domains.c
··· 18 18 #include <linux/clk.h> 19 19 #include <linux/regmap.h> 20 20 #include <linux/mfd/syscon.h> 21 + #include <dt-bindings/power/rk3036-power.h> 21 22 #include <dt-bindings/power/rk3288-power.h> 22 23 #include <dt-bindings/power/rk3328-power.h> 23 24 #include <dt-bindings/power/rk3366-power.h> ··· 101 100 .req_mask = (req >= 0) ? BIT(req) : 0, \ 102 101 .idle_mask = (idle >= 0) ? BIT(idle) : 0, \ 103 102 .ack_mask = (ack >= 0) ? BIT(ack) : 0, \ 103 + .active_wakeup = wakeup, \ 104 + } 105 + 106 + #define DOMAIN_RK3036(req, ack, idle, wakeup) \ 107 + { \ 108 + .req_mask = (req >= 0) ? BIT(req) : 0, \ 109 + .req_w_mask = (req >= 0) ? BIT(req + 16) : 0, \ 110 + .ack_mask = (ack >= 0) ? BIT(ack) : 0, \ 111 + .idle_mask = (idle >= 0) ? BIT(idle) : 0, \ 104 112 .active_wakeup = wakeup, \ 105 113 } 106 114 ··· 711 701 return error; 712 702 } 713 703 704 + static const struct rockchip_domain_info rk3036_pm_domains[] = { 705 + [RK3036_PD_MSCH] = DOMAIN_RK3036(14, 23, 30, true), 706 + [RK3036_PD_CORE] = DOMAIN_RK3036(13, 17, 24, false), 707 + [RK3036_PD_PERI] = DOMAIN_RK3036(12, 18, 25, false), 708 + [RK3036_PD_VIO] = DOMAIN_RK3036(11, 19, 26, false), 709 + [RK3036_PD_VPU] = DOMAIN_RK3036(10, 20, 27, false), 710 + [RK3036_PD_GPU] = DOMAIN_RK3036(9, 21, 28, false), 711 + [RK3036_PD_SYS] = DOMAIN_RK3036(8, 22, 29, false), 712 + }; 713 + 714 714 static const struct rockchip_domain_info rk3288_pm_domains[] = { 715 715 [RK3288_PD_VIO] = DOMAIN_RK3288(7, 7, 4, false), 716 716 [RK3288_PD_HEVC] = DOMAIN_RK3288(14, 10, 9, false), ··· 786 766 [RK3399_PD_GIC] = DOMAIN_RK3399(29, 29, 27, true), 787 767 [RK3399_PD_SD] = DOMAIN_RK3399(30, 30, 28, true), 788 768 [RK3399_PD_SDIOAUDIO] = DOMAIN_RK3399(31, 31, 29, true), 769 + }; 770 + 771 + static const struct rockchip_pmu_info rk3036_pmu = { 772 + .req_offset = 0x148, 773 + .idle_offset = 0x14c, 774 + .ack_offset = 0x14c, 775 + 776 + .num_domains = ARRAY_SIZE(rk3036_pm_domains), 777 + .domain_info = rk3036_pm_domains, 789 778 }; 790 779 791 780 static const struct rockchip_pmu_info rk3288_pmu = { ··· 871 842 }; 872 843 873 844 static const struct of_device_id rockchip_pm_domain_dt_match[] = { 845 + { 846 + .compatible = "rockchip,rk3036-power-controller", 847 + .data = (void *)&rk3036_pmu, 848 + }, 874 849 { 875 850 .compatible = "rockchip,rk3288-power-controller", 876 851 .data = (void *)&rk3288_pmu,