aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2017-03-03 19:15:48 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2017-03-03 19:15:48 -0500
commita1a0db36d8c89243d989186108fe9196ad0e2c2d (patch)
tree93634985bdc1d390d44232fd91773f69a17bdba8 /drivers
parent0a040b2113ec226bcf56fcbe02d035bb5b30c35e (diff)
parentca2dea434d10e3a676482fdf6df17d20cdb3e907 (diff)
Merge tag 'armsoc-late' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull ARM SoC late DT updates from Arnd Bergmann: "These updates have been kept in a separate branch mostly because they rely on updates to the respective clk drivers to keep the shared header files in sync. This includes two branches for arm64 dt updates, both following up on earlier changes for the same platforms that are already merged: Samsung: - add USB3 support in Exynos7 - minor PM related updates Amlogic: - new machines: WeTek Set-top-boxes - various devices added to DT There are also a couple of bugfixes that trickled in since the start of the merge window: - The moxart_defconfig was not building the intended platform - CPU-hotplug was broken on ux500 - Coresight was broken on Juno (never worked)" * tag 'armsoc-late' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (26 commits) ARM: deconfig: fix the moxart defconfig ARM: ux500: resume the second core properly arm64: dts: juno: update definition for programmable replicator arm64: dts: exynos: Add regulators for Vbus and Vbus-Boost arm64: dts: exynos: Add USB 3.0 controller node for Exynos7 arm64: dts: exynos: Use macros for pinctrl configuration on Exynos7 pinctrl: dt-bindings: samsung: Add Exynos7 specific pinctrl macro definitions arm64: dts: exynos: Add initial configuration for DISP clocks for TM2/TM2e ARM64: dts: meson-gxbb-p200: add ADC laddered keys ARM64: dts: meson: meson-gx: add the SAR ADC ARM64: dts: meson-gxl: add the pwm_ao_b pin ARM64: dts: meson-gx: add the missing pwm_AO_ab node clk: gxbb: fix CLKID_ETH defined twice ARM64: dts: meson-gxl: rename Nexbox A95x for consistency clk: gxbb: add the SAR ADC clocks and expose them dt-bindings: amlogic: Add WeTek boards ARM64: dts: meson-gxbb: Add support for WeTek Hub and Play dt-bindings: vendor-prefix: Add wetek vendor prefix ARM64: dts: meson-gxm: Rename q200 and q201 DT files for consistency ARM64: dts: meson-gx: Add HDMI HPD/DDC pinctrl nodes ...
Diffstat (limited to 'drivers')
-rw-r--r--drivers/clk/meson/gxbb.c48
-rw-r--r--drivers/clk/meson/gxbb.h15
2 files changed, 57 insertions, 6 deletions
diff --git a/drivers/clk/meson/gxbb.c b/drivers/clk/meson/gxbb.c
index 9d9af446bafc..1c1ec137a3cc 100644
--- a/drivers/clk/meson/gxbb.c
+++ b/drivers/clk/meson/gxbb.c
@@ -564,6 +564,46 @@ static struct clk_gate gxbb_clk81 = {
564 }, 564 },
565}; 565};
566 566
567static struct clk_mux gxbb_sar_adc_clk_sel = {
568 .reg = (void *)HHI_SAR_CLK_CNTL,
569 .mask = 0x3,
570 .shift = 9,
571 .lock = &clk_lock,
572 .hw.init = &(struct clk_init_data){
573 .name = "sar_adc_clk_sel",
574 .ops = &clk_mux_ops,
575 /* NOTE: The datasheet doesn't list the parents for bit 10 */
576 .parent_names = (const char *[]){ "xtal", "clk81", },
577 .num_parents = 2,
578 },
579};
580
581static struct clk_divider gxbb_sar_adc_clk_div = {
582 .reg = (void *)HHI_SAR_CLK_CNTL,
583 .shift = 0,
584 .width = 8,
585 .lock = &clk_lock,
586 .hw.init = &(struct clk_init_data){
587 .name = "sar_adc_clk_div",
588 .ops = &clk_divider_ops,
589 .parent_names = (const char *[]){ "sar_adc_clk_sel" },
590 .num_parents = 1,
591 },
592};
593
594static struct clk_gate gxbb_sar_adc_clk = {
595 .reg = (void *)HHI_SAR_CLK_CNTL,
596 .bit_idx = 8,
597 .lock = &clk_lock,
598 .hw.init = &(struct clk_init_data){
599 .name = "sar_adc_clk",
600 .ops = &clk_gate_ops,
601 .parent_names = (const char *[]){ "sar_adc_clk_div" },
602 .num_parents = 1,
603 .flags = CLK_SET_RATE_PARENT,
604 },
605};
606
567/* Everything Else (EE) domain gates */ 607/* Everything Else (EE) domain gates */
568static MESON_GATE(gxbb_ddr, HHI_GCLK_MPEG0, 0); 608static MESON_GATE(gxbb_ddr, HHI_GCLK_MPEG0, 0);
569static MESON_GATE(gxbb_dos, HHI_GCLK_MPEG0, 1); 609static MESON_GATE(gxbb_dos, HHI_GCLK_MPEG0, 1);
@@ -754,6 +794,9 @@ static struct clk_hw_onecell_data gxbb_hw_onecell_data = {
754 [CLKID_SD_EMMC_A] = &gxbb_emmc_a.hw, 794 [CLKID_SD_EMMC_A] = &gxbb_emmc_a.hw,
755 [CLKID_SD_EMMC_B] = &gxbb_emmc_b.hw, 795 [CLKID_SD_EMMC_B] = &gxbb_emmc_b.hw,
756 [CLKID_SD_EMMC_C] = &gxbb_emmc_c.hw, 796 [CLKID_SD_EMMC_C] = &gxbb_emmc_c.hw,
797 [CLKID_SAR_ADC_CLK] = &gxbb_sar_adc_clk.hw,
798 [CLKID_SAR_ADC_SEL] = &gxbb_sar_adc_clk_sel.hw,
799 [CLKID_SAR_ADC_DIV] = &gxbb_sar_adc_clk_div.hw,
757 }, 800 },
758 .num = NR_CLKS, 801 .num = NR_CLKS,
759}; 802};
@@ -856,6 +899,7 @@ static struct clk_gate *gxbb_clk_gates[] = {
856 &gxbb_emmc_a, 899 &gxbb_emmc_a,
857 &gxbb_emmc_b, 900 &gxbb_emmc_b,
858 &gxbb_emmc_c, 901 &gxbb_emmc_c,
902 &gxbb_sar_adc_clk,
859}; 903};
860 904
861static int gxbb_clkc_probe(struct platform_device *pdev) 905static int gxbb_clkc_probe(struct platform_device *pdev)
@@ -888,6 +932,10 @@ static int gxbb_clkc_probe(struct platform_device *pdev)
888 gxbb_mpeg_clk_sel.reg = clk_base + (u64)gxbb_mpeg_clk_sel.reg; 932 gxbb_mpeg_clk_sel.reg = clk_base + (u64)gxbb_mpeg_clk_sel.reg;
889 gxbb_mpeg_clk_div.reg = clk_base + (u64)gxbb_mpeg_clk_div.reg; 933 gxbb_mpeg_clk_div.reg = clk_base + (u64)gxbb_mpeg_clk_div.reg;
890 934
935 /* Populate the base address for the SAR ADC clks */
936 gxbb_sar_adc_clk_sel.reg = clk_base + (u64)gxbb_sar_adc_clk_sel.reg;
937 gxbb_sar_adc_clk_div.reg = clk_base + (u64)gxbb_sar_adc_clk_div.reg;
938
891 /* Populate base address for gates */ 939 /* Populate base address for gates */
892 for (i = 0; i < ARRAY_SIZE(gxbb_clk_gates); i++) 940 for (i = 0; i < ARRAY_SIZE(gxbb_clk_gates); i++)
893 gxbb_clk_gates[i]->reg = clk_base + 941 gxbb_clk_gates[i]->reg = clk_base +
diff --git a/drivers/clk/meson/gxbb.h b/drivers/clk/meson/gxbb.h
index 0252939ba58f..8ee2022ce5d5 100644
--- a/drivers/clk/meson/gxbb.h
+++ b/drivers/clk/meson/gxbb.h
@@ -191,7 +191,7 @@
191#define CLKID_PERIPHS 20 191#define CLKID_PERIPHS 20
192#define CLKID_SPICC 21 192#define CLKID_SPICC 21
193/* CLKID_I2C */ 193/* CLKID_I2C */
194#define CLKID_SAR_ADC 23 194/* #define CLKID_SAR_ADC */
195#define CLKID_SMART_CARD 24 195#define CLKID_SMART_CARD 24
196#define CLKID_RNG0 25 196#define CLKID_RNG0 25
197#define CLKID_UART0 26 197#define CLKID_UART0 26
@@ -204,7 +204,7 @@
204#define CLKID_ASSIST_MISC 33 204#define CLKID_ASSIST_MISC 33
205/* CLKID_SPI */ 205/* CLKID_SPI */
206#define CLKID_I2S_SPDIF 35 206#define CLKID_I2S_SPDIF 35
207#define CLKID_ETH 36 207/* CLKID_ETH */
208#define CLKID_DEMUX 37 208#define CLKID_DEMUX 37
209#define CLKID_AIU_GLUE 38 209#define CLKID_AIU_GLUE 38
210#define CLKID_IEC958 39 210#define CLKID_IEC958 39
@@ -231,13 +231,13 @@
231#define CLKID_AHB_DATA_BUS 60 231#define CLKID_AHB_DATA_BUS 60
232#define CLKID_AHB_CTRL_BUS 61 232#define CLKID_AHB_CTRL_BUS 61
233#define CLKID_HDMI_INTR_SYNC 62 233#define CLKID_HDMI_INTR_SYNC 62
234#define CLKID_HDMI_PCLK 63 234/* CLKID_HDMI_PCLK */
235/* CLKID_USB1_DDR_BRIDGE */ 235/* CLKID_USB1_DDR_BRIDGE */
236/* CLKID_USB0_DDR_BRIDGE */ 236/* CLKID_USB0_DDR_BRIDGE */
237#define CLKID_MMC_PCLK 66 237#define CLKID_MMC_PCLK 66
238#define CLKID_DVIN 67 238#define CLKID_DVIN 67
239#define CLKID_UART2 68 239#define CLKID_UART2 68
240#define CLKID_SANA 69 240/* #define CLKID_SANA */
241#define CLKID_VPU_INTR 70 241#define CLKID_VPU_INTR 70
242#define CLKID_SEC_AHB_AHB3_BRIDGE 71 242#define CLKID_SEC_AHB_AHB3_BRIDGE 71
243#define CLKID_CLK81_A53 72 243#define CLKID_CLK81_A53 72
@@ -245,7 +245,7 @@
245#define CLKID_VCLK2_VENCI1 74 245#define CLKID_VCLK2_VENCI1 74
246#define CLKID_VCLK2_VENCP0 75 246#define CLKID_VCLK2_VENCP0 75
247#define CLKID_VCLK2_VENCP1 76 247#define CLKID_VCLK2_VENCP1 76
248#define CLKID_GCLK_VENCI_INT0 77 248/* CLKID_GCLK_VENCI_INT0 */
249#define CLKID_GCLK_VENCI_INT 78 249#define CLKID_GCLK_VENCI_INT 78
250#define CLKID_DAC_CLK 79 250#define CLKID_DAC_CLK 79
251#define CLKID_AOCLK_GATE 80 251#define CLKID_AOCLK_GATE 80
@@ -265,8 +265,11 @@
265/* CLKID_SD_EMMC_A */ 265/* CLKID_SD_EMMC_A */
266/* CLKID_SD_EMMC_B */ 266/* CLKID_SD_EMMC_B */
267/* CLKID_SD_EMMC_C */ 267/* CLKID_SD_EMMC_C */
268/* CLKID_SAR_ADC_CLK */
269/* CLKID_SAR_ADC_SEL */
270#define CLKID_SAR_ADC_DIV 99
268 271
269#define NR_CLKS 97 272#define NR_CLKS 100
270 273
271/* include the CLKIDs that have been made part of the stable DT binding */ 274/* include the CLKIDs that have been made part of the stable DT binding */
272#include <dt-bindings/clock/gxbb-clkc.h> 275#include <dt-bindings/clock/gxbb-clkc.h>