Add Camera clock controller driver for SC7180
v3 cover Add Camera clock controller driver for SC7180
[v3]
* Introduce helper functions to be used across pll configure and pll rate margins.
* Update the Agera PLL configure/set rate to use the new helper functions.
* Update documentation binding to update the header inclusion.
* Update the vco table to 'const'.
* Fix the failure path of probe.
[v2]
* Update PLL set rate function : clk_alpha_pll_agera_set_rate
* Remove mb()
[v1]
* Add support for Agera PLL which is used in the camera clock controller.
* Add driver support for camera clock controller for SC7180 and also update device tree bindings for the various clocks supported in the clock controller.
Taniya Das (4):
clk: qcom: clk-alpha-pll: Add support for helper functions
clk: qcom: clk-alpha-pll: Add support for controlling Agera PLLs
dt-bindings: clock: Add YAML schemas for the QCOM Camera clock
bindings.
clk: qcom: camcc: Add camera clock controller driver for SC7180
.../bindings/clock/qcom,sc7180-camcc.yaml | 73 + drivers/clk/qcom/Kconfig | 9 + drivers/clk/qcom/Makefile | 1 + drivers/clk/qcom/camcc-sc7180.c | 1736 ++++++++++++++++++++ drivers/clk/qcom/clk-alpha-pll.c | 217 ++- drivers/clk/qcom/clk-alpha-pll.h | 4 + include/dt-bindings/clock/qcom,camcc-sc7180.h | 121 ++ 7 files changed, 2072 insertions(+), 89 deletions(-) create mode 100644 Documentation/devicetree/bindings/clock/qcom,sc7180-camcc.yaml create mode 100644 drivers/clk/qcom/camcc-sc7180.c create mode 100644 include/dt-bindings/clock/qcom,camcc-sc7180.h
--
Qualcomm INDIA, on behalf of Qualcomm Innovation Center, Inc.is a member of the Code Aurora Forum, hosted by the Linux Foundation.
PATCH v3 1/4 clk: qcom: clk-alpha-pll: Add support for helper functions
Introduce clk_alpha_pll_write_config and alpha_pll_check_rate_margin helper functions to be across PLL configure functions and PLL set rate functions.
--- drivers/clk/qcom/clk-alpha-pll.c | 155 +++++++++++++++++---------------------- 1 file changed, 66 insertions(+), 89 deletions(-)
drivers/clk/qcom/clk-alpha-pll.c +66 -89
@@ -207,6 +207,13 @@ static int wait_for_pll(struct clk_alpha_pll *pll, u32 mask, bool inverse,#define wait_for_pll_update_ack_clear (pll) \ wait_for_pll(pll, ALPHA_PLL_ACK_LATCH, 1, "update_ack_clear") +static void clk_alpha_pll_write_config (struct regmap *regmap,unsigned int reg, +unsigned int val) +{ +if (val) +regmap_write (regmap, reg, val); +} +void clk_alpha_pll_configure (struct clk_alpha_pll *pll,struct regmap *regmap,const struct alpha_pll_config *config) {
@@ -1004,33 +1011,19 @@ void clk_fabia_pll_configure(struct clk_alpha_pll *pll, struct regmap *regmap, {u32 val, mask; -if (config->l) -regmap_write (regmap,PLL_L_VAL (pll), config->l); - -if (config->alpha) -regmap_write (regmap,PLL_FRAC (pll), config->alpha); - -if (config->config_ctl_val) -regmap_write (regmap,PLL_CONFIG_CTL (pll), +clk_alpha_pll_write_config (regmap,PLL_L_VAL (pll), config->l); +clk_alpha_pll_write_config (regmap,PLL_FRAC (pll), config->alpha); +clk_alpha_pll_write_config (regmap,PLL_CONFIG_CTL (pll), config->config_ctl_val); - -if (config->config_ctl_hi_val) -regmap_write (regmap,PLL_CONFIG_CTL_U (pll), +clk_alpha_pll_write_config (regmap,PLL_CONFIG_CTL_U (pll), config->config_ctl_hi_val); - -if (config->user_ctl_val) -regmap_write (regmap,PLL_USER_CTL (pll), config->user_ctl_val); - -if (config->user_ctl_hi_val) -regmap_write (regmap,PLL_USER_CTL_U (pll), +clk_alpha_pll_write_config (regmap,PLL_USER_CTL (pll), + config->user_ctl_val); +clk_alpha_pll_write_config (regmap,PLL_USER_CTL_U (pll), config->user_ctl_hi_val); - -if (config->test_ctl_val) -regmap_write (regmap,PLL_TEST_CTL (pll), +clk_alpha_pll_write_config (regmap,PLL_TEST_CTL (pll), config->test_ctl_val); - -if (config->test_ctl_hi_val) -regmap_write (regmap,PLL_TEST_CTL_U (pll), +clk_alpha_pll_write_config (regmap,PLL_TEST_CTL_U (pll), config->test_ctl_hi_val);if (config->post_div_mask) {
@@ -1145,25 +1138,38 @@ static unsigned long alpha_pll_fabia_recalc_rate(struct clk_hw *hw,return alpha_pll_calc_rate (parent_rate, l, frac, alpha_width); } +/* +* Due to limited number of bits for fractional rate programming, the +* rounded up rate could be marginally higher than the requested rate. +*/ +static int alpha_pll_check_rate_margin (struct clk_hw *hw, +unsigned long rrate,unsigned long rate) +{ +unsigned long rate_margin = rate +PLL_RATE_MARGIN ; + +if (rrate > rate_margin || rrate < rate) { +pr_err ("%s: Rounded rate %lu not within range [%lu, %lu)\n" , +clk_hw_get_name (hw), rrate, rate, rate_margin); +return -EINVAL ; + } + +return 0 ; +} +static int alpha_pll_fabia_set_rate (struct clk_hw *hw,unsigned long rate,unsigned long prate) {struct clk_alpha_pll *pll =to_clk_alpha_pll (hw);u32 l, alpha_width =pll_alpha_width (pll); +unsigned long rrate; +int ret;u64 a; -unsigned long rrate, max = rate +PLL_RATE_MARGIN ; rrate =alpha_pll_round_rate (rate, prate, &l, &a, alpha_width); -/* -* Due to limited number of bits for fractional rate programming, the -* rounded up rate could be marginally higher than the requested rate. -*/ -if (rrate > (rate +PLL_RATE_MARGIN ) || rrate < rate) { -pr_err ("%s: Rounded rate %lu not within range [%lu, %lu)\n" , -clk_hw_get_name (hw), rrate, rate, max); -return -EINVAL ; - } + ret =alpha_pll_check_rate_margin (hw, rrate, rate); +if (ret <0 ) +return ret;regmap_write (pll->clkr.regmap,PLL_L_VAL (pll), l);regmap_write (pll->clkr.regmap,PLL_FRAC (pll), a);
@@ -1206,12 +1212,10 @@ static int alpha_pll_fabia_prepare(struct clk_hw *hw) rrate =alpha_pll_round_rate (cal_freq,clk_hw_get_rate (parent_hw), &cal_l, &a, alpha_width); -/* -* Due to a limited number of bits for fractional rate programming, the -* rounded up rate could be marginally higher than the requested rate. -*/ -if (rrate > (cal_freq +PLL_RATE_MARGIN ) || rrate < cal_freq) -return -EINVAL ; + + ret =alpha_pll_check_rate_margin (hw, rrate, cal_freq); +if (ret <0 ) +return ret;/* Setup PLL for calibration frequency */ regmap_write (pll->clkr.regmap,PLL_ALPHA_VAL (pll), cal_l);
@@ -1388,49 +1392,27 @@ EXPORT_SYMBOL_GPL(clk_alpha_pll_postdiv_fabia_ops);void clk_trion_pll_configure (struct clk_alpha_pll *pll,struct regmap *regmap,const struct alpha_pll_config *config) { -if (config->l) -regmap_write (regmap,PLL_L_VAL (pll), config->l); - +clk_alpha_pll_write_config (regmap,PLL_L_VAL (pll), config->l);regmap_write (regmap,PLL_CAL_L_VAL (pll),TRION_PLL_CAL_VAL ); - -if (config->alpha) -regmap_write (regmap,PLL_ALPHA_VAL (pll), config->alpha); - -if (config->config_ctl_val) -regmap_write (regmap,PLL_CONFIG_CTL (pll), - config->config_ctl_val); - -if (config->config_ctl_hi_val) -regmap_write (regmap,PLL_CONFIG_CTL_U (pll), - config->config_ctl_hi_val); - -if (config->config_ctl_hi1_val) -regmap_write (regmap,PLL_CONFIG_CTL_U1 (pll), - config->config_ctl_hi1_val); - -if (config->user_ctl_val) -regmap_write (regmap,PLL_USER_CTL (pll), - config->user_ctl_val); - -if (config->user_ctl_hi_val) -regmap_write (regmap,PLL_USER_CTL_U (pll), - config->user_ctl_hi_val); - -if (config->user_ctl_hi1_val) -regmap_write (regmap,PLL_USER_CTL_U1 (pll), - config->user_ctl_hi1_val); - -if (config->test_ctl_val) -regmap_write (regmap,PLL_TEST_CTL (pll), - config->test_ctl_val); - -if (config->test_ctl_hi_val) -regmap_write (regmap,PLL_TEST_CTL_U (pll), - config->test_ctl_hi_val); - -if (config->test_ctl_hi1_val) -regmap_write (regmap,PLL_TEST_CTL_U1 (pll), - config->test_ctl_hi1_val); +clk_alpha_pll_write_config (regmap,PLL_ALPHA_VAL (pll), config->alpha); +clk_alpha_pll_write_config (regmap,PLL_CONFIG_CTL (pll), + config->config_ctl_val); +clk_alpha_pll_write_config (regmap,PLL_CONFIG_CTL_U (pll), + config->config_ctl_hi_val); +clk_alpha_pll_write_config (regmap,PLL_CONFIG_CTL_U1 (pll), + config->config_ctl_hi1_val); +clk_alpha_pll_write_config (regmap,PLL_USER_CTL (pll), + config->user_ctl_val); +clk_alpha_pll_write_config (regmap,PLL_USER_CTL_U (pll), + config->user_ctl_hi_val); +clk_alpha_pll_write_config (regmap,PLL_USER_CTL_U1 (pll), + config->user_ctl_hi1_val); +clk_alpha_pll_write_config (regmap,PLL_TEST_CTL (pll), + config->test_ctl_val); +clk_alpha_pll_write_config (regmap,PLL_TEST_CTL_U (pll), + config->test_ctl_hi_val); +clk_alpha_pll_write_config (regmap,PLL_TEST_CTL_U1 (pll), + config->test_ctl_hi1_val);regmap_update_bits (regmap,PLL_MODE (pll),PLL_UPDATE_BYPASS ,PLL_UPDATE_BYPASS );
@@ -1490,14 +1472,9 @@ static int alpha_pll_trion_set_rate(struct clk_hw *hw, unsigned long rate, rrate =alpha_pll_round_rate (rate, prate, &l, &a, alpha_width); -/* -* Due to a limited number of bits for fractional rate programming, the -* rounded up rate could be marginally higher than the requested rate. -*/ -if (rrate > (rate +PLL_RATE_MARGIN ) || rrate < rate) { -pr_err ("Call set rate on the PLL with rounded rates!\n" ); -return -EINVAL ; - } + ret =alpha_pll_check_rate_margin (hw, rrate, rate); +if (ret <0 ) +return ret;regmap_write (pll->clkr.regmap,PLL_L_VAL (pll), l);regmap_write (pll->clkr.regmap,PLL_ALPHA_VAL (pll), a);
--
Qualcomm INDIA, on behalf of Qualcomm Innovation Center, Inc.is a member of the Code Aurora Forum, hosted by the Linux Foundation.
Re: [PATCH v3 1/4] clk: qcom: clk-alpha-pll: Add support for helper functions
Quoting Taniya Das (2020-10-16 11:43:32)
Quoted 6 lines
Introduce
clk_alpha_pll_write_configandalpha_pll_check_rate_marginhelper functions to be across PLL configure functions and PLL set rate functions.Signed-off-by Taniya Das <[email protected]>---
Applied to clk-next
PATCH v3 2/4 clk: qcom: clk-alpha-pll: Add support for controlling Agera PLLs
In reply to Taniya DasAdd programming sequence support for managing the Agera PLLs.
--- drivers/clk/qcom/clk-alpha-pll.c | 62 ++++++++++++++++++++++++++++++++++++++++ drivers/clk/qcom/clk-alpha-pll.h | 4 +++ 2 files changed, 66 insertions(+)
drivers/clk/qcom/clk-alpha-pll.c +62 -0
@@ -116,6 +116,16 @@ const u8 clk_alpha_pll_regs[][PLL_OFF_MAX_REGS] = { [PLL_OFF_OPMODE] = 0x38, [PLL_OFF_ALPHA_VAL] = 0x40, }, + [CLK_ALPHA_PLL_TYPE_AGERA] = { + [PLL_OFF_L_VAL] = 0x04, + [PLL_OFF_ALPHA_VAL] = 0x08, + [PLL_OFF_USER_CTL] = 0x0c, + [PLL_OFF_CONFIG_CTL] = 0x10, + [PLL_OFF_CONFIG_CTL_U] = 0x14, + [PLL_OFF_TEST_CTL] = 0x18, + [PLL_OFF_TEST_CTL_U] = 0x1c, + [PLL_OFF_STATUS] = 0x2c, + }, };EXPORT_SYMBOL_GPL (clk_alpha_pll_regs);
@@ -1538,3 +1548,55 @@ const struct clk_ops clk_alpha_pll_postdiv_lucid_ops = { .set_rate = clk_alpha_pll_postdiv_fabia_set_rate, };EXPORT_SYMBOL_GPL (clk_alpha_pll_postdiv_lucid_ops); + +void clk_agera_pll_configure (struct clk_alpha_pll *pll,struct regmap *regmap, +const struct alpha_pll_config *config) +{ +clk_alpha_pll_write_config (regmap,PLL_L_VAL (pll), config->l); +clk_alpha_pll_write_config (regmap,PLL_ALPHA_VAL (pll), config->alpha); +clk_alpha_pll_write_config (regmap,PLL_USER_CTL (pll), + config->user_ctl_val); +clk_alpha_pll_write_config (regmap,PLL_CONFIG_CTL (pll), + config->config_ctl_val); +clk_alpha_pll_write_config (regmap,PLL_CONFIG_CTL_U (pll), + config->config_ctl_hi_val); +clk_alpha_pll_write_config (regmap,PLL_TEST_CTL (pll), + config->test_ctl_val); +clk_alpha_pll_write_config (regmap,PLL_TEST_CTL_U (pll), + config->test_ctl_hi_val); +} +EXPORT_SYMBOL_GPL (clk_agera_pll_configure); + +static int clk_alpha_pll_agera_set_rate (struct clk_hw *hw,unsigned long rate, +unsigned long prate) +{ +struct clk_alpha_pll *pll =to_clk_alpha_pll (hw); +u32 l, alpha_width =pll_alpha_width (pll); +int ret; +unsigned long rrate; +u64 a; + + rrate =alpha_pll_round_rate (rate, prate, &l, &a, alpha_width); + ret =alpha_pll_check_rate_margin (hw, rrate, rate); +if (ret <0 ) +return ret; + +/* change L_VAL without having to go through the power on sequence */ +regmap_write (pll->clkr.regmap,PLL_L_VAL (pll), l); +regmap_write (pll->clkr.regmap,PLL_ALPHA_VAL (pll), a); + +if (clk_hw_is_enabled (hw)) +return wait_for_pll_enable_lock (pll); + +return 0 ; +} + +const struct clk_ops clk_alpha_pll_agera_ops = { + .enable = clk_alpha_pll_enable, + .disable = clk_alpha_pll_disable, + .is_enabled = clk_alpha_pll_is_enabled, + .recalc_rate = alpha_pll_fabia_recalc_rate, + .round_rate = clk_alpha_pll_round_rate, + .set_rate = clk_alpha_pll_agera_set_rate, +}; +EXPORT_SYMBOL_GPL (clk_alpha_pll_agera_ops);
drivers/clk/qcom/clk-alpha-pll.h +4 -0
@@ -15,6 +15,7 @@ enum {CLK_ALPHA_PLL_TYPE_FABIA ,CLK_ALPHA_PLL_TYPE_TRION ,CLK_ALPHA_PLL_TYPE_LUCID =CLK_ALPHA_PLL_TYPE_TRION , +CLK_ALPHA_PLL_TYPE_AGERA , CLK_ALPHA_PLL_TYPE_MAX, };
@@ -141,6 +142,7 @@ extern const struct clk_ops clk_alpha_pll_postdiv_trion_ops;extern const struct clk_ops clk_alpha_pll_lucid_ops;#define clk_alpha_pll_fixed_lucid_ops clk_alpha_pll_fixed_trion_opsextern const struct clk_ops clk_alpha_pll_postdiv_lucid_ops; +extern const struct clk_ops clk_alpha_pll_agera_ops;void clk_alpha_pll_configure (struct clk_alpha_pll *pll,struct regmap *regmap,const struct alpha_pll_config *config);
@@ -148,6 +150,8 @@ void clk_fabia_pll_configure(struct clk_alpha_pll *pll, struct regmap *regmap, const struct alpha_pll_config *config);void clk_trion_pll_configure (struct clk_alpha_pll *pll,struct regmap *regmap,const struct alpha_pll_config *config); +void clk_agera_pll_configure (struct clk_alpha_pll *pll,struct regmap *regmap, +const struct alpha_pll_config *config);#define clk_lucid_pll_configure (pll, regmap, config) \ clk_trion_pll_configure(pll, regmap, config)
--
Qualcomm INDIA, on behalf of Qualcomm Innovation Center, Inc.is a member of the Code Aurora Forum, hosted by the Linux Foundation.
Re: [PATCH v3 2/4] clk: qcom: clk-alpha-pll: Add support for controlling Agera PLLs
Quoting Taniya Das (2020-10-16 11:43:33)
Quoted 4 lines
Add programming sequence support for managing the Agera PLLs.
Signed-off-by Taniya Das <[email protected]>---
Applied to clk-next
PATCH v3 3/4 dt-bindings: clock: Add YAML schemas for the QCOM Camera clock bindings.
In reply to Taniya DasThe Camera Subsystem clock provider have a bunch of generic properties that are needed in a device tree. Add a YAML schemas for those.
Add clock ids for camera clocks which are required to bring the camera subsystem out of reset.
--- .../bindings/clock/qcom,sc7180-camcc.yaml | 73 +++++++++++++ include/dt-bindings/clock/qcom,camcc-sc7180.h | 121 +++++++++++++++++++++ 2 files changed, 194 insertions(+) create mode 100644 Documentation/devicetree/bindings/clock/qcom,sc7180-camcc.yaml create mode 100644 include/dt-bindings/clock/qcom,camcc-sc7180.h
Documentation/devicetree/bindings/clock/qcom,sc7180-camcc.yaml new file +73 -0
@@ -0,0 +1,73 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/clock/qcom,sc7180-camcc.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Qualcomm Camera Clock & Reset Controller Binding for SC7180 + +maintainers: + - Taniya Das <[email protected]> + +description: | + Qualcomm camera clock control module which supports the clocks, resets and + power domains on SC7180. + + See also: + - dt-bindings/clock/qcom,camcc-sc7180.h + +properties: + compatible: + const: qcom,sc7180-camcc + + clocks: + items: + - description: Board XO source + - description: Camera_ahb clock from GCC + - description: Camera XO clock from GCC + + clock-names: + items: + - const: bi_tcxo + - const: iface + - const: xo + + '#clock-cells': + const: 1 + + '#reset-cells': + const: 1 + + '#power-domain-cells': + const: 1 + + reg: + maxItems: 1 + +required: + - compatible + - reg + - clocks + - clock-names + - '#clock-cells' + - '#reset-cells' + - '#power-domain-cells' + +additionalProperties: false + +examples: + - | + #include <dt-bindings/clock/qcom,gcc-sc7180.h> + #include <dt-bindings/clock/qcom,rpmh.h> + clock-controller@ad00000 { + compatible = "qcom,sc7180-camcc"; + reg = <0x0ad00000 0x10000>; + clocks = <&rpmhcc RPMH_CXO_CLK>, + <&gcc GCC_CAMERA_AHB_CLK>, + <&gcc GCC_CAMERA_XO_CLK>; + clock-names = "bi_tcxo", "iface", "xo"; + #clock-cells = <1>; + #reset-cells = <1>; + #power-domain-cells = <1>; + }; +...
include/dt-bindings/clock/qcom,camcc-sc7180.h new file +121 -0
121 lines not on this page · raw message
--
Qualcomm INDIA, on behalf of Qualcomm Innovation Center, Inc.is a member of the Code Aurora Forum, hosted by the Linux Foundation.
Re: [PATCH v3 3/4] dt-bindings: clock: Add YAML schemas for the QCOM Camera clock bindings.
Quoted 6 lines · Taniya Das
The Camera Subsystem clock provider have a bunch of generic properties that are needed in a device tree. Add a YAML schemas for those.
Add clock ids for camera clocks which are required to bring the camera subsystem out of reset.
Quoted 8 lines
Signed-off-by Taniya Das <[email protected]>--- .../bindings/clock/qcom,sc7180-camcc.yaml | 73 +++++++++++++ include/dt-bindings/clock/qcom,camcc-sc7180.h | 121 +++++++++++++++++++++ 2 files changed, 194 insertions(+) create mode 100644 Documentation/devicetree/bindings/clock/qcom,sc7180-camcc.yaml create mode 100644 include/dt-bindings/clock/qcom,camcc-sc7180.h
Re: [PATCH v3 3/4] dt-bindings: clock: Add YAML schemas for the QCOM Camera clock bindings.
In reply to Taniya DasQuoting Taniya Das (2020-10-16 11:43:34)
Quoted 8 lines
The Camera Subsystem clock provider have a bunch of generic properties that are needed in a device tree. Add a YAML schemas for those.
Add clock ids for camera clocks which are required to bring the camera subsystem out of reset.
Signed-off-by Taniya Das <[email protected]>---
Applied to clk-next
PATCH v3 4/4 clk: qcom: camcc: Add camera clock controller driver for SC7180
In reply to Taniya DasAdd support for the camera clock controller found on SC7180 based devices. This would allow camera drivers to probe and control their clocks.
--- drivers/clk/qcom/Kconfig | 9 + drivers/clk/qcom/Makefile | 1 + drivers/clk/qcom/camcc-sc7180.c | 1736 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 1746 insertions(+) create mode 100644 drivers/clk/qcom/camcc-sc7180.c
drivers/clk/qcom/Kconfig +9 -0
@@ -290,6 +290,15 @@ config QCS_GCC_404 Say Y if you want to use multimedia devices or peripheral devices such as UART, SPI, I2C, USB, SD/eMMC, PCIe etc. +config SC_CAMCC_7180 + tristate "SC7180 Camera Clock Controller" + select SC_GCC_7180 + help + Support for the camera clock controller on Qualcomm Technologies, Inc + SC7180 devices. + Say Y if you want to support camera devices and functionality such as + capturing pictures. + config SC_DISPCC_7180 tristate "SC7180 Display Clock Controller" select SC_GCC_7180
drivers/clk/qcom/Makefile +1 -0
@@ -51,6 +51,7 @@ obj-$(CONFIG_QCOM_CLK_SMD_RPM) += clk-smd-rpm.o obj-$(CONFIG_QCS_GCC_404) += gcc-qcs404.o obj-$(CONFIG_QCS_Q6SSTOP_404) += q6sstop-qcs404.o obj-$(CONFIG_QCS_TURING_404) += turingcc-qcs404.o +obj-$(CONFIG_SC_CAMCC_7180) += camcc-sc7180.o obj-$(CONFIG_SC_DISPCC_7180) += dispcc-sc7180.o obj-$(CONFIG_SC_GCC_7180) += gcc-sc7180.o obj-$(CONFIG_SC_GPUCC_7180) += gpucc-sc7180.o
drivers/clk/qcom/camcc-sc7180.c new file +1736 -0
1,736 lines not on this page · raw message
--
Qualcomm INDIA, on behalf of Qualcomm Innovation Center, Inc.is a member of the Code Aurora Forum, hosted by the Linux Foundation.
Re: [PATCH v3 4/4] clk: qcom: camcc: Add camera clock controller driver for SC7180
Quoting Taniya Das (2020-10-16 11:43:35)
Quoted 5 lines
Add support for the camera clock controller found on SC7180 based devices. This would allow camera drivers to probe and control their clocks.
Signed-off-by Taniya Das <[email protected]>---
Applied to clk-next with some minor fixups.
Re: [PATCH v3 4/4] clk: qcom: camcc: Add camera clock controller driver for SC7180
Quoted 8 lines · Stephen Boyd
Quoting Taniya Das (2020-10-16 11:43:35)
Quoted 5 lines
Add support for the camera clock controller found on SC7180 based devices. This would allow camera drivers to probe and control their clocks.
Signed-off-by Taniya Das <[email protected]>---
Applied to clk-next with some minor fixups.
Quoted 8 lines · On Fri, Nov 6, 2020 at 8:43 AM <[email protected]> wrote:
FAILED linux-next/m68k-allmodconfig/m68k-gcc8 Fri Nov 06, 18:35
http://kisskb.ellerman.id.au/kisskb/buildresult/14393224/
Commit: Add linux-next specific files for 20201106
c34f157421f6905e6b4a79a312e9175dce2bc607Compiler: m68k-linux-gcc (GCC) 8.1.0 / GNU ld (GNU Binutils) 2.30
Quoted 8 lines
Possible errors
---------------
drivers/clk/qcom/camcc-sc7180.c:1672:8: error: implicit declaration of function 'pm_clk_runtime_resume'; did you mean 'pm_runtime_resume'? [-Werror=implicit-function-declaration]drivers/clk/qcom/camcc-sc7180.c:1681:3: error: implicit declaration of function 'pm_clk_runtime_suspend'; did you mean 'pm_runtime_suspend'? [-Werror=implicit-function-declaration]
cc1: some warnings being treated as errors
make[4]: *** [scripts/Makefile.build:283:drivers/clk/qcom/camcc-sc7180.o] Error 1
make[3]: *** [scripts/Makefile.build:500:drivers/clk/qcom] Error 2
The pm_clk_runtime_*() functions are only available if CONFIG_PM=y. No dummies are provided for the CONFIG_PM=n case yet.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds