aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Lechner <david@lechnology.com>2018-05-25 14:11:50 -0400
committerMichael Turquette <mturquette@baylibre.com>2018-05-30 15:48:49 -0400
commit4eff0bebf4ed5ed6d1a4dffe7dfd420b270c229a (patch)
treecbdbf8fecbeb97e530ae5d48284007a312b38e4d
parent043eaa70ad736380a631e820e32ad9176b020887 (diff)
clk: davinci: Fix link errors when not all SoCs are enabled
This fixes linker errors due to undefined symbols when one or more of the TI DaVinci SoCs is not enabled in the kernel config. Signed-off-by: David Lechner <david@lechnology.com> Signed-off-by: Michael Turquette <mturquette@baylibre.com> Link: lkml.kernel.org/r/20180525181150.17873-10-david@lechnology.com
-rw-r--r--drivers/clk/davinci/pll.c16
-rw-r--r--drivers/clk/davinci/pll.h11
-rw-r--r--drivers/clk/davinci/psc.c14
-rw-r--r--drivers/clk/davinci/psc.h12
-rw-r--r--include/linux/clk/davinci.h19
5 files changed, 65 insertions, 7 deletions
diff --git a/drivers/clk/davinci/pll.c b/drivers/clk/davinci/pll.c
index 84a343060bc8..65abd371692d 100644
--- a/drivers/clk/davinci/pll.c
+++ b/drivers/clk/davinci/pll.c
@@ -860,25 +860,41 @@ static struct davinci_pll_platform_data *davinci_pll_get_pdata(struct device *de
860} 860}
861 861
862/* needed in early boot for clocksource/clockevent */ 862/* needed in early boot for clocksource/clockevent */
863#ifdef CONFIG_ARCH_DAVINCI_DA850
863CLK_OF_DECLARE(da850_pll0, "ti,da850-pll0", of_da850_pll0_init); 864CLK_OF_DECLARE(da850_pll0, "ti,da850-pll0", of_da850_pll0_init);
865#endif
864 866
865static const struct of_device_id davinci_pll_of_match[] = { 867static const struct of_device_id davinci_pll_of_match[] = {
868#ifdef CONFIG_ARCH_DAVINCI_DA850
866 { .compatible = "ti,da850-pll1", .data = of_da850_pll1_init }, 869 { .compatible = "ti,da850-pll1", .data = of_da850_pll1_init },
870#endif
867 { } 871 { }
868}; 872};
869 873
870static const struct platform_device_id davinci_pll_id_table[] = { 874static const struct platform_device_id davinci_pll_id_table[] = {
875#ifdef CONFIG_ARCH_DAVINCI_DA830
871 { .name = "da830-pll", .driver_data = (kernel_ulong_t)da830_pll_init }, 876 { .name = "da830-pll", .driver_data = (kernel_ulong_t)da830_pll_init },
877#endif
878#ifdef CONFIG_ARCH_DAVINCI_DA850
872 { .name = "da850-pll0", .driver_data = (kernel_ulong_t)da850_pll0_init }, 879 { .name = "da850-pll0", .driver_data = (kernel_ulong_t)da850_pll0_init },
873 { .name = "da850-pll1", .driver_data = (kernel_ulong_t)da850_pll1_init }, 880 { .name = "da850-pll1", .driver_data = (kernel_ulong_t)da850_pll1_init },
881#endif
882#ifdef CONFIG_ARCH_DAVINCI_DM355
874 { .name = "dm355-pll1", .driver_data = (kernel_ulong_t)dm355_pll1_init }, 883 { .name = "dm355-pll1", .driver_data = (kernel_ulong_t)dm355_pll1_init },
875 { .name = "dm355-pll2", .driver_data = (kernel_ulong_t)dm355_pll2_init }, 884 { .name = "dm355-pll2", .driver_data = (kernel_ulong_t)dm355_pll2_init },
885#endif
886#ifdef CONFIG_ARCH_DAVINCI_DM365
876 { .name = "dm365-pll1", .driver_data = (kernel_ulong_t)dm365_pll1_init }, 887 { .name = "dm365-pll1", .driver_data = (kernel_ulong_t)dm365_pll1_init },
877 { .name = "dm365-pll2", .driver_data = (kernel_ulong_t)dm365_pll2_init }, 888 { .name = "dm365-pll2", .driver_data = (kernel_ulong_t)dm365_pll2_init },
889#endif
890#ifdef CONFIG_ARCH_DAVINCI_DM644x
878 { .name = "dm644x-pll1", .driver_data = (kernel_ulong_t)dm644x_pll1_init }, 891 { .name = "dm644x-pll1", .driver_data = (kernel_ulong_t)dm644x_pll1_init },
879 { .name = "dm644x-pll2", .driver_data = (kernel_ulong_t)dm644x_pll2_init }, 892 { .name = "dm644x-pll2", .driver_data = (kernel_ulong_t)dm644x_pll2_init },
893#endif
894#ifdef CONFIG_ARCH_DAVINCI_DM646x
880 { .name = "dm646x-pll1", .driver_data = (kernel_ulong_t)dm646x_pll1_init }, 895 { .name = "dm646x-pll1", .driver_data = (kernel_ulong_t)dm646x_pll1_init },
881 { .name = "dm646x-pll2", .driver_data = (kernel_ulong_t)dm646x_pll2_init }, 896 { .name = "dm646x-pll2", .driver_data = (kernel_ulong_t)dm646x_pll2_init },
897#endif
882 { } 898 { }
883}; 899};
884 900
diff --git a/drivers/clk/davinci/pll.h b/drivers/clk/davinci/pll.h
index b2e5c4496645..7cc354dd29e2 100644
--- a/drivers/clk/davinci/pll.h
+++ b/drivers/clk/davinci/pll.h
@@ -122,14 +122,19 @@ int of_davinci_pll_init(struct device *dev, struct device_node *node,
122 122
123/* Platform-specific callbacks */ 123/* Platform-specific callbacks */
124 124
125#ifdef CONFIG_ARCH_DAVINCI_DA850
125int da850_pll1_init(struct device *dev, void __iomem *base, struct regmap *cfgchip); 126int da850_pll1_init(struct device *dev, void __iomem *base, struct regmap *cfgchip);
126void of_da850_pll0_init(struct device_node *node); 127void of_da850_pll0_init(struct device_node *node);
127int of_da850_pll1_init(struct device *dev, void __iomem *base, struct regmap *cfgchip); 128int of_da850_pll1_init(struct device *dev, void __iomem *base, struct regmap *cfgchip);
128 129#endif
130#ifdef CONFIG_ARCH_DAVINCI_DM355
129int dm355_pll2_init(struct device *dev, void __iomem *base, struct regmap *cfgchip); 131int dm355_pll2_init(struct device *dev, void __iomem *base, struct regmap *cfgchip);
130 132#endif
133#ifdef CONFIG_ARCH_DAVINCI_DM644x
131int dm644x_pll2_init(struct device *dev, void __iomem *base, struct regmap *cfgchip); 134int dm644x_pll2_init(struct device *dev, void __iomem *base, struct regmap *cfgchip);
132 135#endif
136#ifdef CONFIG_ARCH_DAVINCI_DM646x
133int dm646x_pll2_init(struct device *dev, void __iomem *base, struct regmap *cfgchip); 137int dm646x_pll2_init(struct device *dev, void __iomem *base, struct regmap *cfgchip);
138#endif
134 139
135#endif /* __CLK_DAVINCI_PLL_H___ */ 140#endif /* __CLK_DAVINCI_PLL_H___ */
diff --git a/drivers/clk/davinci/psc.c b/drivers/clk/davinci/psc.c
index 6326ba1fe3cc..fffbed5e263b 100644
--- a/drivers/clk/davinci/psc.c
+++ b/drivers/clk/davinci/psc.c
@@ -513,20 +513,34 @@ int of_davinci_psc_clk_init(struct device *dev,
513} 513}
514 514
515static const struct of_device_id davinci_psc_of_match[] = { 515static const struct of_device_id davinci_psc_of_match[] = {
516#ifdef CONFIG_ARCH_DAVINCI_DA850
516 { .compatible = "ti,da850-psc0", .data = &of_da850_psc0_init_data }, 517 { .compatible = "ti,da850-psc0", .data = &of_da850_psc0_init_data },
517 { .compatible = "ti,da850-psc1", .data = &of_da850_psc1_init_data }, 518 { .compatible = "ti,da850-psc1", .data = &of_da850_psc1_init_data },
519#endif
518 { } 520 { }
519}; 521};
520 522
521static const struct platform_device_id davinci_psc_id_table[] = { 523static const struct platform_device_id davinci_psc_id_table[] = {
524#ifdef CONFIG_ARCH_DAVINCI_DA830
522 { .name = "da830-psc0", .driver_data = (kernel_ulong_t)&da830_psc0_init_data }, 525 { .name = "da830-psc0", .driver_data = (kernel_ulong_t)&da830_psc0_init_data },
523 { .name = "da830-psc1", .driver_data = (kernel_ulong_t)&da830_psc1_init_data }, 526 { .name = "da830-psc1", .driver_data = (kernel_ulong_t)&da830_psc1_init_data },
527#endif
528#ifdef CONFIG_ARCH_DAVINCI_DA850
524 { .name = "da850-psc0", .driver_data = (kernel_ulong_t)&da850_psc0_init_data }, 529 { .name = "da850-psc0", .driver_data = (kernel_ulong_t)&da850_psc0_init_data },
525 { .name = "da850-psc1", .driver_data = (kernel_ulong_t)&da850_psc1_init_data }, 530 { .name = "da850-psc1", .driver_data = (kernel_ulong_t)&da850_psc1_init_data },
531#endif
532#ifdef CONFIG_ARCH_DAVINCI_DM355
526 { .name = "dm355-psc", .driver_data = (kernel_ulong_t)&dm355_psc_init_data }, 533 { .name = "dm355-psc", .driver_data = (kernel_ulong_t)&dm355_psc_init_data },
534#endif
535#ifdef CONFIG_ARCH_DAVINCI_DM365
527 { .name = "dm365-psc", .driver_data = (kernel_ulong_t)&dm365_psc_init_data }, 536 { .name = "dm365-psc", .driver_data = (kernel_ulong_t)&dm365_psc_init_data },
537#endif
538#ifdef CONFIG_ARCH_DAVINCI_DM644x
528 { .name = "dm644x-psc", .driver_data = (kernel_ulong_t)&dm644x_psc_init_data }, 539 { .name = "dm644x-psc", .driver_data = (kernel_ulong_t)&dm644x_psc_init_data },
540#endif
541#ifdef CONFIG_ARCH_DAVINCI_DM646x
529 { .name = "dm646x-psc", .driver_data = (kernel_ulong_t)&dm646x_psc_init_data }, 542 { .name = "dm646x-psc", .driver_data = (kernel_ulong_t)&dm646x_psc_init_data },
543#endif
530 { } 544 { }
531}; 545};
532 546
diff --git a/drivers/clk/davinci/psc.h b/drivers/clk/davinci/psc.h
index c2a7df6413fe..6a42529d31a9 100644
--- a/drivers/clk/davinci/psc.h
+++ b/drivers/clk/davinci/psc.h
@@ -94,15 +94,27 @@ struct davinci_psc_init_data {
94 int (*psc_init)(struct device *dev, void __iomem *base); 94 int (*psc_init)(struct device *dev, void __iomem *base);
95}; 95};
96 96
97#ifdef CONFIG_ARCH_DAVINCI_DA830
97extern const struct davinci_psc_init_data da830_psc0_init_data; 98extern const struct davinci_psc_init_data da830_psc0_init_data;
98extern const struct davinci_psc_init_data da830_psc1_init_data; 99extern const struct davinci_psc_init_data da830_psc1_init_data;
100#endif
101#ifdef CONFIG_ARCH_DAVINCI_DA850
99extern const struct davinci_psc_init_data da850_psc0_init_data; 102extern const struct davinci_psc_init_data da850_psc0_init_data;
100extern const struct davinci_psc_init_data da850_psc1_init_data; 103extern const struct davinci_psc_init_data da850_psc1_init_data;
101extern const struct davinci_psc_init_data of_da850_psc0_init_data; 104extern const struct davinci_psc_init_data of_da850_psc0_init_data;
102extern const struct davinci_psc_init_data of_da850_psc1_init_data; 105extern const struct davinci_psc_init_data of_da850_psc1_init_data;
106#endif
107#ifdef CONFIG_ARCH_DAVINCI_DM355
103extern const struct davinci_psc_init_data dm355_psc_init_data; 108extern const struct davinci_psc_init_data dm355_psc_init_data;
109#endif
110#ifdef CONFIG_ARCH_DAVINCI_DM356
104extern const struct davinci_psc_init_data dm365_psc_init_data; 111extern const struct davinci_psc_init_data dm365_psc_init_data;
112#endif
113#ifdef CONFIG_ARCH_DAVINCI_DM644x
105extern const struct davinci_psc_init_data dm644x_psc_init_data; 114extern const struct davinci_psc_init_data dm644x_psc_init_data;
115#endif
116#ifdef CONFIG_ARCH_DAVINCI_DM646x
106extern const struct davinci_psc_init_data dm646x_psc_init_data; 117extern const struct davinci_psc_init_data dm646x_psc_init_data;
118#endif
107 119
108#endif /* __CLK_DAVINCI_PSC_H__ */ 120#endif /* __CLK_DAVINCI_PSC_H__ */
diff --git a/include/linux/clk/davinci.h b/include/linux/clk/davinci.h
index 62764c5cc86e..8a7b5cd7eac0 100644
--- a/include/linux/clk/davinci.h
+++ b/include/linux/clk/davinci.h
@@ -13,17 +13,28 @@
13 13
14/* function for registering clocks in early boot */ 14/* function for registering clocks in early boot */
15 15
16#ifdef CONFIG_ARCH_DAVINCI_DA830
16int da830_pll_init(struct device *dev, void __iomem *base, struct regmap *cfgchip); 17int da830_pll_init(struct device *dev, void __iomem *base, struct regmap *cfgchip);
18#endif
19#ifdef CONFIG_ARCH_DAVINCI_DA850
17int da850_pll0_init(struct device *dev, void __iomem *base, struct regmap *cfgchip); 20int da850_pll0_init(struct device *dev, void __iomem *base, struct regmap *cfgchip);
21#endif
22#ifdef CONFIG_ARCH_DAVINCI_DM355
18int dm355_pll1_init(struct device *dev, void __iomem *base, struct regmap *cfgchip); 23int dm355_pll1_init(struct device *dev, void __iomem *base, struct regmap *cfgchip);
24int dm355_psc_init(struct device *dev, void __iomem *base);
25#endif
26#ifdef CONFIG_ARCH_DAVINCI_DM365
19int dm365_pll1_init(struct device *dev, void __iomem *base, struct regmap *cfgchip); 27int dm365_pll1_init(struct device *dev, void __iomem *base, struct regmap *cfgchip);
20int dm365_pll2_init(struct device *dev, void __iomem *base, struct regmap *cfgchip); 28int dm365_pll2_init(struct device *dev, void __iomem *base, struct regmap *cfgchip);
21int dm644x_pll1_init(struct device *dev, void __iomem *base, struct regmap *cfgchip);
22int dm646x_pll1_init(struct device *dev, void __iomem *base, struct regmap *cfgchip);
23
24int dm355_psc_init(struct device *dev, void __iomem *base);
25int dm365_psc_init(struct device *dev, void __iomem *base); 29int dm365_psc_init(struct device *dev, void __iomem *base);
30#endif
31#ifdef CONFIG_ARCH_DAVINCI_DM644x
32int dm644x_pll1_init(struct device *dev, void __iomem *base, struct regmap *cfgchip);
26int dm644x_psc_init(struct device *dev, void __iomem *base); 33int dm644x_psc_init(struct device *dev, void __iomem *base);
34#endif
35#ifdef CONFIG_ARCH_DAVINCI_DM646x
36int dm646x_pll1_init(struct device *dev, void __iomem *base, struct regmap *cfgchip);
27int dm646x_psc_init(struct device *dev, void __iomem *base); 37int dm646x_psc_init(struct device *dev, void __iomem *base);
38#endif
28 39
29#endif /* __LINUX_CLK_DAVINCI_PLL_H___ */ 40#endif /* __LINUX_CLK_DAVINCI_PLL_H___ */