All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] net/macb: clear tx/rx completion flags in ISR
@ 2013-03-22 17:33 Steffen Trumtrar
  2013-03-22 17:33 ` [PATCH 2/3] net/macb: force endian_swp_pkt_en to off Steffen Trumtrar
  2013-03-22 17:33 ` [PATCH 3/3] net/macb: make clk_enable atomic Steffen Trumtrar
  0 siblings, 2 replies; 6+ messages in thread
From: Steffen Trumtrar @ 2013-03-22 17:33 UTC (permalink / raw)
  To: netdev; +Cc: Steffen Trumtrar, Nicolas Ferre

At least in the cadence IP core on the Xilinx Zynq SoC the TCOMP/RCOMP flags
are not auto-cleaned. As these flags are evaluated, they need to be cleaned.

Signed-off-by: Steffen Trumtrar <s.trumtrar@pengutronix.de>
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
---
 drivers/net/ethernet/cadence/macb.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/net/ethernet/cadence/macb.c b/drivers/net/ethernet/cadence/macb.c
index 7903943..817835e 100644
--- a/drivers/net/ethernet/cadence/macb.c
+++ b/drivers/net/ethernet/cadence/macb.c
@@ -485,6 +485,8 @@ static void macb_tx_interrupt(struct macb *bp)
 	status = macb_readl(bp, TSR);
 	macb_writel(bp, TSR, status);
 
+	macb_writel(bp, ISR, MACB_BIT(TCOMP));
+
 	netdev_vdbg(bp->dev, "macb_tx_interrupt status = 0x%03lx\n",
 		(unsigned long)status);
 
@@ -736,6 +738,7 @@ static irqreturn_t macb_interrupt(int irq, void *dev_id)
 			 * now.
 			 */
 			macb_writel(bp, IDR, MACB_RX_INT_FLAGS);
+			macb_writel(bp, ISR, MACB_BIT(RCOMP));
 
 			if (napi_schedule_prep(&bp->napi)) {
 				netdev_vdbg(bp->dev, "scheduling RX softirq\n");
-- 
1.8.2.rc2

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/3] net/macb: force endian_swp_pkt_en to off
  2013-03-22 17:33 [PATCH 1/3] net/macb: clear tx/rx completion flags in ISR Steffen Trumtrar
@ 2013-03-22 17:33 ` Steffen Trumtrar
  2013-03-22 17:33 ` [PATCH 3/3] net/macb: make clk_enable atomic Steffen Trumtrar
  1 sibling, 0 replies; 6+ messages in thread
From: Steffen Trumtrar @ 2013-03-22 17:33 UTC (permalink / raw)
  To: netdev; +Cc: Steffen Trumtrar, Nicolas Ferre

The core has a bit for swapping packet data endianism.
Reset default from Cadence is off. Xilinx however, who uses this core on the
Zynq SoCs, opted for on.
Force it to off. This shouldn't change the behaviour for current users of the
macb, but enables usage on Zynq devices.

Signed-off-by: Steffen Trumtrar <s.trumtrar@pengutronix.de>
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
---
 drivers/net/ethernet/cadence/macb.c | 1 +
 drivers/net/ethernet/cadence/macb.h | 2 ++
 2 files changed, 3 insertions(+)

diff --git a/drivers/net/ethernet/cadence/macb.c b/drivers/net/ethernet/cadence/macb.c
index 817835e..71e766b 100644
--- a/drivers/net/ethernet/cadence/macb.c
+++ b/drivers/net/ethernet/cadence/macb.c
@@ -1057,6 +1057,7 @@ static void macb_configure_dma(struct macb *bp)
 		dmacfg |= GEM_BF(RXBS, RX_BUFFER_SIZE / 64);
 		dmacfg |= GEM_BF(FBLDO, 16);
 		dmacfg |= GEM_BIT(TXPBMS) | GEM_BF(RXBMS, -1L);
+		dmacfg &= ~GEM_BIT(ENDIA);
 		gem_writel(bp, DMACFG, dmacfg);
 	}
 }
diff --git a/drivers/net/ethernet/cadence/macb.h b/drivers/net/ethernet/cadence/macb.h
index 570908b..993d703 100644
--- a/drivers/net/ethernet/cadence/macb.h
+++ b/drivers/net/ethernet/cadence/macb.h
@@ -173,6 +173,8 @@
 /* Bitfields in DMACFG. */
 #define GEM_FBLDO_OFFSET			0
 #define GEM_FBLDO_SIZE				5
+#define GEM_ENDIA_OFFSET			7
+#define GEM_ENDIA_SIZE				1
 #define GEM_RXBMS_OFFSET			8
 #define GEM_RXBMS_SIZE				2
 #define GEM_TXPBMS_OFFSET			10
