diff options
| author | jogo <jogo@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2013-02-04 10:19:55 +0000 | 
|---|---|---|
| committer | jogo <jogo@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2013-02-04 10:19:55 +0000 | 
| commit | 6ec4b12517f63923263923141b648f13a5e952a9 (patch) | |
| tree | 795c678a9aada87200ea960ac154a52f1186eef2 /target/linux/brcm63xx/patches-3.8/420-BCM63XX-allow-enetsw-without-tx-irq.patch | |
| parent | 404cd71e7c4cb3b69a53db4876c0b2cbf27c3036 (diff) | |
bcm63xx: add support for linux 3.8
Based on 3.8-rc6
Signed-off-by: Jonas Gorski <jogo@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35482 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/brcm63xx/patches-3.8/420-BCM63XX-allow-enetsw-without-tx-irq.patch')
| -rw-r--r-- | target/linux/brcm63xx/patches-3.8/420-BCM63XX-allow-enetsw-without-tx-irq.patch | 69 | 
1 files changed, 69 insertions, 0 deletions
diff --git a/target/linux/brcm63xx/patches-3.8/420-BCM63XX-allow-enetsw-without-tx-irq.patch b/target/linux/brcm63xx/patches-3.8/420-BCM63XX-allow-enetsw-without-tx-irq.patch new file mode 100644 index 000000000..b17af9831 --- /dev/null +++ b/target/linux/brcm63xx/patches-3.8/420-BCM63XX-allow-enetsw-without-tx-irq.patch @@ -0,0 +1,69 @@ +From 625894c377ba266c0044675b53f05d65db6355b6 Mon Sep 17 00:00:00 2001 +From: Jonas Gorski <jonas.gorski@gmail.com> +Date: Sun, 8 Jul 2012 13:07:52 +0200 +Subject: [PATCH 38/84] BCM63XX: allow enetsw without tx irq + +--- + arch/mips/bcm63xx/dev-enet.c                 |    2 ++ + drivers/net/ethernet/broadcom/bcm63xx_enet.c |   18 +++++++++++------- + 2 files changed, 13 insertions(+), 7 deletions(-) + +--- a/arch/mips/bcm63xx/dev-enet.c ++++ b/arch/mips/bcm63xx/dev-enet.c +@@ -236,6 +236,8 @@ bcm63xx_enetsw_register(const struct bcm + 	enetsw_res[0].end += RSET_ENETSW_SIZE - 1; + 	enetsw_res[1].start = bcm63xx_get_irq_number(IRQ_ENETSW_RXDMA0); + 	enetsw_res[2].start = bcm63xx_get_irq_number(IRQ_ENETSW_TXDMA0); ++	if (!enetsw_res[2].start) ++		enetsw_res[2].start = -1; +  + 	memcpy(bcm63xx_enetsw_device.dev.platform_data, pd, sizeof (*pd)); +  +--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c ++++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c +@@ -2151,10 +2151,12 @@ static int bcm_enetsw_open(struct net_de + 	if (ret) + 		goto out_freeirq; +  +-	ret = request_irq(priv->irq_tx, bcm_enet_isr_dma, +-			  IRQF_DISABLED, dev->name, dev); +-	if (ret) +-		goto out_freeirq_rx; ++	if (priv->irq_tx != -1) { ++		ret = request_irq(priv->irq_tx, bcm_enet_isr_dma, ++				  IRQF_DISABLED, dev->name, dev); ++		if (ret) ++			goto out_freeirq_rx; ++	} +  + 	/* allocate rx dma ring */ + 	size = priv->rx_ring_size * sizeof(struct bcm_enet_desc); +@@ -2376,7 +2378,8 @@ out_free_rx_ring: + 			  priv->rx_desc_cpu, priv->rx_desc_dma); +  + out_freeirq_tx: +-	free_irq(priv->irq_tx, dev); ++	if (priv->irq_tx != -1) ++		free_irq(priv->irq_tx, dev); +  + out_freeirq_rx: + 	free_irq(priv->irq_rx, dev); +@@ -2433,7 +2436,8 @@ static int bcm_enetsw_stop(struct net_de + 			  priv->rx_desc_cpu, priv->rx_desc_dma); + 	dma_free_coherent(kdev, priv->tx_desc_alloc_size, + 			  priv->tx_desc_cpu, priv->tx_desc_dma); +-	free_irq(priv->irq_tx, dev); ++	if (priv->irq_tx != -1) ++		free_irq(priv->irq_tx, dev); + 	free_irq(priv->irq_rx, dev); +  + 	return 0; +@@ -2716,7 +2720,7 @@ static int bcm_enetsw_probe(struct platf + 	res_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); + 	irq_rx = platform_get_irq(pdev, 0); + 	irq_tx = platform_get_irq(pdev, 1); +-	if (!res_mem || irq_rx < 0 || irq_tx < 0) ++	if (!res_mem || irq_rx < 0) + 		return -ENODEV; +  + 	ret = 0;  | 
