From: nsekhar@ti.com (Sekhar Nori)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 6/6] ARM: davinci: da850: configure system configuration chip(CFGCHIP3) for emac
Date: Sun, 3 Feb 2013 18:15:03 +0530 [thread overview]
Message-ID: <510E5BCF.9080006@ti.com> (raw)
In-Reply-To: <1359380879-26306-7-git-send-email-prabhakar.lad@ti.com>
On 1/28/2013 7:17 PM, Prabhakar Lad wrote:
> From: Lad, Prabhakar <prabhakar.lad@ti.com>
>
> The system configuration chip CFGCHIP3, controls the emac module.
> This patch appropriately configures this register for emac and
> sets DA850_MII_MDIO_CLKEN_PIN GPIO pin appropriately.
>
> Signed-off-by: Lad, Prabhakar <prabhakar.lad@ti.com>
> Cc: linux-arm-kernel at lists.infradead.org
> Cc: linux-kernel at vger.kernel.org
> Cc: davinci-linux-open-source at linux.davincidsp.com
> Cc: netdev at vger.kernel.org
> Cc: devicetree-discuss at lists.ozlabs.org
> Cc: Sekhar Nori <nsekhar@ti.com>
> Cc: Heiko Schocher <hs@denx.de>
> ---
> arch/arm/mach-davinci/da8xx-dt.c | 28 ++++++++++++++++++++++++++++
> 1 files changed, 28 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/mach-davinci/da8xx-dt.c b/arch/arm/mach-davinci/da8xx-dt.c
> index e533a0a..4a096e3 100644
> --- a/arch/arm/mach-davinci/da8xx-dt.c
> +++ b/arch/arm/mach-davinci/da8xx-dt.c
> @@ -8,6 +8,7 @@
> * published by the Free Software Foundation.
> */
> #include <linux/io.h>
> +#include <linux/gpio.h>
> #include <linux/of_irq.h>
> #include <linux/of_platform.h>
> #include <linux/irqdomain.h>
> @@ -39,6 +40,32 @@ static void __init da8xx_init_irq(void)
>
> #ifdef CONFIG_ARCH_DAVINCI_DA850
>
> +static void __init da8xx_config_emac(void)
> +{
> +#define DA850_MII_MDIO_CLKEN_PIN GPIO_TO_PIN(2, 6)
> +#define DA850_EMAC_MODE_SELECT BIT(8)
> + void __iomem *cfg_chip3_base;
> + int ret;
> + u32 val;
> +
> + cfg_chip3_base = DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP3_REG);
> +
> + val = __raw_readl(cfg_chip3_base);
> + val &= ~DA850_EMAC_MODE_SELECT;
> + /* configure the CFGCHIP3 register for MII */
> + __raw_writel(val, cfg_chip3_base);
Use readl/writel instead.
> + pr_info("EMAC: MII PHY configured\n");
> +
> + ret = gpio_request(DA850_MII_MDIO_CLKEN_PIN, "mdio_clk_en");
> + if (ret) {
> + pr_warn("Cannot open GPIO %d\n",
> + DA850_MII_MDIO_CLKEN_PIN);
> + return;
> + }
> + /* Enable/Disable MII MDIO clock */
> + gpio_direction_output(DA850_MII_MDIO_CLKEN_PIN, 0);
> +}
> +
> struct of_dev_auxdata da8xx_auxdata[] __initdata = {
> OF_DEV_AUXDATA("ti,davinci_mdio", 0x01e24000, "davinci_mdio.0", NULL),
> OF_DEV_AUXDATA("ti,davinci-dm6467-emac", 0x01e20000, "davinci_emac.1",
> @@ -52,6 +79,7 @@ static void __init da850_init_machine(void)
> da8xx_auxdata, NULL);
>
> da8xx_uart_clk_enable();
> + da8xx_config_emac();
There are couple of issues with this implementation.
1) da8xx_config_emac() is specific to DA850 EVM, but masquerades as
generic for da8xx. Looks like you need two functions, one for soc
specific configuration and one board specific.
2) da8xx_config_emac() goes through all the time, whether the
particular board has emac module or not. Shouldn't
da8xx_config_emac() check if emac is actually enabled in the passed
dtb and only the do the configuration?
3) The function assumes mii is used always, you can use the rmii_en dt
property to check if rmii/mii is enabled and configure the soc/board
accordingly.
4) If the same function can work both for da850 and da830, then it can
be implemented outside of CONFIG_ARCH_DAVINCI_DA850.
Thanks,
Sekhar
WARNING: multiple messages have this Message-ID (diff)
From: Sekhar Nori <nsekhar-l0cyMroinI0@public.gmane.org>
To: Prabhakar Lad <prabhakar.csengg-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: davinci-linux-open-source-VycZQUHpC/PFrsHnngEfi1aTQe2KTcn/@public.gmane.org,
netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, "Lad,
Prabhakar" <prabhakar.lad-l0cyMroinI0@public.gmane.org>,
Heiko Schocher <hs-ynQEQJNshbs@public.gmane.org>,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Subject: Re: [PATCH v2 6/6] ARM: davinci: da850: configure system configuration chip(CFGCHIP3) for emac
Date: Sun, 3 Feb 2013 18:15:03 +0530 [thread overview]
Message-ID: <510E5BCF.9080006@ti.com> (raw)
In-Reply-To: <1359380879-26306-7-git-send-email-prabhakar.lad-l0cyMroinI0@public.gmane.org>
On 1/28/2013 7:17 PM, Prabhakar Lad wrote:
> From: Lad, Prabhakar <prabhakar.lad-l0cyMroinI0@public.gmane.org>
>
> The system configuration chip CFGCHIP3, controls the emac module.
> This patch appropriately configures this register for emac and
> sets DA850_MII_MDIO_CLKEN_PIN GPIO pin appropriately.
>
> Signed-off-by: Lad, Prabhakar <prabhakar.lad-l0cyMroinI0@public.gmane.org>
> Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
> Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> Cc: davinci-linux-open-source-VycZQUHpC/PFrsHnngEfi1aTQe2KTcn/@public.gmane.org
> Cc: netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> Cc: devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org
> Cc: Sekhar Nori <nsekhar-l0cyMroinI0@public.gmane.org>
> Cc: Heiko Schocher <hs-ynQEQJNshbs@public.gmane.org>
> ---
> arch/arm/mach-davinci/da8xx-dt.c | 28 ++++++++++++++++++++++++++++
> 1 files changed, 28 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/mach-davinci/da8xx-dt.c b/arch/arm/mach-davinci/da8xx-dt.c
> index e533a0a..4a096e3 100644
> --- a/arch/arm/mach-davinci/da8xx-dt.c
> +++ b/arch/arm/mach-davinci/da8xx-dt.c
> @@ -8,6 +8,7 @@
> * published by the Free Software Foundation.
> */
> #include <linux/io.h>
> +#include <linux/gpio.h>
> #include <linux/of_irq.h>
> #include <linux/of_platform.h>
> #include <linux/irqdomain.h>
> @@ -39,6 +40,32 @@ static void __init da8xx_init_irq(void)
>
> #ifdef CONFIG_ARCH_DAVINCI_DA850
>
> +static void __init da8xx_config_emac(void)
> +{
> +#define DA850_MII_MDIO_CLKEN_PIN GPIO_TO_PIN(2, 6)
> +#define DA850_EMAC_MODE_SELECT BIT(8)
> + void __iomem *cfg_chip3_base;
> + int ret;
> + u32 val;
> +
> + cfg_chip3_base = DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP3_REG);
> +
> + val = __raw_readl(cfg_chip3_base);
> + val &= ~DA850_EMAC_MODE_SELECT;
> + /* configure the CFGCHIP3 register for MII */
> + __raw_writel(val, cfg_chip3_base);
Use readl/writel instead.
> + pr_info("EMAC: MII PHY configured\n");
> +
> + ret = gpio_request(DA850_MII_MDIO_CLKEN_PIN, "mdio_clk_en");
> + if (ret) {
> + pr_warn("Cannot open GPIO %d\n",
> + DA850_MII_MDIO_CLKEN_PIN);
> + return;
> + }
> + /* Enable/Disable MII MDIO clock */
> + gpio_direction_output(DA850_MII_MDIO_CLKEN_PIN, 0);
> +}
> +
> struct of_dev_auxdata da8xx_auxdata[] __initdata = {
> OF_DEV_AUXDATA("ti,davinci_mdio", 0x01e24000, "davinci_mdio.0", NULL),
> OF_DEV_AUXDATA("ti,davinci-dm6467-emac", 0x01e20000, "davinci_emac.1",
> @@ -52,6 +79,7 @@ static void __init da850_init_machine(void)
> da8xx_auxdata, NULL);
>
> da8xx_uart_clk_enable();
> + da8xx_config_emac();
There are couple of issues with this implementation.
1) da8xx_config_emac() is specific to DA850 EVM, but masquerades as
generic for da8xx. Looks like you need two functions, one for soc
specific configuration and one board specific.
2) da8xx_config_emac() goes through all the time, whether the
particular board has emac module or not. Shouldn't
da8xx_config_emac() check if emac is actually enabled in the passed
dtb and only the do the configuration?
3) The function assumes mii is used always, you can use the rmii_en dt
property to check if rmii/mii is enabled and configure the soc/board
accordingly.
4) If the same function can work both for da850 and da830, then it can
be implemented outside of CONFIG_ARCH_DAVINCI_DA850.
Thanks,
Sekhar
WARNING: multiple messages have this Message-ID (diff)
From: Sekhar Nori <nsekhar@ti.com>
To: Prabhakar Lad <prabhakar.csengg@gmail.com>
Cc: <linux-arm-kernel@lists.infradead.org>,
<davinci-linux-open-source@linux.davincidsp.com>,
<linux-kernel@vger.kernel.org>, <netdev@vger.kernel.org>,
<devicetree-discuss@lists.ozlabs.org>,
Heiko Schocher <hs@denx.de>,
"Lad, Prabhakar" <prabhakar.lad@ti.com>
Subject: Re: [PATCH v2 6/6] ARM: davinci: da850: configure system configuration chip(CFGCHIP3) for emac
Date: Sun, 3 Feb 2013 18:15:03 +0530 [thread overview]
Message-ID: <510E5BCF.9080006@ti.com> (raw)
In-Reply-To: <1359380879-26306-7-git-send-email-prabhakar.lad@ti.com>
On 1/28/2013 7:17 PM, Prabhakar Lad wrote:
> From: Lad, Prabhakar <prabhakar.lad@ti.com>
>
> The system configuration chip CFGCHIP3, controls the emac module.
> This patch appropriately configures this register for emac and
> sets DA850_MII_MDIO_CLKEN_PIN GPIO pin appropriately.
>
> Signed-off-by: Lad, Prabhakar <prabhakar.lad@ti.com>
> Cc: linux-arm-kernel@lists.infradead.org
> Cc: linux-kernel@vger.kernel.org
> Cc: davinci-linux-open-source@linux.davincidsp.com
> Cc: netdev@vger.kernel.org
> Cc: devicetree-discuss@lists.ozlabs.org
> Cc: Sekhar Nori <nsekhar@ti.com>
> Cc: Heiko Schocher <hs@denx.de>
> ---
> arch/arm/mach-davinci/da8xx-dt.c | 28 ++++++++++++++++++++++++++++
> 1 files changed, 28 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/mach-davinci/da8xx-dt.c b/arch/arm/mach-davinci/da8xx-dt.c
> index e533a0a..4a096e3 100644
> --- a/arch/arm/mach-davinci/da8xx-dt.c
> +++ b/arch/arm/mach-davinci/da8xx-dt.c
> @@ -8,6 +8,7 @@
> * published by the Free Software Foundation.
> */
> #include <linux/io.h>
> +#include <linux/gpio.h>
> #include <linux/of_irq.h>
> #include <linux/of_platform.h>
> #include <linux/irqdomain.h>
> @@ -39,6 +40,32 @@ static void __init da8xx_init_irq(void)
>
> #ifdef CONFIG_ARCH_DAVINCI_DA850
>
> +static void __init da8xx_config_emac(void)
> +{
> +#define DA850_MII_MDIO_CLKEN_PIN GPIO_TO_PIN(2, 6)
> +#define DA850_EMAC_MODE_SELECT BIT(8)
> + void __iomem *cfg_chip3_base;
> + int ret;
> + u32 val;
> +
> + cfg_chip3_base = DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP3_REG);
> +
> + val = __raw_readl(cfg_chip3_base);
> + val &= ~DA850_EMAC_MODE_SELECT;
> + /* configure the CFGCHIP3 register for MII */
> + __raw_writel(val, cfg_chip3_base);
Use readl/writel instead.
> + pr_info("EMAC: MII PHY configured\n");
> +
> + ret = gpio_request(DA850_MII_MDIO_CLKEN_PIN, "mdio_clk_en");
> + if (ret) {
> + pr_warn("Cannot open GPIO %d\n",
> + DA850_MII_MDIO_CLKEN_PIN);
> + return;
> + }
> + /* Enable/Disable MII MDIO clock */
> + gpio_direction_output(DA850_MII_MDIO_CLKEN_PIN, 0);
> +}
> +
> struct of_dev_auxdata da8xx_auxdata[] __initdata = {
> OF_DEV_AUXDATA("ti,davinci_mdio", 0x01e24000, "davinci_mdio.0", NULL),
> OF_DEV_AUXDATA("ti,davinci-dm6467-emac", 0x01e20000, "davinci_emac.1",
> @@ -52,6 +79,7 @@ static void __init da850_init_machine(void)
> da8xx_auxdata, NULL);
>
> da8xx_uart_clk_enable();
> + da8xx_config_emac();
There are couple of issues with this implementation.
1) da8xx_config_emac() is specific to DA850 EVM, but masquerades as
generic for da8xx. Looks like you need two functions, one for soc
specific configuration and one board specific.
2) da8xx_config_emac() goes through all the time, whether the
particular board has emac module or not. Shouldn't
da8xx_config_emac() check if emac is actually enabled in the passed
dtb and only the do the configuration?
3) The function assumes mii is used always, you can use the rmii_en dt
property to check if rmii/mii is enabled and configure the soc/board
accordingly.
4) If the same function can work both for da850 and da830, then it can
be implemented outside of CONFIG_ARCH_DAVINCI_DA850.
Thanks,
Sekhar
next prev parent reply other threads:[~2013-02-03 12:45 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-28 13:47 [PATCH v2 0/6] ARM: davinci: da850: add ethernet driver DT support Prabhakar Lad
2013-01-28 13:47 ` Prabhakar Lad
2013-01-28 13:47 ` [PATCH v2 1/6] ARM: davinci: da850: fix clock lookup for mdio device Prabhakar Lad
2013-01-28 13:47 ` Prabhakar Lad
2013-02-03 11:14 ` Sekhar Nori
2013-02-03 11:14 ` Sekhar Nori
2013-02-03 11:14 ` Sekhar Nori
2013-02-03 11:38 ` Prabhakar Lad
2013-02-03 11:38 ` Prabhakar Lad
2013-02-03 11:38 ` Prabhakar Lad
2013-01-28 13:47 ` [PATCH v2 2/6] ARM: davinci: da850: add DT node " Prabhakar Lad
2013-01-28 13:47 ` Prabhakar Lad
2013-02-03 11:53 ` Sekhar Nori
2013-02-03 11:53 ` Sekhar Nori
2013-02-03 11:53 ` Sekhar Nori
2013-02-03 12:17 ` Prabhakar Lad
2013-02-03 12:17 ` Prabhakar Lad
2013-02-03 12:17 ` Prabhakar Lad
2013-01-28 13:47 ` [PATCH v2 3/6] ARM: davinci: da850: add OF_DEV_AUXDATA entry for mdio Prabhakar Lad
2013-01-28 13:47 ` Prabhakar Lad
2013-01-28 13:47 ` [PATCH v2 4/6] ARM: davinci: da850: add DT node for eth0 Prabhakar Lad
2013-01-28 13:47 ` Prabhakar Lad
2013-02-03 12:03 ` Sekhar Nori
2013-02-03 12:03 ` Sekhar Nori
2013-02-03 12:03 ` Sekhar Nori
2013-02-04 5:07 ` Prabhakar Lad
2013-02-04 5:07 ` Prabhakar Lad
2013-02-04 17:50 ` Sekhar Nori
2013-02-04 17:50 ` Sekhar Nori
2013-02-04 17:50 ` Sekhar Nori
2013-03-08 9:45 ` Prabhakar Lad
2013-03-08 9:45 ` Prabhakar Lad
2013-03-08 9:51 ` Sekhar Nori
2013-03-08 9:51 ` Sekhar Nori
2013-03-08 9:51 ` Sekhar Nori
2013-01-28 13:47 ` [PATCH v2 5/6] ARM: davinci: da850: add OF_DEV_AUXDATA entry " Prabhakar Lad
2013-01-28 13:47 ` Prabhakar Lad
2013-01-28 13:47 ` [PATCH v2 6/6] ARM: davinci: da850: configure system configuration chip(CFGCHIP3) for emac Prabhakar Lad
2013-01-28 13:47 ` Prabhakar Lad
2013-02-03 12:45 ` Sekhar Nori [this message]
2013-02-03 12:45 ` Sekhar Nori
2013-02-03 12:45 ` Sekhar Nori
2013-02-04 5:03 ` Prabhakar Lad
2013-02-04 5:03 ` Prabhakar Lad
2013-03-08 13:28 ` Prabhakar Lad
2013-03-08 13:28 ` Prabhakar Lad
2013-03-08 13:28 ` Prabhakar Lad
2013-02-04 5:28 ` Sekhar Nori
2013-02-04 5:28 ` Sekhar Nori
2013-02-04 5:28 ` Sekhar Nori
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=510E5BCF.9080006@ti.com \
--to=nsekhar@ti.com \
--cc=linux-arm-kernel@lists.infradead.org \
/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.