-- 
1.8.2.rc2

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 3/3] net/macb: make clk_enable atomic
  2013-03-22 17:33 [PATCH 1/3] net/macb: clear tx/rx completion flags in ISR Steffen Trumtrar
  2013-03-22 17:33 ` [PATCH 2/3] net/macb: force endian_swp_pkt_en to off Steffen Trumtrar
@ 2013-03-22 17:33 ` Steffen Trumtrar
  2013-03-22 17:38   ` Fabio Estevam
  1 sibling, 1 reply; 6+ messages in thread
From: Steffen Trumtrar @ 2013-03-22 17:33 UTC (permalink / raw)
  To: netdev; +Cc: Steffen Trumtrar, Nicolas Ferre

Use clk_prepare_enable to be safe on SMP systems.

Signed-off-by: Steffen Trumtrar <s.trumtrar@pengutronix.de>
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
---
 drivers/net/ethernet/cadence/macb.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/cadence/macb.c b/drivers/net/ethernet/cadence/macb.c
index 71e766b..733b3fc 100644
--- a/drivers/net/ethernet/cadence/macb.c
+++ b/drivers/net/ethernet/cadence/macb.c
@@ -1561,14 +1561,14 @@ static int __init macb_probe(struct platform_device *pdev)
 		dev_err(&pdev->dev, "failed to get macb_clk\n");
 		goto err_out_free_dev;
 	}
-	clk_enable(bp->pclk);
+	clk_prepare_enable(bp->pclk);
 
 	bp->hclk = clk_get(&pdev->dev, "hclk");
 	if (IS_ERR(bp->hclk)) {
 		dev_err(&pdev->dev, "failed to get hclk\n");
 		goto err_out_put_pclk;
 	}
-	clk_enable(bp->hclk);
+	clk_prepare_enable(bp->hclk);
 
 	bp->regs = ioremap(regs->start, resource_size(regs));
 	if (!bp->regs) {
-- 
1.8.2.rc2

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 3/3] net/macb: make clk_enable atomic
  2013-03-22 17:33 ` [PATCH 3/3] net/macb: make clk_enable atomic Steffen Trumtrar
@ 2013-03-22 17:38   ` Fabio Estevam
  2013-03-24 21:08     ` David Miller
  0 siblings, 1 reply; 6+ messages in thread
From: Fabio Estevam @ 2013-03-22 17:38 UTC (permalink / raw)
  To: Steffen Trumtrar; +Cc: netdev, Nicolas Ferre

On Fri, Mar 22, 2013 at 2:33 PM, Steffen Trumtrar
<s.trumtrar@pengutronix.de> wrote:
> Use clk_prepare_enable to be safe on SMP systems.

Wouldn't you have to use clk_disable_unprepare() now?

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 3/3] net/macb: make clk_enable atomic
  2013-03-22 17:38   ` Fabio Estevam
@ 2013-03-24 21:08     ` David Miller
  2013-03-25  8:33       ` Steffen Trumtrar
  0 siblings, 1 reply; 6+ messages in thread
From: David Miller @ 2013-03-24 21:08 UTC (permalink / raw)
  To: festevam; +Cc: s.trumtrar, netdev, nicolas.ferre

From: Fabio Estevam <festevam@gmail.com>
Date: Fri, 22 Mar 2013 14:38:39 -0300

> On Fri, Mar 22, 2013 at 2:33 PM, Steffen Trumtrar
> <s.trumtrar@pengutronix.de> wrote:
>> Use clk_prepare_enable to be safe on SMP systems.
> 
> Wouldn't you have to use clk_disable_unprepare() now?

Indeed I think he does.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 3/3] net/macb: make clk_enable atomic
  2013-03-24 21:08     ` David Miller
@ 2013-03-25  8:33       ` Steffen Trumtrar
  0 siblings, 0 replies; 6+ messages in thread
From: Steffen Trumtrar @ 2013-03-25  8:33 UTC (permalink / raw)
  To: David Miller; +Cc: festevam, netdev, nicolas.ferre

On Sun, Mar 24, 2013 at 05:08:49PM -0400, David Miller wrote:
> From: Fabio Estevam <festevam@gmail.com>
> Date: Fri, 22 Mar 2013 14:38:39 -0300
> 
> > On Fri, Mar 22, 2013 at 2:33 PM, Steffen Trumtrar
> > <s.trumtrar@pengutronix.de> wrote:
> >> Use clk_prepare_enable to be safe on SMP systems.
> > 
> > Wouldn't you have to use clk_disable_unprepare() now?
> 
> Indeed I think he does.
> 

I will fix that of course.

Thanks,
Steffen

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2013-03-25  8:33 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-03-22 17:33 [PATCH 1/3] net/macb: clear tx/rx completion flags in ISR Steffen Trumtrar
2013-03-22 17:33 ` [PATCH 2/3] net/macb: force endian_swp_pkt_en to off Steffen Trumtrar
2013-03-22 17:33 ` [PATCH 3/3] net/macb: make clk_enable atomic Steffen Trumtrar
2013-03-22 17:38   ` Fabio Estevam
2013-03-24 21:08     ` David Miller
2013-03-25  8:33       ` Steffen Trumtrar

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.