From: Bjorn Helgaas <bhelgaas@google.com>
To: Ben Dooks <ben.dooks@codethink.co.uk>
Cc: linux-sh@vger.kernel.org, linux-usb@vger.kernel.org,
linux-kernel@lists.codethink.co.uk,
sergei.shtylyov@cogentembedded.com, magnus.damn@opensource.se,
horms@verge.net.au, linux-pci@vger.kernel.org,
devicetree@vger.kernel.org
Subject: Re: [PATCH 1/9] pci-rcar-gen2: add devicetree support
Date: Fri, 4 Apr 2014 11:09:39 -0600 [thread overview]
Message-ID: <20140404170939.GI9007@google.com> (raw)
In-Reply-To: <1394128887-4197-2-git-send-email-ben.dooks@codethink.co.uk>
On Thu, Mar 06, 2014 at 06:01:19PM +0000, Ben Dooks wrote:
> Add OF match table for pci-rcar-gen2 driver for device tree support.
>
> Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
I'm not sure what the status of this is. I saw comments about a missing
#include, but I didn't see a fixed repost. Ben, could you please repost
anything you have outstanding for me?
> ---
> Updates since v1:
> - moved documentation into patch
> - moved to using bus-range parsing
> - ensured usb phy can be linked to usb devices
>
> Cc: Bjorn Helgaas <bhelgaas@google.com>
> Cc: Simon Horman <horms@verge.net.au>
> Cc: linux-pci@vger.kernel.org
> Cc: linux-sh@vger.kernel.org
> Cc: devicetree@vger.kernel.org
> ---
> .../bindings/pci/renessas,pci-rcar-gen2.txt | 52 ++++++++++++++++++++++
> drivers/pci/host/pci-rcar-gen2.c | 33 +++++++++++++-
> 2 files changed, 83 insertions(+), 2 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/pci/renessas,pci-rcar-gen2.txt
>
> diff --git a/Documentation/devicetree/bindings/pci/renessas,pci-rcar-gen2.txt b/Documentation/devicetree/bindings/pci/renessas,pci-rcar-gen2.txt
> new file mode 100644
> index 0000000..bd6d291
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/pci/renessas,pci-rcar-gen2.txt
> @@ -0,0 +1,52 @@
> +Renesas AHB to PCI bridge
> +-------------------------
> +
> +This is the bridge used internally to connect the USB controllers to the
> +AHB. There is one bridge instance per USB port consiting of an internal
> +OHCI and EHCI controller.
> +
> +Required properties:
> + - compatible: "renesas,pci-r8a7790" for the R8A7790 SoC
> + - reg : A list of physical regions to access the device. The first is
> + the operational registers for the OHCI/EHCI controller and the
> + second region is for the bridge configuration and control registers.
> + - interrupts : interrupt for the device
> + - clocks : The reference to the device clock
> + - bus-range: The PCI bus number ranges. As this is a single bus, the range
> + should be specified as the same value twice.
> +
> +
> +Example SoC configuration:
> +
> + pci0: pci@ee090000 {
> + compatible = "renesas,pci-r8a7790";
> + clocks = <&mstp7_clks R8A7790_CLK_EHCI>;
> + reg = <0x0 0xee090000 0x0 0xc00>,
> + <0x0 0xee080000 0x0 0x1100>;
> + interrupts = <0 108 IRQ_TYPE_LEVEL_HIGH>;
> + status = "disabled";
> +
> + bus-range = <0 0>;
> + #address-cells = <3>;
> + #size-cells = <2>;
> + };
> +
> +Example board setup:
> +
> +&pci1 {
> + status = "okay";
> + pinctrl-0 = <&usb1_pins>;
> + pinctrl-names = "default";
> +
> + pci@0,1 {
> + reg = <0x800 0 0 0 0>;
> + device_type = "pci";
> + usb-phy = <&usbphy>;
> + };
> +
> + pci@0,2 {
> + reg = <0x1000 0 0 0 0>;
> + device_type = "pci";
> + usb-phy = <&usbphy>;
> + };
> +};
> diff --git a/drivers/pci/host/pci-rcar-gen2.c b/drivers/pci/host/pci-rcar-gen2.c
> index fd3e3ab..1216784 100644
> --- a/drivers/pci/host/pci-rcar-gen2.c
> +++ b/drivers/pci/host/pci-rcar-gen2.c
> @@ -16,6 +16,7 @@
> #include <linux/kernel.h>
> #include <linux/module.h>
> #include <linux/pci.h>
> +#include <linux/of_pci.h>
> #include <linux/platform_device.h>
> #include <linux/pm_runtime.h>
> #include <linux/sizes.h>
> @@ -98,6 +99,7 @@ struct rcar_pci_priv {
> struct resource io_res;
> struct resource mem_res;
> struct resource *cfg_res;
> + unsigned busnr;
> int irq;
> unsigned long window_size;
> };
> @@ -312,8 +314,8 @@ static int rcar_pci_setup(int nr, struct pci_sys_data *sys)
> pci_add_resource(&sys->resources, &priv->io_res);
> pci_add_resource(&sys->resources, &priv->mem_res);
>
> - /* Setup bus number based on platform device id */
> - sys->busnr = to_platform_device(priv->dev)->id;
> + /* Setup bus number based on platform device id / of bus-range */
> + sys->busnr = priv->busnr;
> return 1;
> }
>
> @@ -366,6 +368,23 @@ static int rcar_pci_probe(struct platform_device *pdev)
>
> priv->window_size = SZ_1G;
>
> + if (pdev->dev.of_node) {
> + struct resource busnr;
> + int ret;
> +
> + ret = of_pci_parse_bus_range(pdev->dev.of_node, &busnr);
> + if (ret < 0) {
> + dev_err(&pdev->dev, "failed to parse bus-range\n");
> + return ret;
> + }
> +
> + priv->busnr = busnr.start;
> + if (busnr.end != busnr.start)
> + dev_warn(&pdev->dev, "only one bus number supported\n");
> + } else {
> + priv->busnr = pdev->id;
> + }
> +
> hw_private[0] = priv;
> memset(&hw, 0, sizeof(hw));
> hw.nr_controllers = ARRAY_SIZE(hw_private);
> @@ -377,11 +396,21 @@ static int rcar_pci_probe(struct platform_device *pdev)
> return 0;
> }
>
> +#ifdef CONFIG_OF
> +static struct of_device_id rcar_pci_of_match[] = {
> + { .compatible = "renesas,pci-r8a7790", },
> + { },
> +};
> +
> +MODULE_DEVICE_TABLE(of, rcar_pci_of_match);
> +#endif
> +
> static struct platform_driver rcar_pci_driver = {
> .driver = {
> .name = "pci-rcar-gen2",
> .owner = THIS_MODULE,
> .suppress_bind_attrs = true,
> + .of_match_table = of_match_ptr(rcar_pci_of_match),
> },
> .probe = rcar_pci_probe,
> };
> --
> 1.9.0
>
WARNING: multiple messages have this Message-ID (diff)
From: Bjorn Helgaas <bhelgaas@google.com>
To: Ben Dooks <ben.dooks@codethink.co.uk>
Cc: linux-sh@vger.kernel.org, linux-usb@vger.kernel.org,
linux-kernel@lists.codethink.co.uk,
sergei.shtylyov@cogentembedded.com, magnus.damn@opensource.se,
horms@verge.net.au, linux-pci@vger.kernel.org,
devicetree@vger.kernel.org
Subject: Re: [PATCH 1/9] pci-rcar-gen2: add devicetree support
Date: Fri, 04 Apr 2014 17:09:39 +0000 [thread overview]
Message-ID: <20140404170939.GI9007@google.com> (raw)
In-Reply-To: <1394128887-4197-2-git-send-email-ben.dooks@codethink.co.uk>
On Thu, Mar 06, 2014 at 06:01:19PM +0000, Ben Dooks wrote:
> Add OF match table for pci-rcar-gen2 driver for device tree support.
>
> Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
I'm not sure what the status of this is. I saw comments about a missing
#include, but I didn't see a fixed repost. Ben, could you please repost
anything you have outstanding for me?
> ---
> Updates since v1:
> - moved documentation into patch
> - moved to using bus-range parsing
> - ensured usb phy can be linked to usb devices
>
> Cc: Bjorn Helgaas <bhelgaas@google.com>
> Cc: Simon Horman <horms@verge.net.au>
> Cc: linux-pci@vger.kernel.org
> Cc: linux-sh@vger.kernel.org
> Cc: devicetree@vger.kernel.org
> ---
> .../bindings/pci/renessas,pci-rcar-gen2.txt | 52 ++++++++++++++++++++++
> drivers/pci/host/pci-rcar-gen2.c | 33 +++++++++++++-
> 2 files changed, 83 insertions(+), 2 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/pci/renessas,pci-rcar-gen2.txt
>
> diff --git a/Documentation/devicetree/bindings/pci/renessas,pci-rcar-gen2.txt b/Documentation/devicetree/bindings/pci/renessas,pci-rcar-gen2.txt
> new file mode 100644
> index 0000000..bd6d291
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/pci/renessas,pci-rcar-gen2.txt
> @@ -0,0 +1,52 @@
> +Renesas AHB to PCI bridge
> +-------------------------
> +
> +This is the bridge used internally to connect the USB controllers to the
> +AHB. There is one bridge instance per USB port consiting of an internal
> +OHCI and EHCI controller.
> +
> +Required properties:
> + - compatible: "renesas,pci-r8a7790" for the R8A7790 SoC
> + - reg : A list of physical regions to access the device. The first is
> + the operational registers for the OHCI/EHCI controller and the
> + second region is for the bridge configuration and control registers.
> + - interrupts : interrupt for the device
> + - clocks : The reference to the device clock
> + - bus-range: The PCI bus number ranges. As this is a single bus, the range
> + should be specified as the same value twice.
> +
> +
> +Example SoC configuration:
> +
> + pci0: pci@ee090000 {
> + compatible = "renesas,pci-r8a7790";
> + clocks = <&mstp7_clks R8A7790_CLK_EHCI>;
> + reg = <0x0 0xee090000 0x0 0xc00>,
> + <0x0 0xee080000 0x0 0x1100>;
> + interrupts = <0 108 IRQ_TYPE_LEVEL_HIGH>;
> + status = "disabled";
> +
> + bus-range = <0 0>;
> + #address-cells = <3>;
> + #size-cells = <2>;
> + };
> +
> +Example board setup:
> +
> +&pci1 {
> + status = "okay";
> + pinctrl-0 = <&usb1_pins>;
> + pinctrl-names = "default";
> +
> + pci@0,1 {
> + reg = <0x800 0 0 0 0>;
> + device_type = "pci";
> + usb-phy = <&usbphy>;
> + };
> +
> + pci@0,2 {
> + reg = <0x1000 0 0 0 0>;
> + device_type = "pci";
> + usb-phy = <&usbphy>;
> + };
> +};
> diff --git a/drivers/pci/host/pci-rcar-gen2.c b/drivers/pci/host/pci-rcar-gen2.c
> index fd3e3ab..1216784 100644
> --- a/drivers/pci/host/pci-rcar-gen2.c
> +++ b/drivers/pci/host/pci-rcar-gen2.c
> @@ -16,6 +16,7 @@
> #include <linux/kernel.h>
> #include <linux/module.h>
> #include <linux/pci.h>
> +#include <linux/of_pci.h>
> #include <linux/platform_device.h>
> #include <linux/pm_runtime.h>
> #include <linux/sizes.h>
> @@ -98,6 +99,7 @@ struct rcar_pci_priv {
> struct resource io_res;
> struct resource mem_res;
> struct resource *cfg_res;
> + unsigned busnr;
> int irq;
> unsigned long window_size;
> };
> @@ -312,8 +314,8 @@ static int rcar_pci_setup(int nr, struct pci_sys_data *sys)
> pci_add_resource(&sys->resources, &priv->io_res);
> pci_add_resource(&sys->resources, &priv->mem_res);
>
> - /* Setup bus number based on platform device id */
> - sys->busnr = to_platform_device(priv->dev)->id;
> + /* Setup bus number based on platform device id / of bus-range */
> + sys->busnr = priv->busnr;
> return 1;
> }
>
> @@ -366,6 +368,23 @@ static int rcar_pci_probe(struct platform_device *pdev)
>
> priv->window_size = SZ_1G;
>
> + if (pdev->dev.of_node) {
> + struct resource busnr;
> + int ret;
> +
> + ret = of_pci_parse_bus_range(pdev->dev.of_node, &busnr);
> + if (ret < 0) {
> + dev_err(&pdev->dev, "failed to parse bus-range\n");
> + return ret;
> + }
> +
> + priv->busnr = busnr.start;
> + if (busnr.end != busnr.start)
> + dev_warn(&pdev->dev, "only one bus number supported\n");
> + } else {
> + priv->busnr = pdev->id;
> + }
> +
> hw_private[0] = priv;
> memset(&hw, 0, sizeof(hw));
> hw.nr_controllers = ARRAY_SIZE(hw_private);
> @@ -377,11 +396,21 @@ static int rcar_pci_probe(struct platform_device *pdev)
> return 0;
> }
>
> +#ifdef CONFIG_OF
> +static struct of_device_id rcar_pci_of_match[] = {
> + { .compatible = "renesas,pci-r8a7790", },
> + { },
> +};
> +
> +MODULE_DEVICE_TABLE(of, rcar_pci_of_match);
> +#endif
> +
> static struct platform_driver rcar_pci_driver = {
> .driver = {
> .name = "pci-rcar-gen2",
> .owner = THIS_MODULE,
> .suppress_bind_attrs = true,
> + .of_match_table = of_match_ptr(rcar_pci_of_match),
> },
> .probe = rcar_pci_probe,
> };
> --
> 1.9.0
>
next prev parent reply other threads:[~2014-04-04 17:09 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-06 18:01 Renesas RCar device-tree USB series Ben Dooks
2014-03-06 18:01 ` [PATCH 1/9] pci-rcar-gen2: add devicetree support Ben Dooks
2014-03-06 18:01 ` Ben Dooks
2014-03-06 18:01 ` Ben Dooks
2014-03-06 18:21 ` Ben Dooks
2014-03-30 19:10 ` Sergei Shtylyov
2014-03-30 19:10 ` Sergei Shtylyov
2014-03-30 19:10 ` Sergei Shtylyov
2014-03-30 19:21 ` Ben Dooks
2014-03-30 19:21 ` Ben Dooks
2014-03-30 19:26 ` Sergei Shtylyov
2014-03-30 19:26 ` Sergei Shtylyov
2014-03-30 19:40 ` Ben Dooks
2014-03-30 19:40 ` Ben Dooks
2014-03-30 20:10 ` Sergei Shtylyov
2014-03-30 20:10 ` Sergei Shtylyov
2014-03-31 21:23 ` Sergei Shtylyov
2014-03-31 21:23 ` Sergei Shtylyov
2014-03-30 20:28 ` Sergei Shtylyov
2014-03-30 20:28 ` Sergei Shtylyov
2014-04-04 17:09 ` Bjorn Helgaas [this message]
2014-04-04 17:09 ` Bjorn Helgaas
2014-04-04 17:44 ` Ben Dooks
2014-04-04 17:44 ` Ben Dooks
2014-04-04 17:44 ` Ben Dooks
2014-04-04 17:46 ` Sergei Shtylyov
2014-04-04 17:46 ` Sergei Shtylyov
2014-03-06 18:01 ` [PATCH 3/9] phy-rcar-usb-gen2: add device tree support Ben Dooks
2014-03-06 18:01 ` Ben Dooks
2014-03-06 18:16 ` Sergei Shtylyov
2014-03-06 19:16 ` Sergei Shtylyov
2014-03-06 18:19 ` Ben Dooks
2014-03-06 19:54 ` Sergei Shtylyov
2014-03-06 20:54 ` Sergei Shtylyov
2014-03-06 18:01 ` [PATCH 5/9] ARM: shmbobile: r8a7790.dtsi: add pci0/1/2 nodes Ben Dooks
2014-03-06 18:01 ` Ben Dooks
2014-03-31 22:18 ` Sergei Shtylyov
2014-03-31 22:18 ` Sergei Shtylyov
[not found] ` <1394128887-4197-1-git-send-email-ben.dooks-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org>
2014-03-06 18:01 ` [PATCH 6/9] ARM: shmobile: lager.dts: add pci 0/1/2 Ben Dooks
2014-03-06 18:01 ` Ben Dooks
2014-03-06 18:01 ` [PATCH 7/9] ARM: shmobile: r8a7790.dtsi: add usbphy node Ben Dooks
2014-03-06 18:01 ` Ben Dooks
2014-03-06 18:01 ` [PATCH 8/9] ARM: shmobile: lager.dts: add usbphy reference Ben Dooks
2014-03-06 18:01 ` Ben Dooks
2014-03-30 19:28 ` Sergei Shtylyov
2014-03-30 19:28 ` Sergei Shtylyov
[not found] ` <5338704C.2030501-M4DtvfQ/ZS1MRgGoP+s0PdBPR1lH4CV8@public.gmane.org>
2014-03-30 19:51 ` Ben Dooks
2014-03-30 19:51 ` Ben Dooks
2014-03-07 5:36 ` Renesas RCar device-tree USB series Magnus Damm
2014-03-07 14:30 ` Ben Dooks
2014-03-07 16:30 ` Sergei Shtylyov
2014-03-07 16:32 ` Ben Dooks
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140404170939.GI9007@google.com \
--to=bhelgaas@google.com \
--cc=ben.dooks@codethink.co.uk \
--cc=devicetree@vger.kernel.org \
--cc=horms@verge.net.au \
--cc=linux-kernel@lists.codethink.co.uk \
--cc=linux-pci@vger.kernel.org \
--cc=linux-sh@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=magnus.damn@opensource.se \
--cc=sergei.shtylyov@cogentembedded.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.