[OpenWrt-Devel] [PATCH v5 1/5] ar71xx: add eth rx delay for qca955x platforms
Christian Lamparter
chunkeey at googlemail.com
Fri Dec 4 17:44:23 EST 2015
Ping.
Any comments? what to do about ath79_setup_ar934x_eth_rx_delay.
Leave it as is, or get rid of it?
Regards,
Christian
On Friday, November 27, 2015 08:34:40 PM Christian Lamparter wrote:
> On Saturday, November 21, 2015 08:45:23 PM John Crispin wrote:
> > Hi,
> >
> > sorry to jump in this late at a V5 but i have a few concerns. see inline
> Well, the *beautiful thing* of this platform is that Cisco charges people
> a yearly fee if they want to stick with the original firmware. So people
> are definitely interested in this openwrt port. Just look at the positive
> response to the support thread [0].
>
> > On 22/09/2015 18:49, Chris R Blake wrote:
> > > From: Chris R Blake <chrisrblake93 at gmail.com>
> > >
> > > This patch is to add support for qca955x_eth_rx_delay
> > > to work with the qca955x SoC.
> > >
> > > Signed-off-by: Chris R Blake <chrisrblake93 at gmail.com>
> > > ---
> > > ...42-MIPS-ath79-add-qca955x-mac-tx-rx-delay.patch | 58 ++++++++++++++++++++++
> > > 1 file changed, 58 insertions(+)
> > > create mode 100644 target/linux/ar71xx/patches-4.1/742-MIPS-ath79-add-qca955x-mac-tx-rx-delay.patch
> > >
> > > diff --git a/target/linux/ar71xx/patches-4.1/742-MIPS-ath79-add-qca955x-mac-tx-rx-delay.patch b/target/linux/ar71xx/patches-4.1/742-MIPS-ath79-add-qca955x-mac-tx-rx-delay.patch
> > > new file mode 100644
> > > index 0000000..75e216e
> > > --- /dev/null
> > > +++ b/target/linux/ar71xx/patches-4.1/742-MIPS-ath79-add-qca955x-mac-tx-rx-delay.patch
> > > @@ -0,0 +1,58 @@
> > > +--- a/arch/mips/ath79/dev-eth.c
> > > ++++ b/arch/mips/ath79/dev-eth.c
> > > +@@ -823,6 +825,32 @@
> > > + iounmap(base);
> > > + }
> > > +
> > > ++void __init ath79_setup_qca955x_eth_rx_delay(unsigned int rxd,
> > > ++ unsigned int rxdv)
> > > ++{
> > > ++ void __iomem *base;
> > > ++ u32 t;
> > > ++
> > > ++ rxd &= QCA955X_ETH_CFG_RXD_DELAY_MASK;
> > > ++ rxdv &= QCA955X_ETH_CFG_RDV_DELAY_MASK;
> > > ++
> > > ++ base = ioremap(QCA955X_GMAC_BASE, QCA955X_GMAC_SIZE);
> > > ++
> > > ++ t = __raw_readl(base + QCA955X_GMAC_REG_ETH_CFG);
> > > ++
> > > ++ t &= ~(QCA955X_ETH_CFG_RXD_DELAY_MASK << QCA955X_ETH_CFG_RXD_DELAY_SHIFT |
> > > ++ QCA955X_ETH_CFG_RDV_DELAY_MASK << QCA955X_ETH_CFG_RDV_DELAY_SHIFT);
> > > ++
> > > ++ t |= (rxd << QCA955X_ETH_CFG_RXD_DELAY_SHIFT |
> > > ++ rxdv << QCA955X_ETH_CFG_RDV_DELAY_SHIFT);
> > > ++
> > > ++ __raw_writel(t, base + QCA955X_GMAC_REG_ETH_CFG);
> > > ++ /* flush write */
> > > ++ __raw_readl(base + QCA955X_GMAC_REG_ETH_CFG);
> > > ++
> > > ++ iounmap(base);
> >
> > this is a pretty ugly way of doing it. the register is also modified at
> > a different place which is also not optimal. the register is part of the
> > ethernet macs io range so this magic setting should be applied inside
> > the the actual driver. could you make such a change ?
> >
> > John
>
> Wait, the code for this function was just adapted (qca955x uses
> slightly different registers and bitmask offsets) from a similar
> function called:
>
> void __init ath79_setup_ar934x_eth_rx_delay(unsigned int rxd,
> unsigned int rxdv)
>
> which is also in the dev-eth.c [1] (added Felix). If this is
> "pretty ugly" then what should be done about ath79_setup_ar934x_eth_rx_delay?
> If it's just the function that bothers you, I can also pass the
> rx/tx delays via the ath79_setup_qca955x_eth_cfg call. but I
> would like to keep the ar71xx_regs changes in place. Ok?
>
> > > +--- a/arch/mips/include/asm/mach-ath79/ar71xx_regs.h
> > > ++++ b/arch/mips/include/asm/mach-ath79/ar71xx_regs.h
> > > +@@ -1098,5 +1098,11 @@
> > > +
> > > + #define QCA955X_ETH_CFG_RGMII_EN BIT(0)
> > > + #define QCA955X_ETH_CFG_GE0_SGMII BIT(6)
> > > ++#define QCA955X_ETH_CFG_RXD_DELAY BIT(14)
> > > ++#define QCA955X_ETH_CFG_RXD_DELAY_MASK 0x3
> > > ++#define QCA955X_ETH_CFG_RXD_DELAY_SHIFT 14
> > > ++#define QCA955X_ETH_CFG_RDV_DELAY BIT(16)
> > > ++#define QCA955X_ETH_CFG_RDV_DELAY_MASK 0x3
> > > ++#define QCA955X_ETH_CFG_RDV_DELAY_SHIFT 16
>
> Regards,
> Christian
>
> [0] <https://forum.openwrt.org/viewtopic.php?id=59248>
> [1] <https://dev.openwrt.org/changeset/45523>
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
More information about the openwrt-devel
mailing list