void ar71xx_device_stop(u32 mask)
{
unsigned long flags;
+ u32 mask_inv;
u32 t;
switch (ar71xx_soc) {
break;
case AR71XX_SOC_AR7240:
+ mask_inv = mask & RESET_MODULE_USB_OHCI_DLL_7240;
local_irq_save(flags);
t = ar71xx_reset_rr(AR724X_RESET_REG_RESET_MODULE);
- ar71xx_reset_wr(AR724X_RESET_REG_RESET_MODULE, t | mask);
+ t |= mask;
+ t &= ~mask_inv;
+ ar71xx_reset_wr(AR724X_RESET_REG_RESET_MODULE, t);
local_irq_restore(flags);
break;
void ar71xx_device_start(u32 mask)
{
unsigned long flags;
+ u32 mask_inv;
u32 t;
switch (ar71xx_soc) {
break;
case AR71XX_SOC_AR7240:
+ mask_inv = mask & RESET_MODULE_USB_OHCI_DLL_7240;
local_irq_save(flags);
t = ar71xx_reset_rr(AR724X_RESET_REG_RESET_MODULE);
- ar71xx_reset_wr(AR724X_RESET_REG_RESET_MODULE, t & ~mask);
+ t &= ~mask;
+ t |= mask_inv;
+ ar71xx_reset_wr(AR724X_RESET_REG_RESET_MODULE, t);
local_irq_restore(flags);
break;