ramips: fix the number of uarts for MT7688
[openwrt/openwrt.git] / target / linux / mediatek / patches-4.4 / 0094-net-next-mediatek-don-t-use-intermediate-variables-t.patch
1 From 441d87495f33fd444a2b2a16f6df07892dac3f89 Mon Sep 17 00:00:00 2001
2 From: John Crispin <john@phrozen.org>
3 Date: Tue, 3 May 2016 04:12:35 +0200
4 Subject: [PATCH 094/102] net-next: mediatek: don't use intermediate variables
5 to store IRQ masks
6
7 The code currently uses variables to store and never modify the bit masks
8 of interrupts. This is legacy code from an early version of the driver
9 that supported MIPS based SoCs where the IRQ bits depended on the actual
10 SoC. As the bits are the same for all ARM based SoC using this driver we
11 can remove the intermediate variables.
12
13 Signed-off-by: John Crispin <john@phrozen.org>
14 ---
15 drivers/net/ethernet/mediatek/mtk_eth_soc.c | 22 ++++++++++------------
16 1 file changed, 10 insertions(+), 12 deletions(-)
17
18 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
19 +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
20 @@ -806,7 +806,7 @@ drop:
21 }
22
23 static int mtk_poll_rx(struct napi_struct *napi, int budget,
24 - struct mtk_eth *eth, u32 rx_intr)
25 + struct mtk_eth *eth)
26 {
27 struct mtk_rx_ring *ring = &eth->rx_ring;
28 int idx = ring->calc_idx;
29 @@ -894,7 +894,7 @@ release_desc:
30 }
31
32 if (done < budget)
33 - mtk_w32(eth, rx_intr, MTK_QMTK_INT_STATUS);
34 + mtk_w32(eth, MTK_RX_DONE_INT, MTK_QMTK_INT_STATUS);
35
36 return done;
37 }
38 @@ -977,28 +977,26 @@ static int mtk_poll_tx(struct mtk_eth *e
39 static int mtk_poll(struct napi_struct *napi, int budget)
40 {
41 struct mtk_eth *eth = container_of(napi, struct mtk_eth, rx_napi);
42 - u32 status, status2, mask, tx_intr, rx_intr, status_intr;
43 + u32 status, status2, mask;
44 int tx_done, rx_done;
45 bool tx_again = false;
46
47 status = mtk_r32(eth, MTK_QMTK_INT_STATUS);
48 status2 = mtk_r32(eth, MTK_INT_STATUS2);
49 - tx_intr = MTK_TX_DONE_INT;
50 - rx_intr = MTK_RX_DONE_INT;
51 - status_intr = (MTK_GDM1_AF | MTK_GDM2_AF);
52 tx_done = 0;
53 rx_done = 0;
54 tx_again = 0;
55
56 - if (status & tx_intr)
57 + if (status & MTK_TX_DONE_INT)
58 tx_done = mtk_poll_tx(eth, budget, &tx_again);
59
60 - if (status & rx_intr)
61 - rx_done = mtk_poll_rx(napi, budget, eth, rx_intr);
62 + if (status & MTK_RX_DONE_INT)
63 + rx_done = mtk_poll_rx(napi, budget, eth);
64
65 - if (unlikely(status2 & status_intr)) {
66 + if (unlikely(status2 & (MTK_GDM1_AF | MTK_GDM2_AF))) {
67 mtk_stats_update(eth);
68 - mtk_w32(eth, status_intr, MTK_INT_STATUS2);
69 + mtk_w32(eth, (MTK_GDM1_AF | MTK_GDM2_AF),
70 + MTK_INT_STATUS2);
71 }
72
73 if (unlikely(netif_msg_intr(eth))) {
74 @@ -1016,7 +1014,7 @@ static int mtk_poll(struct napi_struct *
75 return budget;
76
77 napi_complete(napi);
78 - mtk_irq_enable(eth, tx_intr | rx_intr);
79 + mtk_irq_enable(eth, MTK_RX_DONE_INT | MTK_RX_DONE_INT);
80
81 return rx_done;
82 }