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

Configure Feed

Select the types of activity you want to include in your feed.

clk: qcom: camcc-sm6350: Specify Titan GDSC power domain as a parent to other

When a consumer turns on/off a power domain dependent on another power
domain in hardware, the parent power domain shall be turned on/off by
the power domain provider as well, and to get it the power domain hardware
hierarchy shall be described in the CAMCC driver.

Establish the power domain hierarchy with a Titan GDSC set as a parent of
all other GDSC power domains provided by the SM6350 camera clock controller
to enforce a correct sequence of enabling and disabling power domains by
the consumers, this fixes the CAMCC as a supplier of power domains to CAMSS
IP and its driver.

Fixes: 80f5451d9a7c ("clk: qcom: Add camera clock controller driver for SM6350")
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Reviewed-by: Imran Shaik <imran.shaik@oss.qualcomm.com>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
Link: https://lore.kernel.org/r/20251021234450.2271279-3-vladimir.zapolskiy@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>

authored by

Vladimir Zapolskiy and committed by
Bjorn Andersson
a76ce61d d8f1121e

+7
+7
drivers/clk/qcom/camcc-sm6350.c
··· 1693 1693 }, 1694 1694 }; 1695 1695 1696 + static struct gdsc titan_top_gdsc; 1697 + 1696 1698 static struct gdsc bps_gdsc = { 1697 1699 .gdscr = 0x6004, 1698 1700 .en_rest_wait_val = 0x2, ··· 1704 1702 .name = "bps_gdsc", 1705 1703 }, 1706 1704 .pwrsts = PWRSTS_OFF_ON, 1705 + .parent = &titan_top_gdsc.pd, 1707 1706 .flags = VOTABLE, 1708 1707 }; 1709 1708 ··· 1717 1714 .name = "ipe_0_gdsc", 1718 1715 }, 1719 1716 .pwrsts = PWRSTS_OFF_ON, 1717 + .parent = &titan_top_gdsc.pd, 1720 1718 .flags = VOTABLE, 1721 1719 }; 1722 1720 ··· 1730 1726 .name = "ife_0_gdsc", 1731 1727 }, 1732 1728 .pwrsts = PWRSTS_OFF_ON, 1729 + .parent = &titan_top_gdsc.pd, 1733 1730 }; 1734 1731 1735 1732 static struct gdsc ife_1_gdsc = { ··· 1742 1737 .name = "ife_1_gdsc", 1743 1738 }, 1744 1739 .pwrsts = PWRSTS_OFF_ON, 1740 + .parent = &titan_top_gdsc.pd, 1745 1741 }; 1746 1742 1747 1743 static struct gdsc ife_2_gdsc = { ··· 1754 1748 .name = "ife_2_gdsc", 1755 1749 }, 1756 1750 .pwrsts = PWRSTS_OFF_ON, 1751 + .parent = &titan_top_gdsc.pd, 1757 1752 }; 1758 1753 1759 1754 static struct gdsc titan_top_gdsc = {