From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v2 2/3] ARM: shmobile: Koelsch: add Ether support
Date: Sat, 16 Nov 2013 14:11:23 +0000 [thread overview]
Message-ID: <3215184.4Bsszdk70M@avalon> (raw)
In-Reply-To: <5286CB3A.9080305@cogentembedded.com>
Hi Sergei,
On Saturday 16 November 2013 04:32:42 Sergei Shtylyov wrote:
> On 11/16/2013 02:03 AM, Laurent Pinchart wrote:
> >>>> Register Ether platform device and pin data on the Koelsch board.
> >>>> Register platform fixup for Micrel KSZ8041 PHY, just like on the Lager
> >>>> board.
> >>>>
> >>>> Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
> >>>>
> >>>> ---
> >>>> Changes in version 2:
> >>>> - added *if* (IS_ENABLED(CONFIG_PHYLIB)) around
> >>>> phy_register_fixup_for_id() call;
> >>>>
> >>>> - changed Ether device name to "r8a779x-ether".
> >>>>
> >>>> arch/arm/mach-shmobile/board-koelsch.c | 63 +++++++++++++++++++++-
> >>>> 1 file changed, 62 insertions(+), 1 deletion(-)
> >>>>
> >>>> Index: renesas/arch/arm/mach-shmobile/board-koelsch.c
> >>>> =================================> >>>> --- renesas.orig/arch/arm/mach-shmobile/board-koelsch.c
> >>>> +++ renesas/arch/arm/mach-shmobile/board-koelsch.c
> >>
> >> [...]
> >>
> >>>> @@ -84,6 +119,32 @@ static void __init koelsch_add_standard_
> >>>> sizeof(koelsch_keys_pdata));
> >>>> }
> >>>>
> >>>> +/*
> >>>> + * Ether LEDs on the Koelsch board are named LINK and ACTIVE which
> >>>> corresponds
> >>>> + * to non-default 01 setting of the Micrel KSZ8041 PHY control
> >>>> register 1 bits
> >>>> + * 14-15. We have to set them back to 01 from the default 00 value
> >>>> each time
> >>>> + * the PHY is reset. It's also important because the PHY's LED0 signal
> >>>> is
> >>>> + * connected to SoC's ETH_LINK signal and in the PHY's default mode it
> >>>> will
> >>>> + * bounce on and off after each packet, which we apparently want to
> >>>> avoid.
> >>>> + */
> >>>> +static int koelsch_ksz8041_fixup(struct phy_device *phydev)
> >>>> +{
> >>>> + u16 phyctrl1 = phy_read(phydev, 0x1e);
> >>>> +
> >>>> + phyctrl1 &= ~0xc000;
> >>>> + phyctrl1 |= 0x4000;
> >>>> + return phy_write(phydev, 0x1e, phyctrl1);
> >>>> +}
> >>>> +
> >>>> +static void __init koelsch_init(void)
> >>>> +{
> >>>> + koelsch_add_standard_devices();
> >>>> +
> >>>> + if (IS_ENABLED(CONFIG_PHYLIB))
> >>>> + phy_register_fixup_for_id("r8a779x-ether-ff:01",
> >>>> + koelsch_ksz8041_fixup);
> >>>
> >>> This is fine with board code, but will break when we'll switch to DT.
> >>> Would it be difficult to replace board code by using the existing micrel
> >>> phy driver (drivers/net/phy/micrel.c) which should support the ksz8041
> >>> already and
> >>
> >> The first issue here is KSZ8041 on the BOCK-W/Lager/Koelsch boards uses
> >> undocumented PHY ID for some reason, so the current driver doesn't really
> >> support it. :-)
> >
> > Right. Let's teach the KSZ8041 driver about that then :-)
>
> Well, this seems at least easy. :-)
>
> >>> extending it with support for register 0x1e which doesn't seem to be
> >>> handled ?
> >>
> >> You probably didn't quite understand the purpose of the platform PHY
> >> fixup. It's designed to do the board-specific changes, not the driver-
> >> specific changes. In this case, the setting of the bits 14-15 of the PHY
> >> control register 1 (w/address 0x1E) purely depends on the board
> >> schematics and simply can't be selected by the PHY driver.
> >>
> >> It could have been set by the PHY driver iff we would find a way to pass
> >> the platform data to the PHY device (on the automatically probed MDIO
> >> bus).
> >
> > That seems to me like the real issue we need to solve. The PHY clearly
> > needs platform (or DT) data, so we need a way to pass it to the driver.
> > Once we get that it shouldn't be difficult to add LED configuration
> > information to the platform data.
>
> Well, with the PHY driver being DT-enabled somehow, it wouldn't be difficult
> (though how to make phylib's automatic probing coexist with DT probing is
> not clear to me ATM). More difficult is to link the platform data to an
> automatically probed device; there were attempts on linux-usb to link the
> platform data to an USB device but that went nowhere IIRC... anyway, with
> the PHY platform fixups already in place we need to care only about the DT
> case really...
I agree, let's focus on the DT case, board code can use platform fixups for
now.
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2013-11-16 14:11 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-14 22:17 [PATCH v2 0/3] Add Ether support for R8A7791/Koelsch board Sergei Shtylyov
2013-11-14 22:19 ` [PATCH v2 1/3] ARM: shmobile: r8a7791: add Ether clock Sergei Shtylyov
2013-11-14 22:21 ` [PATCH v2 2/3] ARM: shmobile: Koelsch: add Ether support Sergei Shtylyov
2013-11-14 23:06 ` Laurent Pinchart
2013-11-15 20:28 ` Sergei Shtylyov
2013-11-15 23:03 ` Laurent Pinchart
2013-11-16 0:32 ` Sergei Shtylyov
2013-11-16 14:11 ` Laurent Pinchart [this message]
2013-11-18 7:05 ` Simon Horman
2013-11-14 22:23 ` [PATCH v2 3/3] ARM: shmobile: Koelsch: enable Ether in defconfig Sergei Shtylyov
2013-11-15 5:29 ` Simon Horman
2013-11-15 20:03 ` Sergei Shtylyov
2013-11-18 7:04 ` Simon Horman
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=3215184.4Bsszdk70M@avalon \
--to=laurent.pinchart@ideasonboard.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 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).