From: Maxime Ripard <maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
To: Corentin Labbe <clabbe.montjoie-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: peppe.cavallaro-qxv4g6HH51o@public.gmane.org,
robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
mark.rutland-5wv7dgnIgG8@public.gmane.org,
wens-jdAy2FN1RRM@public.gmane.org,
linux-I+IVW8TIWO2tmTQ+vhA3Yw@public.gmane.org,
catalin.marinas-5wv7dgnIgG8@public.gmane.org,
will.deacon-5wv7dgnIgG8@public.gmane.org,
alexandre.torgue-qxv4g6HH51o@public.gmane.org,
netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
Subject: Re: [PATCH 05/21] net-next: stmmac: Add dwmac-sun8i
Date: Tue, 21 Feb 2017 14:22:17 -0800 [thread overview]
Message-ID: <20170221222217.62barcu445stewvr@lukather> (raw)
In-Reply-To: <20170217131802.GB24993@Red>
[-- Attachment #1: Type: text/plain, Size: 2916 bytes --]
On Fri, Feb 17, 2017 at 02:18:02PM +0100, Corentin Labbe wrote:
> On Thu, Feb 16, 2017 at 08:05:24PM +0100, Maxime Ripard wrote:
> > Hi,
> >
>
> [...]
> > > +
> > > +struct emac_variant {
> > > + u32 default_syscon_value;
> >
> > Why do you need a default value? Can't you read it from the syscon
> > directly?
> >
>
> Why not, but you can see the default value as "value for disabled
> state".
i'm not sure what you mean here, sorry.
> My fear is that something (uboot) modify it (keep it activated)
> before driver load.
You could have the same argument there then for the board that require
reading it. What if U-boot modified it to some non-functional state?
Either you trust the value there, and you read it, or you don't, and
then you never read it. But being stuck in between doesn't seem that
great.
> > > +static void sun8i_dwmac_dma_start_tx(void __iomem *ioaddr)
> > > +{
> > > + u32 v;
> > > +
> > > + v = readl(ioaddr + EMAC_TX_CTL0);
> > > + v |= EMAC_TX_TRANSMITTER_EN;
> > > + writel(v, ioaddr + EMAC_TX_CTL0);
> > > +
> > > + v = readl(ioaddr + EMAC_TX_CTL1);
> > > + v |= EMAC_TX_DMA_START;
> > > + v |= EMAC_TX_DMA_EN;
> > > + writel(v, ioaddr + EMAC_TX_CTL1);
> >
> > This is a bit worrying. There's not a single lock in your driver,
> > while you have a significant number of read / modify / write.
> >
> > Where is the locking handled?
>
> All thoses function are handled by the "stmmac_ops framework", all
> other glue drivers does not lock anything.
Most of them seem to use regmap though, that has an internal lock.
> The few functions that need locking already got it on the calling
> stmmac side.
Ok.
> > > +
> > > + if (of_property_read_bool(priv->plat->phy_node,
> > > + "allwinner,leds-active-low"))
> > > + reg |= H3_EPHY_LED_POL;
> > > + else
> > > + reg &= ~H3_EPHY_LED_POL;
> > > +
> > > + ret = of_mdio_parse_addr(priv->device,
> > > + priv->plat->phy_node);
> > > + if (ret < 0) {
> > > + dev_err(priv->device, "Could not parse MDIO addr\n");
> > > + return ret;
> > > + }
> > > + /* of_mdio_parse_addr returns a valid (0 ~ 31) PHY
> > > + * address. No need to mask it again.
> > > + */
> > > + reg |= ret << H3_EPHY_ADDR_SHIFT;
> > > + }
> > > + }
> > > +
> > > + if (!of_property_read_u32(node, "allwinner,tx-delay", &val)) {
> >
> > How do you compute it? Can't this be done through auto-training?
>
> The value is the same as used in vendor BSP kernel.
This is not really usable though. I've had already three boards that
never got any BSP kernel. You need to be able at least to document
some way to compute it (even if it's based on manual, trial and error
process).
> I do not understand what you mean by auto-training.
Being able to automatically detect the optimal settings at boot time.
Thanks!
Maxime
--
Maxime Ripard, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
next prev parent reply other threads:[~2017-02-21 22:22 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-16 12:48 [PATCH 00/21] net-next: stmmac: add dwmac-sun8i ethernet driver Corentin Labbe
[not found] ` <20170216124859.14346-1-clabbe.montjoie-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-02-16 12:48 ` [PATCH 01/21] net-next: stmmac add optional init_phy function Corentin Labbe
2017-02-16 12:48 ` [PATCH 02/21] net-next: stmmac: export stmmac_set_mac_addr/stmmac_get_mac_addr Corentin Labbe
2017-02-16 12:48 ` [PATCH 03/21] net-next: stmmac: add optional setup function Corentin Labbe
[not found] ` <20170216124859.14346-4-clabbe.montjoie-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-02-16 20:38 ` Peter Korsgaard
[not found] ` <87mvdlg9bq.fsf-D6SC8u56vOOJDPpyT6T3/w@public.gmane.org>
2017-02-17 8:18 ` Corentin Labbe
2017-02-16 12:48 ` [PATCH 04/21] ARM: sun8i: dt: Add DT bindings documentation for Allwinner dwmac-sun8i Corentin Labbe
[not found] ` <20170216124859.14346-5-clabbe.montjoie-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-02-16 18:48 ` Maxime Ripard
2017-02-17 12:18 ` Corentin Labbe
2017-02-16 20:58 ` Florian Fainelli
[not found] ` <783a717d-f1f4-e265-bf94-0b3080cea542-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-02-20 15:07 ` Corentin Labbe
2017-02-16 12:48 ` [PATCH 05/21] net-next: stmmac: Add dwmac-sun8i Corentin Labbe
[not found] ` <20170216124859.14346-6-clabbe.montjoie-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-02-16 19:05 ` Maxime Ripard
2017-02-17 13:18 ` Corentin Labbe
2017-02-21 22:22 ` Maxime Ripard [this message]
2017-02-16 12:48 ` [PATCH 06/21] ARM: dts: sun8i-h3: Add dt node for the syscon control module Corentin Labbe
2017-02-16 12:48 ` [PATCH 07/21] ARM: dts: sun8i-h3: add dwmac-sun8i ethernet driver Corentin Labbe
2017-02-16 12:48 ` [PATCH 08/21] ARM: dts: sun8i-h3: add dwmac-sun8i rgmii pins Corentin Labbe
[not found] ` <20170216124859.14346-9-clabbe.montjoie-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-02-16 19:06 ` Maxime Ripard
2017-02-17 9:14 ` Corentin Labbe
2017-02-16 12:48 ` [PATCH 09/21] ARM: dts: sun8i: Enable dwmac-sun8i on the Banana Pi M2+ Corentin Labbe
2017-02-16 12:48 ` [PATCH 10/21] ARM: dts: sun8i: Enable dwmac-sun8i on the Orange PI PC Corentin Labbe
2017-02-16 12:48 ` [PATCH 11/21] ARM: dts: sun8i: Enable dwmac-sun8i on the Orange Pi 2 Corentin Labbe
2017-02-16 12:48 ` [PATCH 12/21] ARM: dts: sun8i: Enable dwmac-sun8i on the Orange PI One Corentin Labbe
2017-02-16 12:48 ` [PATCH 13/21] ARM: dts: sun8i: Enable dwmac-sun8i on the Orange Pi plus Corentin Labbe
2017-02-16 12:48 ` [PATCH 14/21] ARM: dts: sun8i: orangepi-pc-plus: Set EMAC activity LEDs to active high Corentin Labbe
2017-02-16 12:48 ` [PATCH 15/21] ARM64: dts: sun50i-a64: Add dt node for the syscon control module Corentin Labbe
2017-02-16 12:48 ` [PATCH 16/21] ARM64: dts: sun50i-a64: add dwmac-sun8i Ethernet driver Corentin Labbe
2017-02-16 12:48 ` [PATCH 17/21] ARM: dts: sun50i-a64: enable dwmac-sun8i on pine64 Corentin Labbe
2017-02-16 12:48 ` [PATCH 18/21] ARM: dts: sun50i-a64: enable dwmac-sun8i on pine64 plus Corentin Labbe
2017-02-16 12:48 ` [PATCH 19/21] ARM: dts: sun50i-a64: enable dwmac-sun8i on the BananaPi M64 Corentin Labbe
2017-02-16 12:48 ` [PATCH 20/21] ARM: sunxi: Enable dwmac-sun8i driver on sunxi_defconfig Corentin Labbe
[not found] ` <20170216124859.14346-21-clabbe.montjoie-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-02-16 19:08 ` Maxime Ripard
2017-02-17 8:55 ` Corentin Labbe
2017-02-16 12:48 ` [PATCH 21/21] ARM: sunxi: Enable dwmac-sun8i driver on multi_v7_defconfig Corentin Labbe
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=20170221222217.62barcu445stewvr@lukather \
--to=maxime.ripard-wi1+55scjutkeb57/3fjtnbpr1lh4cv8@public.gmane.org \
--cc=alexandre.torgue-qxv4g6HH51o@public.gmane.org \
--cc=catalin.marinas-5wv7dgnIgG8@public.gmane.org \
--cc=clabbe.montjoie-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-I+IVW8TIWO2tmTQ+vhA3Yw@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org \
--cc=mark.rutland-5wv7dgnIgG8@public.gmane.org \
--cc=netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=peppe.cavallaro-qxv4g6HH51o@public.gmane.org \
--cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=wens-jdAy2FN1RRM@public.gmane.org \
--cc=will.deacon-5wv7dgnIgG8@public.gmane.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