18369ae33SRafał Miłecki /* 28369ae33SRafał Miłecki * Broadcom specific AMBA 38369ae33SRafał Miłecki * Core ops 48369ae33SRafał Miłecki * 58369ae33SRafał Miłecki * Licensed under the GNU/GPL. See COPYING for details. 68369ae33SRafał Miłecki */ 78369ae33SRafał Miłecki 88369ae33SRafał Miłecki #include "bcma_private.h" 98369ae33SRafał Miłecki #include <linux/bcma/bcma.h> 108369ae33SRafał Miłecki 118369ae33SRafał Miłecki bool bcma_core_is_enabled(struct bcma_device *core) 128369ae33SRafał Miłecki { 138369ae33SRafał Miłecki if ((bcma_aread32(core, BCMA_IOCTL) & (BCMA_IOCTL_CLK | BCMA_IOCTL_FGC)) 148369ae33SRafał Miłecki != BCMA_IOCTL_CLK) 158369ae33SRafał Miłecki return false; 168369ae33SRafał Miłecki if (bcma_aread32(core, BCMA_RESET_CTL) & BCMA_RESET_CTL_RESET) 178369ae33SRafał Miłecki return false; 188369ae33SRafał Miłecki return true; 198369ae33SRafał Miłecki } 208369ae33SRafał Miłecki EXPORT_SYMBOL_GPL(bcma_core_is_enabled); 218369ae33SRafał Miłecki 228369ae33SRafał Miłecki static void bcma_core_disable(struct bcma_device *core, u32 flags) 238369ae33SRafał Miłecki { 248369ae33SRafał Miłecki if (bcma_aread32(core, BCMA_RESET_CTL) & BCMA_RESET_CTL_RESET) 258369ae33SRafał Miłecki return; 268369ae33SRafał Miłecki 278369ae33SRafał Miłecki bcma_awrite32(core, BCMA_IOCTL, flags); 288369ae33SRafał Miłecki bcma_aread32(core, BCMA_IOCTL); 298369ae33SRafał Miłecki udelay(10); 308369ae33SRafał Miłecki 318369ae33SRafał Miłecki bcma_awrite32(core, BCMA_RESET_CTL, BCMA_RESET_CTL_RESET); 328369ae33SRafał Miłecki udelay(1); 338369ae33SRafał Miłecki } 348369ae33SRafał Miłecki 358369ae33SRafał Miłecki int bcma_core_enable(struct bcma_device *core, u32 flags) 368369ae33SRafał Miłecki { 378369ae33SRafał Miłecki bcma_core_disable(core, flags); 388369ae33SRafał Miłecki 398369ae33SRafał Miłecki bcma_awrite32(core, BCMA_IOCTL, (BCMA_IOCTL_CLK | BCMA_IOCTL_FGC | flags)); 408369ae33SRafał Miłecki bcma_aread32(core, BCMA_IOCTL); 418369ae33SRafał Miłecki 428369ae33SRafał Miłecki bcma_awrite32(core, BCMA_RESET_CTL, 0); 438369ae33SRafał Miłecki udelay(1); 448369ae33SRafał Miłecki 458369ae33SRafał Miłecki bcma_awrite32(core, BCMA_IOCTL, (BCMA_IOCTL_CLK | flags)); 468369ae33SRafał Miłecki bcma_aread32(core, BCMA_IOCTL); 478369ae33SRafał Miłecki udelay(1); 488369ae33SRafał Miłecki 498369ae33SRafał Miłecki return 0; 508369ae33SRafał Miłecki } 518369ae33SRafał Miłecki EXPORT_SYMBOL_GPL(bcma_core_enable); 52