lkml.org 
[lkml]   [2019]   [Feb]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [RFC 4/5] arm64: dts: Add nodes for PCIe IP blocks
From
Date
Am Donnerstag, den 31.01.2019, 12:43 -0800 schrieb Andrey Smirnov:
> Add nodes for two PCIe controllers found on i.MX8MQ.
>
> > Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
> > Cc: Shawn Guo <shawnguo@kernel.org>
> > Cc: Fabio Estevam <fabio.estevam@nxp.com>
> > Cc: Chris Healy <cphealy@gmail.com>
> > Cc: Lucas Stach <l.stach@pengutronix.de>
> > Cc: Leonard Crestez <leonard.crestez@nxp.com>
> > Cc: "A.s. Dong" <aisheng.dong@nxp.com>
> > Cc: Richard Zhu <hongxing.zhu@nxp.com>
> Cc: linux-imx@nxp.com
> Cc: linux-arm-kernel@lists.infradead.org
> Cc: linux-kernel@vger.kernel.org
> ---
>  arch/arm64/boot/dts/freescale/imx8mq.dtsi | 68 +++++++++++++++++++++++
>  1 file changed, 68 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/freescale/imx8mq.dtsi b/arch/arm64/boot/dts/freescale/imx8mq.dtsi
> index 89babc531380..d20e5c7e21a3 100644
> --- a/arch/arm64/boot/dts/freescale/imx8mq.dtsi
> +++ b/arch/arm64/boot/dts/freescale/imx8mq.dtsi
> @@ -6,6 +6,7 @@
>  
>  #include <dt-bindings/clock/imx8mq-clock.h>
>  #include <dt-bindings/power/imx8mq-power.h>
> +#include <dt-bindings/reset/imx8mq-reset.h>
>  #include <dt-bindings/gpio/gpio.h>
>  #include <dt-bindings/interrupt-controller/arm-gic.h>
>  #include "imx8mq-pinfunc.h"
> @@ -539,6 +540,73 @@
>   };
>  
> };
>  
> + pcie0: pcie@33800000 {
> + compatible = "fsl,imx8mq-pcie";
> + reg = <0x33800000 0x400000>,
> +       <0x1ff00000 0x80000>;
> + reg-names = "dbi", "config";
> + #address-cells = <3>;
> + #size-cells = <2>;
> + device_type = "pci";
> + bus-range = <0x00 0xff>;
> + ranges = <0x81000000 0 0x00000000 0x1ff80000 0 0x00010000 /* downstream I/O 64KB */
> +           0x82000000 0 0x18000000 0x18000000 0 0x07f00000>; /* non-prefetchable memory */
> + num-lanes = <1>;
> + interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>,
> +              <GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>; /* eDMA */

I don't think this IRQ is documented in any binding yet.

> + interrupt-names = "msi";
> + #interrupt-cells = <1>;
> + interrupt-map-mask = <0 0 0 0x7>;
> + interrupt-map = <0 0 0 1 &gic GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
> +                 <0 0 0 2 &gic GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>,
> +                 <0 0 0 3 &gic GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
> +                 <0 0 0 4 &gic GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
> + clocks = <&clk IMX8MQ_CLK_PCIE1_ROOT>,
> +          <&clk IMX8MQ_CLK_PCIE1_AUX>,

This is not the PCIe bus clock. The bus clock is whatever drives the
ref clock of the external bus. So on the i.MX8M-EVK this would be the
fixed clock generated by U1302.

The right thing to properly describe the HW is to extend the PCIe
driver to look for the aux clock on i.MX8M, just like we do with the
axi_inbound_clk on i.MX6SX.

Regards,
Lucas

> +          <&clk IMX8MQ_CLK_PCIE1_PHY>;
> + clock-names = "pcie", "pcie_bus", "pcie_phy";
> + fsl,max-link-speed = <2>;
> + power-domains = <&pgc_pcie>;
> + resets = <&src IMX8MQ_RESET_PCIEPHY>,
> +          <&src IMX8MQ_RESET_PCIE_CTRL_APPS_EN>,
> +          <&src IMX8MQ_RESET_PCIE_CTRL_APPS_TURNOFF>;
> + reset-names = "pciephy", "apps", "turnoff";
> + status = "disabled";
> + };
>

\
 
 \ /
  Last update: 2019-02-07 15:28    [W:0.173 / U:0.140 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site