mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-02 06:17:26 -04:00
Merge tag 'clk-meson-v6.12-1' of https://github.com/BayLibre/clk-meson into clk-amlogic
Pull Amlogic clk driver changes from Jerome Brunet: - Constify some Amlogic structs clean-up - Add SM1 eARC clocks for Amlogic - Introduce a symbol namespace for Amlogic clock specific symbols * tag 'clk-meson-v6.12-1' of https://github.com/BayLibre/clk-meson: clk: meson: introduce symbol namespace for amlogic clocks clk: meson: axg-audio: add sm1 earcrx clocks clk: meson: axg-audio: setup regmap max_register based on the SoC dt-bindings: clock: axg-audio: add earcrx clock ids clk: meson: s4: pll: Constify struct regmap_config clk: meson: s4: peripherals: Constify struct regmap_config clk: meson: c3: pll: Constify struct regmap_config clk: meson: c3: peripherals: Constify struct regmap_config clk: meson: a1: pll: Constify struct regmap_config clk: meson: a1: peripherals: Constify struct regmap_config
This commit is contained in:
@@ -2183,7 +2183,7 @@ static struct clk_regmap *const a1_periphs_regmaps[] = {
|
||||
&dmc_sel2,
|
||||
};
|
||||
|
||||
static struct regmap_config a1_periphs_regmap_cfg = {
|
||||
static const struct regmap_config a1_periphs_regmap_cfg = {
|
||||
.reg_bits = 32,
|
||||
.val_bits = 32,
|
||||
.reg_stride = 4,
|
||||
@@ -2246,3 +2246,4 @@ MODULE_DESCRIPTION("Amlogic A1 Peripherals Clock Controller driver");
|
||||
MODULE_AUTHOR("Jian Hu <jian.hu@amlogic.com>");
|
||||
MODULE_AUTHOR("Dmitry Rokosov <ddrokosov@sberdevices.ru>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
|
||||
@@ -295,7 +295,7 @@ static struct clk_regmap *const a1_pll_regmaps[] = {
|
||||
&hifi_pll,
|
||||
};
|
||||
|
||||
static struct regmap_config a1_pll_regmap_cfg = {
|
||||
static const struct regmap_config a1_pll_regmap_cfg = {
|
||||
.reg_bits = 32,
|
||||
.val_bits = 32,
|
||||
.reg_stride = 4,
|
||||
@@ -360,3 +360,4 @@ MODULE_DESCRIPTION("Amlogic S4 PLL Clock Controller driver");
|
||||
MODULE_AUTHOR("Jian Hu <jian.hu@amlogic.com>");
|
||||
MODULE_AUTHOR("Dmitry Rokosov <ddrokosov@sberdevices.ru>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
|
||||
@@ -342,3 +342,4 @@ module_platform_driver(axg_aoclkc_driver);
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic AXG Always-ON Clock Controller driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
|
||||
@@ -753,6 +753,9 @@ static struct clk_regmap toddr_d =
|
||||
AUD_PCLK_GATE(toddr_d, AUDIO_CLK_GATE_EN1, 1);
|
||||
static struct clk_regmap loopback_b =
|
||||
AUD_PCLK_GATE(loopback_b, AUDIO_CLK_GATE_EN1, 2);
|
||||
static struct clk_regmap earcrx =
|
||||
AUD_PCLK_GATE(earcrx, AUDIO_CLK_GATE_EN1, 6);
|
||||
|
||||
|
||||
static struct clk_regmap sm1_mst_a_mclk_sel =
|
||||
AUD_MST_MCLK_MUX(mst_a_mclk, AUDIO_SM1_MCLK_A_CTRL);
|
||||
@@ -766,6 +769,10 @@ static struct clk_regmap sm1_mst_e_mclk_sel =
|
||||
AUD_MST_MCLK_MUX(mst_e_mclk, AUDIO_SM1_MCLK_E_CTRL);
|
||||
static struct clk_regmap sm1_mst_f_mclk_sel =
|
||||
AUD_MST_MCLK_MUX(mst_f_mclk, AUDIO_SM1_MCLK_F_CTRL);
|
||||
static struct clk_regmap sm1_earcrx_cmdc_clk_sel =
|
||||
AUD_MST_MCLK_MUX(earcrx_cmdc_clk, AUDIO_EARCRX_CMDC_CLK_CTRL);
|
||||
static struct clk_regmap sm1_earcrx_dmac_clk_sel =
|
||||
AUD_MST_MCLK_MUX(earcrx_dmac_clk, AUDIO_EARCRX_DMAC_CLK_CTRL);
|
||||
|
||||
static struct clk_regmap sm1_mst_a_mclk_div =
|
||||
AUD_MST_MCLK_DIV(mst_a_mclk, AUDIO_SM1_MCLK_A_CTRL);
|
||||
@@ -779,6 +786,11 @@ static struct clk_regmap sm1_mst_e_mclk_div =
|
||||
AUD_MST_MCLK_DIV(mst_e_mclk, AUDIO_SM1_MCLK_E_CTRL);
|
||||
static struct clk_regmap sm1_mst_f_mclk_div =
|
||||
AUD_MST_MCLK_DIV(mst_f_mclk, AUDIO_SM1_MCLK_F_CTRL);
|
||||
static struct clk_regmap sm1_earcrx_cmdc_clk_div =
|
||||
AUD_MST_MCLK_DIV(earcrx_cmdc_clk, AUDIO_EARCRX_CMDC_CLK_CTRL);
|
||||
static struct clk_regmap sm1_earcrx_dmac_clk_div =
|
||||
AUD_MST_MCLK_DIV(earcrx_dmac_clk, AUDIO_EARCRX_DMAC_CLK_CTRL);
|
||||
|
||||
|
||||
static struct clk_regmap sm1_mst_a_mclk =
|
||||
AUD_MST_MCLK_GATE(mst_a_mclk, AUDIO_SM1_MCLK_A_CTRL);
|
||||
@@ -792,6 +804,10 @@ static struct clk_regmap sm1_mst_e_mclk =
|
||||
AUD_MST_MCLK_GATE(mst_e_mclk, AUDIO_SM1_MCLK_E_CTRL);
|
||||
static struct clk_regmap sm1_mst_f_mclk =
|
||||
AUD_MST_MCLK_GATE(mst_f_mclk, AUDIO_SM1_MCLK_F_CTRL);
|
||||
static struct clk_regmap sm1_earcrx_cmdc_clk =
|
||||
AUD_MST_MCLK_GATE(earcrx_cmdc_clk, AUDIO_EARCRX_CMDC_CLK_CTRL);
|
||||
static struct clk_regmap sm1_earcrx_dmac_clk =
|
||||
AUD_MST_MCLK_GATE(earcrx_dmac_clk, AUDIO_EARCRX_DMAC_CLK_CTRL);
|
||||
|
||||
static struct clk_regmap sm1_tdm_mclk_pad_0 = AUD_TDM_PAD_CTRL(
|
||||
tdm_mclk_pad_0, AUDIO_SM1_MST_PAD_CTRL0, 0, mclk_pad_ctrl_parent_data);
|
||||
@@ -1232,6 +1248,13 @@ static struct clk_hw *sm1_audio_hw_clks[] = {
|
||||
[AUD_CLKID_SYSCLK_A_EN] = &sm1_sysclk_a_en.hw,
|
||||
[AUD_CLKID_SYSCLK_B_DIV] = &sm1_sysclk_b_div.hw,
|
||||
[AUD_CLKID_SYSCLK_B_EN] = &sm1_sysclk_b_en.hw,
|
||||
[AUD_CLKID_EARCRX] = &earcrx.hw,
|
||||
[AUD_CLKID_EARCRX_CMDC_SEL] = &sm1_earcrx_cmdc_clk_sel.hw,
|
||||
[AUD_CLKID_EARCRX_CMDC_DIV] = &sm1_earcrx_cmdc_clk_div.hw,
|
||||
[AUD_CLKID_EARCRX_CMDC] = &sm1_earcrx_cmdc_clk.hw,
|
||||
[AUD_CLKID_EARCRX_DMAC_SEL] = &sm1_earcrx_dmac_clk_sel.hw,
|
||||
[AUD_CLKID_EARCRX_DMAC_DIV] = &sm1_earcrx_dmac_clk_div.hw,
|
||||
[AUD_CLKID_EARCRX_DMAC] = &sm1_earcrx_dmac_clk.hw,
|
||||
};
|
||||
|
||||
|
||||
@@ -1646,6 +1669,13 @@ static struct clk_regmap *const sm1_clk_regmaps[] = {
|
||||
&sm1_sysclk_a_en,
|
||||
&sm1_sysclk_b_div,
|
||||
&sm1_sysclk_b_en,
|
||||
&earcrx,
|
||||
&sm1_earcrx_cmdc_clk_sel,
|
||||
&sm1_earcrx_cmdc_clk_div,
|
||||
&sm1_earcrx_cmdc_clk,
|
||||
&sm1_earcrx_dmac_clk_sel,
|
||||
&sm1_earcrx_dmac_clk_div,
|
||||
&sm1_earcrx_dmac_clk,
|
||||
};
|
||||
|
||||
struct axg_audio_reset_data {
|
||||
@@ -1726,11 +1756,10 @@ static const struct reset_control_ops axg_audio_rstc_ops = {
|
||||
.status = axg_audio_reset_status,
|
||||
};
|
||||
|
||||
static const struct regmap_config axg_audio_regmap_cfg = {
|
||||
static struct regmap_config axg_audio_regmap_cfg = {
|
||||
.reg_bits = 32,
|
||||
.val_bits = 32,
|
||||
.reg_stride = 4,
|
||||
.max_register = AUDIO_CLK_SPDIFOUT_B_CTRL,
|
||||
};
|
||||
|
||||
struct audioclk_data {
|
||||
@@ -1739,6 +1768,7 @@ struct audioclk_data {
|
||||
struct meson_clk_hw_data hw_clks;
|
||||
unsigned int reset_offset;
|
||||
unsigned int reset_num;
|
||||
unsigned int max_register;
|
||||
};
|
||||
|
||||
static int axg_audio_clkc_probe(struct platform_device *pdev)
|
||||
@@ -1760,6 +1790,7 @@ static int axg_audio_clkc_probe(struct platform_device *pdev)
|
||||
if (IS_ERR(regs))
|
||||
return PTR_ERR(regs);
|
||||
|
||||
axg_audio_regmap_cfg.max_register = data->max_register;
|
||||
map = devm_regmap_init_mmio(dev, regs, &axg_audio_regmap_cfg);
|
||||
if (IS_ERR(map)) {
|
||||
dev_err(dev, "failed to init regmap: %ld\n", PTR_ERR(map));
|
||||
@@ -1828,6 +1859,7 @@ static const struct audioclk_data axg_audioclk_data = {
|
||||
.hws = axg_audio_hw_clks,
|
||||
.num = ARRAY_SIZE(axg_audio_hw_clks),
|
||||
},
|
||||
.max_register = AUDIO_CLK_PDMIN_CTRL1,
|
||||
};
|
||||
|
||||
static const struct audioclk_data g12a_audioclk_data = {
|
||||
@@ -1839,6 +1871,7 @@ static const struct audioclk_data g12a_audioclk_data = {
|
||||
},
|
||||
.reset_offset = AUDIO_SW_RESET,
|
||||
.reset_num = 26,
|
||||
.max_register = AUDIO_CLK_SPDIFOUT_B_CTRL,
|
||||
};
|
||||
|
||||
static const struct audioclk_data sm1_audioclk_data = {
|
||||
@@ -1850,6 +1883,7 @@ static const struct audioclk_data sm1_audioclk_data = {
|
||||
},
|
||||
.reset_offset = AUDIO_SM1_SW_RESET0,
|
||||
.reset_num = 39,
|
||||
.max_register = AUDIO_EARCRX_DMAC_CLK_CTRL,
|
||||
};
|
||||
|
||||
static const struct of_device_id clkc_match_table[] = {
|
||||
@@ -1878,3 +1912,4 @@ module_platform_driver(axg_audio_driver);
|
||||
MODULE_DESCRIPTION("Amlogic AXG/G12A/SM1 Audio Clock driver");
|
||||
MODULE_AUTHOR("Jerome Brunet <jbrunet@baylibre.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
|
||||
@@ -64,5 +64,7 @@
|
||||
#define AUDIO_SM1_SW_RESET1 0x02C
|
||||
#define AUDIO_CLK81_CTRL 0x030
|
||||
#define AUDIO_CLK81_EN 0x034
|
||||
#define AUDIO_EARCRX_CMDC_CLK_CTRL 0x0D0
|
||||
#define AUDIO_EARCRX_DMAC_CLK_CTRL 0x0D4
|
||||
|
||||
#endif /*__AXG_AUDIO_CLKC_H */
|
||||
|
||||
@@ -2187,3 +2187,4 @@ module_platform_driver(axg_driver);
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic AXG Main Clock Controller driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
|
||||
@@ -2296,7 +2296,7 @@ static struct clk_regmap *const c3_periphs_clk_regmaps[] = {
|
||||
&vapb,
|
||||
};
|
||||
|
||||
static struct regmap_config clkc_regmap_config = {
|
||||
static const struct regmap_config clkc_regmap_config = {
|
||||
.reg_bits = 32,
|
||||
.val_bits = 32,
|
||||
.reg_stride = 4,
|
||||
@@ -2364,3 +2364,4 @@ module_platform_driver(c3_peripherals_driver);
|
||||
MODULE_DESCRIPTION("Amlogic C3 Peripherals Clock Controller driver");
|
||||
MODULE_AUTHOR("Chuan Liu <chuan.liu@amlogic.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
|
||||
@@ -678,7 +678,7 @@ static struct clk_regmap *const c3_pll_clk_regmaps[] = {
|
||||
&mclk1,
|
||||
};
|
||||
|
||||
static struct regmap_config clkc_regmap_config = {
|
||||
static const struct regmap_config clkc_regmap_config = {
|
||||
.reg_bits = 32,
|
||||
.val_bits = 32,
|
||||
.reg_stride = 4,
|
||||
@@ -745,3 +745,4 @@ module_platform_driver(c3_pll_driver);
|
||||
MODULE_DESCRIPTION("Amlogic C3 PLL Clock Controller driver");
|
||||
MODULE_AUTHOR("Chuan Liu <chuan.liu@amlogic.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
|
||||
@@ -65,8 +65,9 @@ const struct clk_ops meson_clk_cpu_dyndiv_ops = {
|
||||
.determine_rate = meson_clk_cpu_dyndiv_determine_rate,
|
||||
.set_rate = meson_clk_cpu_dyndiv_set_rate,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(meson_clk_cpu_dyndiv_ops);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_cpu_dyndiv_ops, CLK_MESON);
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic CPU Dynamic Clock divider");
|
||||
MODULE_AUTHOR("Neil Armstrong <narmstrong@baylibre.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
|
||||
@@ -130,14 +130,15 @@ const struct clk_ops meson_clk_dualdiv_ops = {
|
||||
.determine_rate = meson_clk_dualdiv_determine_rate,
|
||||
.set_rate = meson_clk_dualdiv_set_rate,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(meson_clk_dualdiv_ops);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_dualdiv_ops, CLK_MESON);
|
||||
|
||||
const struct clk_ops meson_clk_dualdiv_ro_ops = {
|
||||
.recalc_rate = meson_clk_dualdiv_recalc_rate,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(meson_clk_dualdiv_ro_ops);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_dualdiv_ro_ops, CLK_MESON);
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic dual divider driver");
|
||||
MODULE_AUTHOR("Neil Armstrong <narmstrong@baylibre.com>");
|
||||
MODULE_AUTHOR("Jerome Brunet <jbrunet@baylibre.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
|
||||
@@ -165,7 +165,7 @@ const struct clk_ops meson_clk_mpll_ro_ops = {
|
||||
.recalc_rate = mpll_recalc_rate,
|
||||
.determine_rate = mpll_determine_rate,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(meson_clk_mpll_ro_ops);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_mpll_ro_ops, CLK_MESON);
|
||||
|
||||
const struct clk_ops meson_clk_mpll_ops = {
|
||||
.recalc_rate = mpll_recalc_rate,
|
||||
@@ -173,8 +173,9 @@ const struct clk_ops meson_clk_mpll_ops = {
|
||||
.set_rate = mpll_set_rate,
|
||||
.init = mpll_init,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(meson_clk_mpll_ops);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_mpll_ops, CLK_MESON);
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic MPLL driver");
|
||||
MODULE_AUTHOR("Michael Turquette <mturquette@baylibre.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
|
||||
@@ -61,7 +61,7 @@ const struct clk_ops meson_clk_phase_ops = {
|
||||
.get_phase = meson_clk_phase_get_phase,
|
||||
.set_phase = meson_clk_phase_set_phase,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(meson_clk_phase_ops);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_phase_ops, CLK_MESON);
|
||||
|
||||
/*
|
||||
* This is a special clock for the audio controller.
|
||||
@@ -123,7 +123,7 @@ const struct clk_ops meson_clk_triphase_ops = {
|
||||
.get_phase = meson_clk_triphase_get_phase,
|
||||
.set_phase = meson_clk_triphase_set_phase,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(meson_clk_triphase_ops);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_triphase_ops, CLK_MESON);
|
||||
|
||||
/*
|
||||
* This is a special clock for the audio controller.
|
||||
@@ -178,9 +178,9 @@ const struct clk_ops meson_sclk_ws_inv_ops = {
|
||||
.get_phase = meson_sclk_ws_inv_get_phase,
|
||||
.set_phase = meson_sclk_ws_inv_set_phase,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(meson_sclk_ws_inv_ops);
|
||||
|
||||
EXPORT_SYMBOL_NS_GPL(meson_sclk_ws_inv_ops, CLK_MESON);
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic phase driver");
|
||||
MODULE_AUTHOR("Jerome Brunet <jbrunet@baylibre.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
|
||||
@@ -472,7 +472,7 @@ const struct clk_ops meson_clk_pcie_pll_ops = {
|
||||
.enable = meson_clk_pcie_pll_enable,
|
||||
.disable = meson_clk_pll_disable
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(meson_clk_pcie_pll_ops);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_pcie_pll_ops, CLK_MESON);
|
||||
|
||||
const struct clk_ops meson_clk_pll_ops = {
|
||||
.init = meson_clk_pll_init,
|
||||
@@ -483,15 +483,16 @@ const struct clk_ops meson_clk_pll_ops = {
|
||||
.enable = meson_clk_pll_enable,
|
||||
.disable = meson_clk_pll_disable
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(meson_clk_pll_ops);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_pll_ops, CLK_MESON);
|
||||
|
||||
const struct clk_ops meson_clk_pll_ro_ops = {
|
||||
.recalc_rate = meson_clk_pll_recalc_rate,
|
||||
.is_enabled = meson_clk_pll_is_enabled,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(meson_clk_pll_ro_ops);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_pll_ro_ops, CLK_MESON);
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic PLL driver");
|
||||
MODULE_AUTHOR("Carlo Caione <carlo@endlessm.com>");
|
||||
MODULE_AUTHOR("Jerome Brunet <jbrunet@baylibre.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
|
||||
@@ -49,12 +49,12 @@ const struct clk_ops clk_regmap_gate_ops = {
|
||||
.disable = clk_regmap_gate_disable,
|
||||
.is_enabled = clk_regmap_gate_is_enabled,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(clk_regmap_gate_ops);
|
||||
EXPORT_SYMBOL_NS_GPL(clk_regmap_gate_ops, CLK_MESON);
|
||||
|
||||
const struct clk_ops clk_regmap_gate_ro_ops = {
|
||||
.is_enabled = clk_regmap_gate_is_enabled,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(clk_regmap_gate_ro_ops);
|
||||
EXPORT_SYMBOL_NS_GPL(clk_regmap_gate_ro_ops, CLK_MESON);
|
||||
|
||||
static unsigned long clk_regmap_div_recalc_rate(struct clk_hw *hw,
|
||||
unsigned long prate)
|
||||
@@ -125,13 +125,13 @@ const struct clk_ops clk_regmap_divider_ops = {
|
||||
.determine_rate = clk_regmap_div_determine_rate,
|
||||
.set_rate = clk_regmap_div_set_rate,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(clk_regmap_divider_ops);
|
||||
EXPORT_SYMBOL_NS_GPL(clk_regmap_divider_ops, CLK_MESON);
|
||||
|
||||
const struct clk_ops clk_regmap_divider_ro_ops = {
|
||||
.recalc_rate = clk_regmap_div_recalc_rate,
|
||||
.determine_rate = clk_regmap_div_determine_rate,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(clk_regmap_divider_ro_ops);
|
||||
EXPORT_SYMBOL_NS_GPL(clk_regmap_divider_ro_ops, CLK_MESON);
|
||||
|
||||
static u8 clk_regmap_mux_get_parent(struct clk_hw *hw)
|
||||
{
|
||||
@@ -174,13 +174,14 @@ const struct clk_ops clk_regmap_mux_ops = {
|
||||
.set_parent = clk_regmap_mux_set_parent,
|
||||
.determine_rate = clk_regmap_mux_determine_rate,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(clk_regmap_mux_ops);
|
||||
EXPORT_SYMBOL_NS_GPL(clk_regmap_mux_ops, CLK_MESON);
|
||||
|
||||
const struct clk_ops clk_regmap_mux_ro_ops = {
|
||||
.get_parent = clk_regmap_mux_get_parent,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(clk_regmap_mux_ro_ops);
|
||||
EXPORT_SYMBOL_NS_GPL(clk_regmap_mux_ro_ops, CLK_MESON);
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic regmap backed clock driver");
|
||||
MODULE_AUTHOR("Jerome Brunet <jbrunet@baylibre.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
|
||||
@@ -477,3 +477,4 @@ module_platform_driver(g12a_aoclkc_driver);
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic G12A Always-ON Clock Controller driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
|
||||
@@ -5616,3 +5616,4 @@ module_platform_driver(g12a_driver);
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic G12/SM1 Main Clock Controller driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
|
||||
@@ -303,3 +303,4 @@ module_platform_driver(gxbb_aoclkc_driver);
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic GXBB Always-ON Clock Controller driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
|
||||
@@ -3571,3 +3571,4 @@ module_platform_driver(gxbb_driver);
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic GXBB Main Clock Controller driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
|
||||
@@ -88,7 +88,8 @@ int meson_aoclkc_probe(struct platform_device *pdev)
|
||||
|
||||
return devm_of_clk_add_hw_provider(dev, meson_clk_hw_get, (void *)&data->hw_clks);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(meson_aoclkc_probe);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_aoclkc_probe, CLK_MESON);
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic Always-ON Clock Controller helpers");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
|
||||
@@ -20,7 +20,8 @@ struct clk_hw *meson_clk_hw_get(struct of_phandle_args *clkspec, void *clk_hw_da
|
||||
|
||||
return data->hws[idx];
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(meson_clk_hw_get);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_clk_hw_get, CLK_MESON);
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic Clock Controller Utilities");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
|
||||
@@ -57,7 +57,8 @@ int meson_eeclkc_probe(struct platform_device *pdev)
|
||||
|
||||
return devm_of_clk_add_hw_provider(dev, meson_clk_hw_get, (void *)&data->hw_clks);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(meson_eeclkc_probe);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_eeclkc_probe, CLK_MESON);
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic Main Clock Controller Helpers");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
|
||||
@@ -3747,7 +3747,7 @@ static struct clk_regmap *const s4_periphs_clk_regmaps[] = {
|
||||
&s4_adc_extclk_in_gate,
|
||||
};
|
||||
|
||||
static struct regmap_config clkc_regmap_config = {
|
||||
static const struct regmap_config clkc_regmap_config = {
|
||||
.reg_bits = 32,
|
||||
.val_bits = 32,
|
||||
.reg_stride = 4,
|
||||
@@ -3814,3 +3814,4 @@ module_platform_driver(s4_driver);
|
||||
MODULE_DESCRIPTION("Amlogic S4 Peripherals Clock Controller driver");
|
||||
MODULE_AUTHOR("Yu Tu <yu.tu@amlogic.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
|
||||
@@ -799,7 +799,7 @@ static const struct reg_sequence s4_init_regs[] = {
|
||||
{ .reg = ANACTRL_MPLL_CTRL0, .def = 0x00000543 },
|
||||
};
|
||||
|
||||
static struct regmap_config clkc_regmap_config = {
|
||||
static const struct regmap_config clkc_regmap_config = {
|
||||
.reg_bits = 32,
|
||||
.val_bits = 32,
|
||||
.reg_stride = 4,
|
||||
@@ -873,3 +873,4 @@ module_platform_driver(s4_driver);
|
||||
MODULE_DESCRIPTION("Amlogic S4 PLL Clock Controller driver");
|
||||
MODULE_AUTHOR("Yu Tu <yu.tu@amlogic.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
|
||||
@@ -247,8 +247,9 @@ const struct clk_ops meson_sclk_div_ops = {
|
||||
.set_duty_cycle = sclk_div_set_duty_cycle,
|
||||
.init = sclk_div_init,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(meson_sclk_div_ops);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_sclk_div_ops, CLK_MESON);
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic Sample divider driver");
|
||||
MODULE_AUTHOR("Jerome Brunet <jbrunet@baylibre.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
|
||||
@@ -49,7 +49,7 @@ const struct clk_ops meson_vclk_gate_ops = {
|
||||
.disable = meson_vclk_gate_disable,
|
||||
.is_enabled = meson_vclk_gate_is_enabled,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(meson_vclk_gate_ops);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_vclk_gate_ops, CLK_MESON);
|
||||
|
||||
/* The VCLK Divider has supplementary reset & enable bits */
|
||||
|
||||
@@ -134,8 +134,9 @@ const struct clk_ops meson_vclk_div_ops = {
|
||||
.disable = meson_vclk_div_disable,
|
||||
.is_enabled = meson_vclk_div_is_enabled,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(meson_vclk_div_ops);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_vclk_div_ops, CLK_MESON);
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic vclk clock driver");
|
||||
MODULE_AUTHOR("Neil Armstrong <neil.armstrong@linaro.org>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
|
||||
@@ -92,8 +92,9 @@ static unsigned long meson_vid_pll_div_recalc_rate(struct clk_hw *hw,
|
||||
const struct clk_ops meson_vid_pll_div_ro_ops = {
|
||||
.recalc_rate = meson_vid_pll_div_recalc_rate,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(meson_vid_pll_div_ro_ops);
|
||||
EXPORT_SYMBOL_NS_GPL(meson_vid_pll_div_ro_ops, CLK_MESON);
|
||||
|
||||
MODULE_DESCRIPTION("Amlogic video pll divider driver");
|
||||
MODULE_AUTHOR("Neil Armstrong <narmstrong@baylibre.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(CLK_MESON);
|
||||
|
||||
@@ -155,5 +155,12 @@
|
||||
#define AUD_CLKID_SYSCLK_B_DIV 175
|
||||
#define AUD_CLKID_SYSCLK_A_EN 176
|
||||
#define AUD_CLKID_SYSCLK_B_EN 177
|
||||
#define AUD_CLKID_EARCRX 178
|
||||
#define AUD_CLKID_EARCRX_CMDC_SEL 179
|
||||
#define AUD_CLKID_EARCRX_CMDC_DIV 180
|
||||
#define AUD_CLKID_EARCRX_CMDC 181
|
||||
#define AUD_CLKID_EARCRX_DMAC_SEL 182
|
||||
#define AUD_CLKID_EARCRX_DMAC_DIV 183
|
||||
#define AUD_CLKID_EARCRX_DMAC 184
|
||||
|
||||
#endif /* __AXG_AUDIO_CLKC_BINDINGS_H */
|
||||
|
||||
Reference in New Issue
Block a user