* [PATCH 0/3] ARM: imx6q: enable PCIe support @ 2013-09-26 3:33 Shawn Guo 2013-09-26 3:33 ` [PATCH 1/3] ARM: imx: Add LVDS general-purpose clocks to i.MX6Q Shawn Guo ` (2 more replies) 0 siblings, 3 replies; 4+ messages in thread From: Shawn Guo @ 2013-09-26 3:33 UTC (permalink / raw) To: linux-arm-kernel This is the arch bits of imx6 pcie patch series [1]. With a proper separation on the original patches, we can queue the arch bits via arm-soc tree now. Shawn [1] http://thread.gmane.org/gmane.linux.drivers.devicetree/44659 Sean Cross (3): ARM: imx: Add LVDS general-purpose clocks to i.MX6Q ARM: imx6q: clock and Kconfig update for PCIe support ARM: dts: imx6qdl: add pcie device node .../devicetree/bindings/clock/imx6q-clock.txt | 4 ++++ arch/arm/boot/dts/imx6qdl.dtsi | 16 +++++++++++++ arch/arm/mach-imx/Kconfig | 2 ++ arch/arm/mach-imx/clk-imx6q.c | 24 +++++++++++++++++++- 4 files changed, 45 insertions(+), 1 deletion(-) -- 1.7.9.5 ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/3] ARM: imx: Add LVDS general-purpose clocks to i.MX6Q 2013-09-26 3:33 [PATCH 0/3] ARM: imx6q: enable PCIe support Shawn Guo @ 2013-09-26 3:33 ` Shawn Guo 2013-09-26 3:33 ` [PATCH 2/3] ARM: imx6q: clock and Kconfig update for PCIe support Shawn Guo 2013-09-26 3:33 ` [PATCH 3/3] ARM: dts: imx6qdl: add pcie device node Shawn Guo 2 siblings, 0 replies; 4+ messages in thread From: Shawn Guo @ 2013-09-26 3:33 UTC (permalink / raw) To: linux-arm-kernel From: Sean Cross <xobs@kosagi.com> The i.MX6 has two general-purpose LVDS clocks that can be driven from a variety of sources. This patch adds a mux and a gate for both of these clocks. Signed-off-by: Sean Cross <xobs@kosagi.com> Signed-off-by: Shawn Guo <shawn.guo@linaro.org> --- .../devicetree/bindings/clock/imx6q-clock.txt | 4 ++++ arch/arm/mach-imx/clk-imx6q.c | 20 +++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/clock/imx6q-clock.txt b/Documentation/devicetree/bindings/clock/imx6q-clock.txt index e8b1baa..6aab72b 100644 --- a/Documentation/devicetree/bindings/clock/imx6q-clock.txt +++ b/Documentation/devicetree/bindings/clock/imx6q-clock.txt @@ -216,6 +216,10 @@ clocks and IDs. cko 201 vdoa 202 pll4_audio_div 203 + lvds1_sel 204 + lvds2_sel 205 + lvds1_gate 206 + lvds2_gate 207 Examples: diff --git a/arch/arm/mach-imx/clk-imx6q.c b/arch/arm/mach-imx/clk-imx6q.c index 913ad85..0e7f3bc 100644 --- a/arch/arm/mach-imx/clk-imx6q.c +++ b/arch/arm/mach-imx/clk-imx6q.c @@ -217,6 +217,11 @@ static const char *cko2_sels[] = { "uart_serial", "spdif", "asrc", "hsi_tx", }; static const char *cko_sels[] = { "cko1", "cko2", }; +static const char *lvds_sels[] = { + "dummy", "dummy", "dummy", "dummy", "dummy", "dummy", + "pll4_audio", "pll5_video", "pll8_mlb", "enet_ref", + "pcie_ref", "sata_ref", +}; enum mx6q_clks { dummy, ckil, ckih, osc, pll2_pfd0_352m, pll2_pfd1_594m, pll2_pfd2_396m, @@ -251,7 +256,8 @@ enum mx6q_clks { ssi2_ipg, ssi3_ipg, rom, usbphy1, usbphy2, ldb_di0_div_3_5, ldb_di1_div_3_5, sata_ref, sata_ref_100m, pcie_ref, pcie_ref_125m, enet_ref, usbphy1_gate, usbphy2_gate, pll4_post_div, pll5_post_div, pll5_video_div, eim_slow, - spdif, cko2_sel, cko2_podf, cko2, cko, vdoa, pll4_audio_div, clk_max + spdif, cko2_sel, cko2_podf, cko2, cko, vdoa, pll4_audio_div, + lvds1_sel, lvds2_sel, lvds1_gate, lvds2_gate, clk_max }; static struct clk *clk[clk_max]; @@ -342,6 +348,18 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node) base + 0xe0, 0, 2, 0, clk_enet_ref_table, &imx_ccm_lock); + clk[lvds1_sel] = imx_clk_mux("lvds1_sel", base + 0x160, 0, 5, lvds_sels, ARRAY_SIZE(lvds_sels)); + clk[lvds2_sel] = imx_clk_mux("lvds2_sel", base + 0x160, 5, 5, lvds_sels, ARRAY_SIZE(lvds_sels)); + + /* + * lvds1_gate and lvds2_gate are pseudo-gates. Both can be + * independently configured as clock inputs or outputs. We treat + * the "output_enable" bit as a gate, even though it's really just + * enabling clock output. + */ + clk[lvds1_gate] = imx_clk_gate("lvds1_gate", "dummy", base + 0x160, 10); + clk[lvds2_gate] = imx_clk_gate("lvds2_gate", "dummy", base + 0x160, 11); + /* name parent_name reg idx */ clk[pll2_pfd0_352m] = imx_clk_pfd("pll2_pfd0_352m", "pll2_bus", base + 0x100, 0); clk[pll2_pfd1_594m] = imx_clk_pfd("pll2_pfd1_594m", "pll2_bus", base + 0x100, 1); -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/3] ARM: imx6q: clock and Kconfig update for PCIe support 2013-09-26 3:33 [PATCH 0/3] ARM: imx6q: enable PCIe support Shawn Guo 2013-09-26 3:33 ` [PATCH 1/3] ARM: imx: Add LVDS general-purpose clocks to i.MX6Q Shawn Guo @ 2013-09-26 3:33 ` Shawn Guo 2013-09-26 3:33 ` [PATCH 3/3] ARM: dts: imx6qdl: add pcie device node Shawn Guo 2 siblings, 0 replies; 4+ messages in thread From: Shawn Guo @ 2013-09-26 3:33 UTC (permalink / raw) To: linux-arm-kernel From: Sean Cross <xobs@kosagi.com> Update imx6q clock initialization and Kconfig for PCIe support. Signed-off-by: Sean Cross <xobs@kosagi.com> Signed-off-by: Shawn Guo <shawn.guo@linaro.org> --- arch/arm/mach-imx/Kconfig | 2 ++ arch/arm/mach-imx/clk-imx6q.c | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index 9f67338..f0896ec 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig @@ -801,6 +801,8 @@ config SOC_IMX6Q select HAVE_IMX_SRC select HAVE_SMP select MFD_SYSCON + select MIGHT_HAVE_PCI + select PCI_DOMAINS if PCI select PINCTRL select PINCTRL_IMX6Q select PL310_ERRATA_588369 if CACHE_PL310 diff --git a/arch/arm/mach-imx/clk-imx6q.c b/arch/arm/mach-imx/clk-imx6q.c index 0e7f3bc..b54d9bb 100644 --- a/arch/arm/mach-imx/clk-imx6q.c +++ b/arch/arm/mach-imx/clk-imx6q.c @@ -622,6 +622,10 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node) if (ret) pr_warn("failed to set up CLKO: %d\n", ret); + /* All existing boards with PCIe use LVDS1 */ + if (IS_ENABLED(CONFIG_PCI_IMX6)) + clk_set_parent(clk[lvds1_sel], clk[sata_ref]); + /* Set initial power mode */ imx6q_set_lpm(WAIT_CLOCKED); -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 3/3] ARM: dts: imx6qdl: add pcie device node 2013-09-26 3:33 [PATCH 0/3] ARM: imx6q: enable PCIe support Shawn Guo 2013-09-26 3:33 ` [PATCH 1/3] ARM: imx: Add LVDS general-purpose clocks to i.MX6Q Shawn Guo 2013-09-26 3:33 ` [PATCH 2/3] ARM: imx6q: clock and Kconfig update for PCIe support Shawn Guo @ 2013-09-26 3:33 ` Shawn Guo 2 siblings, 0 replies; 4+ messages in thread From: Shawn Guo @ 2013-09-26 3:33 UTC (permalink / raw) To: linux-arm-kernel From: Sean Cross <xobs@kosagi.com> Add pcie device node for imx6qdl. Signed-off-by: Sean Cross <xobs@kosagi.com> Signed-off-by: Shawn Guo <shawn.guo@linaro.org> --- arch/arm/boot/dts/imx6qdl.dtsi | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/arch/arm/boot/dts/imx6qdl.dtsi b/arch/arm/boot/dts/imx6qdl.dtsi index ef51342..59154dc 100644 --- a/arch/arm/boot/dts/imx6qdl.dtsi +++ b/arch/arm/boot/dts/imx6qdl.dtsi @@ -116,6 +116,22 @@ arm,data-latency = <4 2 3>; }; + pcie: pcie at 0x01000000 { + compatible = "fsl,imx6q-pcie", "snps,dw-pcie"; + reg = <0x01ffc000 0x4000>; /* DBI */ + #address-cells = <3>; + #size-cells = <2>; + device_type = "pci"; + ranges = <0x00000800 0 0x01f00000 0x01f00000 0 0x00080000 /* configuration space */ + 0x81000000 0 0 0x01f80000 0 0x00010000 /* downstream I/O */ + 0x82000000 0 0x01000000 0x01000000 0 0x00f00000>; /* non-prefetchable memory */ + num-lanes = <1>; + interrupts = <0 123 0x04>; + clocks = <&clks 189>, <&clks 187>, <&clks 206>, <&clks 144>; + clock-names = "pcie_ref_125m", "sata_ref_100m", "lvds_gate", "pcie_axi"; + status = "disabled"; + }; + pmu { compatible = "arm,cortex-a9-pmu"; interrupts = <0 94 0x04>; -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2013-09-26 3:33 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-09-26 3:33 [PATCH 0/3] ARM: imx6q: enable PCIe support Shawn Guo 2013-09-26 3:33 ` [PATCH 1/3] ARM: imx: Add LVDS general-purpose clocks to i.MX6Q Shawn Guo 2013-09-26 3:33 ` [PATCH 2/3] ARM: imx6q: clock and Kconfig update for PCIe support Shawn Guo 2013-09-26 3:33 ` [PATCH 3/3] ARM: dts: imx6qdl: add pcie device node Shawn Guo
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).