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

clk: qcom: gcc-sm8350: add gdsc

Add the GDSC found in GCC for SM8350 SoC

Signed-off-by: Vinod Koul <vkoul@kernel.org>
Link: https://lore.kernel.org/r/20210210161649.431741-1-vkoul@kernel.org
Signed-off-by: Stephen Boyd <sboyd@kernel.org>

authored by

Vinod Koul and committed by
Stephen Boyd
3fade948 e16831bf

+112
+100
drivers/clk/qcom/gcc-sm8350.c
··· 16 16 #include "clk-regmap.h" 17 17 #include "clk-regmap-divider.h" 18 18 #include "clk-regmap-mux.h" 19 + #include "gdsc.h" 19 20 #include "reset.h" 20 21 21 22 enum { ··· 3453 3452 }, 3454 3453 }; 3455 3454 3455 + static struct gdsc pcie_0_gdsc = { 3456 + .gdscr = 0x6b004, 3457 + .pd = { 3458 + .name = "pcie_0_gdsc", 3459 + }, 3460 + .pwrsts = PWRSTS_OFF_ON, 3461 + }; 3462 + 3463 + static struct gdsc pcie_1_gdsc = { 3464 + .gdscr = 0x8d004, 3465 + .pd = { 3466 + .name = "pcie_1_gdsc", 3467 + }, 3468 + .pwrsts = PWRSTS_OFF_ON, 3469 + }; 3470 + 3471 + static struct gdsc ufs_card_gdsc = { 3472 + .gdscr = 0x75004, 3473 + .pd = { 3474 + .name = "ufs_card_gdsc", 3475 + }, 3476 + .pwrsts = PWRSTS_OFF_ON, 3477 + }; 3478 + 3479 + static struct gdsc ufs_phy_gdsc = { 3480 + .gdscr = 0x77004, 3481 + .pd = { 3482 + .name = "ufs_phy_gdsc", 3483 + }, 3484 + .pwrsts = PWRSTS_OFF_ON, 3485 + }; 3486 + 3487 + static struct gdsc usb30_prim_gdsc = { 3488 + .gdscr = 0xf004, 3489 + .pd = { 3490 + .name = "usb30_prim_gdsc", 3491 + }, 3492 + .pwrsts = PWRSTS_OFF_ON, 3493 + }; 3494 + 3495 + static struct gdsc usb30_sec_gdsc = { 3496 + .gdscr = 0x10004, 3497 + .pd = { 3498 + .name = "usb30_sec_gdsc", 3499 + }, 3500 + .pwrsts = PWRSTS_OFF_ON, 3501 + }; 3502 + 3503 + static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc = { 3504 + .gdscr = 0x7d050, 3505 + .pd = { 3506 + .name = "hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc", 3507 + }, 3508 + .pwrsts = PWRSTS_OFF_ON, 3509 + .flags = VOTABLE, 3510 + }; 3511 + 3512 + static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc = { 3513 + .gdscr = 0x7d058, 3514 + .pd = { 3515 + .name = "hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc", 3516 + }, 3517 + .pwrsts = PWRSTS_OFF_ON, 3518 + .flags = VOTABLE, 3519 + }; 3520 + 3521 + static struct gdsc hlos1_vote_mmnoc_mmu_tbu_sf0_gdsc = { 3522 + .gdscr = 0x7d054, 3523 + .pd = { 3524 + .name = "hlos1_vote_mmnoc_mmu_tbu_sf0_gdsc", 3525 + }, 3526 + .pwrsts = PWRSTS_OFF_ON, 3527 + .flags = VOTABLE, 3528 + }; 3529 + 3530 + static struct gdsc hlos1_vote_mmnoc_mmu_tbu_sf1_gdsc = { 3531 + .gdscr = 0x7d06c, 3532 + .pd = { 3533 + .name = "hlos1_vote_mmnoc_mmu_tbu_sf1_gdsc", 3534 + }, 3535 + .pwrsts = PWRSTS_OFF_ON, 3536 + .flags = VOTABLE, 3537 + }; 3538 + 3456 3539 static struct clk_regmap *gcc_sm8350_clocks[] = { 3457 3540 [GCC_AGGRE_NOC_PCIE_0_AXI_CLK] = &gcc_aggre_noc_pcie_0_axi_clk.clkr, 3458 3541 [GCC_AGGRE_NOC_PCIE_1_AXI_CLK] = &gcc_aggre_noc_pcie_1_axi_clk.clkr, ··· 3731 3646 [GCC_VIDEO_AXI1_CLK] = &gcc_video_axi1_clk.clkr, 3732 3647 }; 3733 3648 3649 + static struct gdsc *gcc_sm8350_gdscs[] = { 3650 + [PCIE_0_GDSC] = &pcie_0_gdsc, 3651 + [PCIE_1_GDSC] = &pcie_1_gdsc, 3652 + [UFS_CARD_GDSC] = &ufs_card_gdsc, 3653 + [UFS_PHY_GDSC] = &ufs_phy_gdsc, 3654 + [USB30_PRIM_GDSC] = &usb30_prim_gdsc, 3655 + [USB30_SEC_GDSC] = &usb30_sec_gdsc, 3656 + [HLOS1_VOTE_MMNOC_MMU_TBU_HF0_GDSC] = &hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc, 3657 + [HLOS1_VOTE_MMNOC_MMU_TBU_HF1_GDSC] = &hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc, 3658 + [HLOS1_VOTE_MMNOC_MMU_TBU_SF0_GDSC] = &hlos1_vote_mmnoc_mmu_tbu_sf0_gdsc, 3659 + [HLOS1_VOTE_MMNOC_MMU_TBU_SF1_GDSC] = &hlos1_vote_mmnoc_mmu_tbu_sf1_gdsc, 3660 + }; 3661 + 3734 3662 static const struct qcom_reset_map gcc_sm8350_resets[] = { 3735 3663 [GCC_CAMERA_BCR] = { 0x26000 }, 3736 3664 [GCC_DISPLAY_BCR] = { 0x27000 }, ··· 3822 3724 .num_clks = ARRAY_SIZE(gcc_sm8350_clocks), 3823 3725 .resets = gcc_sm8350_resets, 3824 3726 .num_resets = ARRAY_SIZE(gcc_sm8350_resets), 3727 + .gdscs = gcc_sm8350_gdscs, 3728 + .num_gdscs = ARRAY_SIZE(gcc_sm8350_gdscs), 3825 3729 }; 3826 3730 3827 3731 static const struct of_device_id gcc_sm8350_match_table[] = {
+12
include/dt-bindings/clock/qcom,gcc-sm8350.h
··· 251 251 #define GCC_VIDEO_AXI1_CLK_ARES 36 252 252 #define GCC_VIDEO_BCR 37 253 253 254 + /* GCC power domains */ 255 + #define PCIE_0_GDSC 0 256 + #define PCIE_1_GDSC 1 257 + #define UFS_CARD_GDSC 2 258 + #define UFS_PHY_GDSC 3 259 + #define USB30_PRIM_GDSC 4 260 + #define USB30_SEC_GDSC 5 261 + #define HLOS1_VOTE_MMNOC_MMU_TBU_HF0_GDSC 6 262 + #define HLOS1_VOTE_MMNOC_MMU_TBU_HF1_GDSC 7 263 + #define HLOS1_VOTE_MMNOC_MMU_TBU_SF0_GDSC 8 264 + #define HLOS1_VOTE_MMNOC_MMU_TBU_SF1_GDSC 9 265 + 254 266 #endif