mirror of https://github.com/hak5/openwrt-owl.git
parent
7b878dde4b
commit
0d2ad7a816
|
@ -31,6 +31,7 @@
|
|||
struct rt305x_esw {
|
||||
void __iomem *base;
|
||||
struct rt305x_esw_platform_data *pdata;
|
||||
spinlock_t reg_rw_lock;
|
||||
};
|
||||
|
||||
static inline void
|
||||
|
@ -45,6 +46,27 @@ rt305x_esw_rr(struct rt305x_esw *esw, unsigned reg)
|
|||
return __raw_readl(esw->base + reg);
|
||||
}
|
||||
|
||||
static inline void
|
||||
rt305x_esw_rmw_raw(struct rt305x_esw *esw, unsigned reg, unsigned long mask,
|
||||
unsigned long val)
|
||||
{
|
||||
unsigned long t;
|
||||
|
||||
t = __raw_readl(esw->base + reg) & ~mask;
|
||||
__raw_writel(t | val, esw->base + reg);
|
||||
}
|
||||
|
||||
static void
|
||||
rt305x_esw_rmw(struct rt305x_esw *esw, unsigned reg, unsigned long mask,
|
||||
unsigned long val)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&esw->reg_rw_lock, flags);
|
||||
rt305x_esw_rmw_raw(esw, reg, mask, val);
|
||||
spin_unlock_irqrestore(&esw->reg_rw_lock, flags);
|
||||
}
|
||||
|
||||
static u32
|
||||
rt305x_mii_write(struct rt305x_esw *esw, u32 phy_addr, u32 phy_register,
|
||||
u32 write_data)
|
||||
|
@ -170,6 +192,7 @@ rt305x_esw_probe(struct platform_device *pdev)
|
|||
platform_set_drvdata(pdev, esw);
|
||||
|
||||
esw->pdata = pdata;
|
||||
spin_lock_init(&esw->reg_rw_lock);
|
||||
rt305x_esw_hw_init(esw);
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue