aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorJerome Brunet <jbrunet@baylibre.com>2019-03-29 12:06:48 -0400
committerNeil Armstrong <narmstrong@baylibre.com>2019-04-08 03:58:41 -0400
commit6d6d2a24b2c7a717a75f4e5f3a0e2ebd35ae5573 (patch)
tree640a25dbbeef226d9e2d8e36d1b7e101d5918458 /drivers
parentb18819c4acf16ac3273192b79c53f3b833b9a1f8 (diff)
clk: meson: axg-audio: don't register inputs in the onecell data
Clock inputs should not be exported outside the controller. It is a hack to have a stable global clock name within the clock controller, even for clocks external to the controller. There is an ongoing effort to replace this hack with something better. The first step is to not register those clocks in the provider anymore, so we can completely remove them later on. Signed-off-by: Jerome Brunet <jbrunet@baylibre.com> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> Link: https://lkml.kernel.org/r/20190329160649.31603-4-jbrunet@baylibre.com
Diffstat (limited to 'drivers')
-rw-r--r--drivers/clk/meson/axg-audio.c21
-rw-r--r--drivers/clk/meson/axg-audio.h29
2 files changed, 6 insertions, 44 deletions
diff --git a/drivers/clk/meson/axg-audio.c b/drivers/clk/meson/axg-audio.c
index 38fccffc171e..e8516f9c03d3 100644
--- a/drivers/clk/meson/axg-audio.c
+++ b/drivers/clk/meson/axg-audio.c
@@ -665,8 +665,7 @@ static int devm_clk_get_enable(struct device *dev, char *id)
665} 665}
666 666
667static int axg_register_clk_hw_input(struct device *dev, 667static int axg_register_clk_hw_input(struct device *dev,
668 const char *name, 668 const char *name)
669 unsigned int clkid)
670{ 669{
671 char *clk_name; 670 char *clk_name;
672 struct clk_hw *hw; 671 struct clk_hw *hw;
@@ -686,8 +685,6 @@ static int axg_register_clk_hw_input(struct device *dev,
686 if (err != -EPROBE_DEFER) 685 if (err != -EPROBE_DEFER)
687 dev_err(dev, "failed to get %s clock", name); 686 dev_err(dev, "failed to get %s clock", name);
688 } 687 }
689 } else {
690 axg_audio_hw_onecell_data.hws[clkid] = hw;
691 } 688 }
692 689
693 kfree(clk_name); 690 kfree(clk_name);
@@ -696,8 +693,7 @@ static int axg_register_clk_hw_input(struct device *dev,
696 693
697static int axg_register_clk_hw_inputs(struct device *dev, 694static int axg_register_clk_hw_inputs(struct device *dev,
698 const char *basename, 695 const char *basename,
699 unsigned int count, 696 unsigned int count)
700 unsigned int clkid)
701{ 697{
702 char *name; 698 char *name;
703 int i, ret; 699 int i, ret;
@@ -707,7 +703,7 @@ static int axg_register_clk_hw_inputs(struct device *dev,
707 if (!name) 703 if (!name)
708 return -ENOMEM; 704 return -ENOMEM;
709 705
710 ret = axg_register_clk_hw_input(dev, name, clkid + i); 706 ret = axg_register_clk_hw_input(dev, name);
711 kfree(name); 707 kfree(name);
712 if (ret) 708 if (ret)
713 return ret; 709 return ret;
@@ -759,26 +755,21 @@ static int axg_audio_clkc_probe(struct platform_device *pdev)
759 if (IS_ERR(hw)) 755 if (IS_ERR(hw))
760 return PTR_ERR(hw); 756 return PTR_ERR(hw);
761 757
762 axg_audio_hw_onecell_data.hws[AUD_CLKID_PCLK] = hw;
763
764 /* Register optional input master clocks */ 758 /* Register optional input master clocks */
765 ret = axg_register_clk_hw_inputs(dev, "mst_in", 759 ret = axg_register_clk_hw_inputs(dev, "mst_in",
766 AUD_MST_IN_COUNT, 760 AUD_MST_IN_COUNT);
767 AUD_CLKID_MST0);
768 if (ret) 761 if (ret)
769 return ret; 762 return ret;
770 763
771 /* Register optional input slave sclks */ 764 /* Register optional input slave sclks */
772 ret = axg_register_clk_hw_inputs(dev, "slv_sclk", 765 ret = axg_register_clk_hw_inputs(dev, "slv_sclk",
773 AUD_SLV_SCLK_COUNT, 766 AUD_SLV_SCLK_COUNT);
774 AUD_CLKID_SLV_SCLK0);
775 if (ret) 767 if (ret)
776 return ret; 768 return ret;
777 769
778 /* Register optional input slave lrclks */ 770 /* Register optional input slave lrclks */
779 ret = axg_register_clk_hw_inputs(dev, "slv_lrclk", 771 ret = axg_register_clk_hw_inputs(dev, "slv_lrclk",
780 AUD_SLV_LRCLK_COUNT, 772 AUD_SLV_LRCLK_COUNT);
781 AUD_CLKID_SLV_LRCLK0);
782 if (ret) 773 if (ret)
783 return ret; 774 return ret;
784 775
diff --git a/drivers/clk/meson/axg-audio.h b/drivers/clk/meson/axg-audio.h
index 644f0b0fddf2..9644c2ff0b3b 100644
--- a/drivers/clk/meson/axg-audio.h
+++ b/drivers/clk/meson/axg-audio.h
@@ -51,35 +51,6 @@
51 * These indices are entirely contrived and do not map onto the hardware. 51 * These indices are entirely contrived and do not map onto the hardware.
52 */ 52 */
53 53
54#define AUD_CLKID_PCLK 0
55#define AUD_CLKID_MST0 1
56#define AUD_CLKID_MST1 2
57#define AUD_CLKID_MST2 3
58#define AUD_CLKID_MST3 4
59#define AUD_CLKID_MST4 5
60#define AUD_CLKID_MST5 6
61#define AUD_CLKID_MST6 7
62#define AUD_CLKID_MST7 8
63#define AUD_CLKID_SLV_SCLK0 9
64#define AUD_CLKID_SLV_SCLK1 10
65#define AUD_CLKID_SLV_SCLK2 11
66#define AUD_CLKID_SLV_SCLK3 12
67#define AUD_CLKID_SLV_SCLK4 13
68#define AUD_CLKID_SLV_SCLK5 14
69#define AUD_CLKID_SLV_SCLK6 15
70#define AUD_CLKID_SLV_SCLK7 16
71#define AUD_CLKID_SLV_SCLK8 17
72#define AUD_CLKID_SLV_SCLK9 18
73#define AUD_CLKID_SLV_LRCLK0 19
74#define AUD_CLKID_SLV_LRCLK1 20
75#define AUD_CLKID_SLV_LRCLK2 21
76#define AUD_CLKID_SLV_LRCLK3 22
77#define AUD_CLKID_SLV_LRCLK4 23
78#define AUD_CLKID_SLV_LRCLK5 24
79#define AUD_CLKID_SLV_LRCLK6 25
80#define AUD_CLKID_SLV_LRCLK7 26
81#define AUD_CLKID_SLV_LRCLK8 27
82#define AUD_CLKID_SLV_LRCLK9 28
83#define AUD_CLKID_MST_A_MCLK_SEL 59 54#define AUD_CLKID_MST_A_MCLK_SEL 59
84#define AUD_CLKID_MST_B_MCLK_SEL 60 55#define AUD_CLKID_MST_B_MCLK_SEL 60
85#define AUD_CLKID_MST_C_MCLK_SEL 61 56#define AUD_CLKID_MST_C_MCLK_SEL 61