diff options
author | Byungho An <bh74.an@samsung.com> | 2014-04-29 00:15:15 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-04-30 16:12:22 -0400 |
commit | 0a0347b1e65d0757024d9db0ffdeafb41a9d14f4 (patch) | |
tree | 2415c998ec40804f171f683231794f31c41eb6d2 | |
parent | d2e752db6d05374a35dddb2e17864fe310fbcf69 (diff) |
net: sxgbe: sw reset moved to probe function
This patch moves sw reset to probe function because
sw reset is needed early stage before open function.
Signed-off-by: Byungho An <bh74.an@samsung.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/samsung/sxgbe/sxgbe_dma.c | 13 | ||||
-rw-r--r-- | drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c | 22 |
2 files changed, 22 insertions, 13 deletions
diff --git a/drivers/net/ethernet/samsung/sxgbe/sxgbe_dma.c b/drivers/net/ethernet/samsung/sxgbe/sxgbe_dma.c index 4d989ff6c978..bb9b5b8afc5f 100644 --- a/drivers/net/ethernet/samsung/sxgbe/sxgbe_dma.c +++ b/drivers/net/ethernet/samsung/sxgbe/sxgbe_dma.c | |||
@@ -23,21 +23,8 @@ | |||
23 | /* DMA core initialization */ | 23 | /* DMA core initialization */ |
24 | static int sxgbe_dma_init(void __iomem *ioaddr, int fix_burst, int burst_map) | 24 | static int sxgbe_dma_init(void __iomem *ioaddr, int fix_burst, int burst_map) |
25 | { | 25 | { |
26 | int retry_count = 10; | ||
27 | u32 reg_val; | 26 | u32 reg_val; |
28 | 27 | ||
29 | /* reset the DMA */ | ||
30 | writel(SXGBE_DMA_SOFT_RESET, ioaddr + SXGBE_DMA_MODE_REG); | ||
31 | while (retry_count--) { | ||
32 | if (!(readl(ioaddr + SXGBE_DMA_MODE_REG) & | ||
33 | SXGBE_DMA_SOFT_RESET)) | ||
34 | break; | ||
35 | mdelay(10); | ||
36 | } | ||
37 | |||
38 | if (retry_count < 0) | ||
39 | return -EBUSY; | ||
40 | |||
41 | reg_val = readl(ioaddr + SXGBE_DMA_SYSBUS_MODE_REG); | 28 | reg_val = readl(ioaddr + SXGBE_DMA_SYSBUS_MODE_REG); |
42 | 29 | ||
43 | /* if fix_burst = 0, Set UNDEF = 1 of DMA_Sys_Mode Register. | 30 | /* if fix_burst = 0, Set UNDEF = 1 of DMA_Sys_Mode Register. |
diff --git a/drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c b/drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c index 27e8c824b204..6ad7b3aaaada 100644 --- a/drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c +++ b/drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c | |||
@@ -2070,6 +2070,24 @@ static int sxgbe_hw_init(struct sxgbe_priv_data * const priv) | |||
2070 | return 0; | 2070 | return 0; |
2071 | } | 2071 | } |
2072 | 2072 | ||
2073 | static int sxgbe_sw_reset(void __iomem *addr) | ||
2074 | { | ||
2075 | int retry_count = 10; | ||
2076 | |||
2077 | writel(SXGBE_DMA_SOFT_RESET, addr + SXGBE_DMA_MODE_REG); | ||
2078 | while (retry_count--) { | ||
2079 | if (!(readl(addr + SXGBE_DMA_MODE_REG) & | ||
2080 | SXGBE_DMA_SOFT_RESET)) | ||
2081 | break; | ||
2082 | mdelay(10); | ||
2083 | } | ||
2084 | |||
2085 | if (retry_count < 0) | ||
2086 | return -EBUSY; | ||
2087 | |||
2088 | return 0; | ||
2089 | } | ||
2090 | |||
2073 | /** | 2091 | /** |
2074 | * sxgbe_drv_probe | 2092 | * sxgbe_drv_probe |
2075 | * @device: device pointer | 2093 | * @device: device pointer |
@@ -2102,6 +2120,10 @@ struct sxgbe_priv_data *sxgbe_drv_probe(struct device *device, | |||
2102 | priv->plat = plat_dat; | 2120 | priv->plat = plat_dat; |
2103 | priv->ioaddr = addr; | 2121 | priv->ioaddr = addr; |
2104 | 2122 | ||
2123 | ret = sxgbe_sw_reset(priv->ioaddr); | ||
2124 | if (ret) | ||
2125 | goto error_free_netdev; | ||
2126 | |||
2105 | /* Verify driver arguments */ | 2127 | /* Verify driver arguments */ |
2106 | sxgbe_verify_args(); | 2128 | sxgbe_verify_args(); |
2107 | 2129 | ||