net: lpc-enet: move phy setup into platform code
Setting the phy mode requires touching a platform specific register, which prevents us from building the driver without its header files. Move it into a separate function in arch/arm/mach/lpc32xx to hide the core registers from the network driver. Link: https://lore.kernel.org/r/20190809144043.476786-8-arnd@arndb.de Acked-by: Sylvain Lemieux <slemieux.tyco@gmail.com> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
parent
9dc03ffd99
commit
ecca1a6277
|
@ -63,6 +63,18 @@ u32 lpc32xx_return_iram(void __iomem **mapbase, dma_addr_t *dmaaddr)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(lpc32xx_return_iram);
|
EXPORT_SYMBOL_GPL(lpc32xx_return_iram);
|
||||||
|
|
||||||
|
void lpc32xx_set_phy_interface_mode(phy_interface_t mode)
|
||||||
|
{
|
||||||
|
u32 tmp = __raw_readl(LPC32XX_CLKPWR_MACCLK_CTRL);
|
||||||
|
tmp &= ~LPC32XX_CLKPWR_MACCTRL_PINS_MSK;
|
||||||
|
if (mode == PHY_INTERFACE_MODE_MII)
|
||||||
|
tmp |= LPC32XX_CLKPWR_MACCTRL_USE_MII_PINS;
|
||||||
|
else
|
||||||
|
tmp |= LPC32XX_CLKPWR_MACCTRL_USE_RMII_PINS;
|
||||||
|
__raw_writel(tmp, LPC32XX_CLKPWR_MACCLK_CTRL);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(lpc32xx_set_phy_interface_mode);
|
||||||
|
|
||||||
static struct map_desc lpc32xx_io_desc[] __initdata = {
|
static struct map_desc lpc32xx_io_desc[] __initdata = {
|
||||||
{
|
{
|
||||||
.virtual = (unsigned long)IO_ADDRESS(LPC32XX_AHB0_START),
|
.virtual = (unsigned long)IO_ADDRESS(LPC32XX_AHB0_START),
|
||||||
|
|
|
@ -20,9 +20,6 @@
|
||||||
#include <linux/spinlock.h>
|
#include <linux/spinlock.h>
|
||||||
#include <linux/soc/nxp/lpc32xx-misc.h>
|
#include <linux/soc/nxp/lpc32xx-misc.h>
|
||||||
|
|
||||||
#include <mach/hardware.h>
|
|
||||||
#include <mach/platform.h>
|
|
||||||
|
|
||||||
#define MODNAME "lpc-eth"
|
#define MODNAME "lpc-eth"
|
||||||
#define DRV_VERSION "1.00"
|
#define DRV_VERSION "1.00"
|
||||||
|
|
||||||
|
@ -1237,16 +1234,9 @@ static int lpc_eth_drv_probe(struct platform_device *pdev)
|
||||||
dma_addr_t dma_handle;
|
dma_addr_t dma_handle;
|
||||||
struct resource *res;
|
struct resource *res;
|
||||||
int irq, ret;
|
int irq, ret;
|
||||||
u32 tmp;
|
|
||||||
|
|
||||||
/* Setup network interface for RMII or MII mode */
|
/* Setup network interface for RMII or MII mode */
|
||||||
tmp = __raw_readl(LPC32XX_CLKPWR_MACCLK_CTRL);
|
lpc32xx_set_phy_interface_mode(lpc_phy_interface_mode(dev));
|
||||||
tmp &= ~LPC32XX_CLKPWR_MACCTRL_PINS_MSK;
|
|
||||||
if (lpc_phy_interface_mode(dev) == PHY_INTERFACE_MODE_MII)
|
|
||||||
tmp |= LPC32XX_CLKPWR_MACCTRL_USE_MII_PINS;
|
|
||||||
else
|
|
||||||
tmp |= LPC32XX_CLKPWR_MACCTRL_USE_RMII_PINS;
|
|
||||||
__raw_writel(tmp, LPC32XX_CLKPWR_MACCLK_CTRL);
|
|
||||||
|
|
||||||
/* Get platform resources */
|
/* Get platform resources */
|
||||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||||
|
|
|
@ -9,9 +9,11 @@
|
||||||
#define __SOC_LPC32XX_MISC_H
|
#define __SOC_LPC32XX_MISC_H
|
||||||
|
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
|
#include <linux/phy.h>
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_LPC32XX
|
#ifdef CONFIG_ARCH_LPC32XX
|
||||||
extern u32 lpc32xx_return_iram(void __iomem **mapbase, dma_addr_t *dmaaddr);
|
extern u32 lpc32xx_return_iram(void __iomem **mapbase, dma_addr_t *dmaaddr);
|
||||||
|
extern void lpc32xx_set_phy_interface_mode(phy_interface_t mode);
|
||||||
#else
|
#else
|
||||||
static inline u32 lpc32xx_return_iram(void __iomem **mapbase, dma_addr_t *dmaaddr)
|
static inline u32 lpc32xx_return_iram(void __iomem **mapbase, dma_addr_t *dmaaddr)
|
||||||
{
|
{
|
||||||
|
@ -19,6 +21,9 @@ static inline u32 lpc32xx_return_iram(void __iomem **mapbase, dma_addr_t *dmaadd
|
||||||
*dmaaddr = 0;
|
*dmaaddr = 0;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
static inline void lpc32xx_set_phy_interface_mode(phy_interface_t mode)
|
||||||
|
{
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* __SOC_LPC32XX_MISC_H */
|
#endif /* __SOC_LPC32XX_MISC_H */
|
||||||
|
|
Loading…
Reference in New Issue