de49dacd5ff17fa68cd0be75e93aa9e63b7fa904
[openwrt/staging/lynxis.git] / target / linux / mediatek / patches-4.14 / 0063-atomic-sleep.patch
1 Index: linux-4.14.12/drivers/net/ethernet/mediatek/mtk_eth_soc.c
2 ===================================================================
3 --- linux-4.14.12.orig/drivers/net/ethernet/mediatek/mtk_eth_soc.c
4 +++ linux-4.14.12/drivers/net/ethernet/mediatek/mtk_eth_soc.c
5 @@ -409,6 +409,7 @@ static int mtk_mdio_init(struct mtk_eth
6
7 snprintf(eth->mii_bus->id, MII_BUS_ID_SIZE, "%s", mii_np->name);
8 ret = of_mdiobus_register(eth->mii_bus, mii_np);
9 +printk("%s:%s[%d]%d %p\n", __FILE__, __func__, __LINE__, ret, eth->mii_bus);
10
11 err_put_node:
12 of_node_put(mii_np);
13 @@ -1472,7 +1473,10 @@ static void mtk_hwlro_rx_uninit(struct m
14 for (i = 0; i < 10; i++) {
15 val = mtk_r32(eth, MTK_PDMA_LRO_CTRL_DW0);
16 if (val & MTK_LRO_RING_RELINQUISH_DONE) {
17 - msleep(20);
18 + if (in_atomic())
19 + mdelay(20);
20 + else
21 + msleep(20);
22 continue;
23 }
24 break;
25 @@ -1868,7 +1872,10 @@ static void mtk_stop_dma(struct mtk_eth
26 for (i = 0; i < 10; i++) {
27 val = mtk_r32(eth, glo_cfg);
28 if (val & (MTK_TX_DMA_BUSY | MTK_RX_DMA_BUSY)) {
29 - msleep(20);
30 + if (in_atomic())
31 + mdelay(20);
32 + else
33 + msleep(20);
34 continue;
35 }
36 break;
37 @@ -1906,7 +1913,10 @@ static void ethsys_reset(struct mtk_eth
38 reset_bits,
39 reset_bits);
40
41 - usleep_range(1000, 1100);
42 + if (in_atomic())
43 + udelay(1000);
44 + else
45 + usleep_range(1000, 1100);
46 regmap_update_bits(eth->ethsys, ETHSYS_RSTCTRL,
47 reset_bits,
48 ~reset_bits);