*/
#define PMU_NONE(args)
-#ifdef BRCM_FULLMAC
-/* SDIO Pad drive strength to select value mappings */
-typedef struct {
- uint8 strength; /* Pad Drive Strength in mA */
- uint8 sel; /* Chip-specific select value */
-} sdiod_drive_str_t;
-
-/* SDIO Drive Strength to sel value table for PMU Rev 1 */
-static const sdiod_drive_str_t sdiod_drive_strength_tab1[] = {
- {4, 0x2},
- {2, 0x3},
- {1, 0x0},
- {0, 0x0} };
-
-/* SDIO Drive Strength to sel value table for PMU Rev 2, 3 */
-static const sdiod_drive_str_t sdiod_drive_strength_tab2[] = {
- {12, 0x7},
- {10, 0x6},
- {8, 0x5},
- {6, 0x4},
- {4, 0x2},
- {2, 0x1},
- {0, 0x0} };
-
-#define SDIOD_DRVSTR_KEY(chip, pmu) (((chip) << 16) | (pmu))
-
-void
-si_sdiod_drive_strength_init(si_t *sih, osl_t *osh, uint32 drivestrength)
-{
- chipcregs_t *cc;
- uint origidx, intr_val = 0;
- sdiod_drive_str_t *str_tab = NULL;
- uint32 str_mask = 0;
- uint32 str_shift = 0;
-
- if (!(sih->cccaps & CC_CAP_PMU)) {
- return;
- }
-
- /* Remember original core before switch to chipc */
- cc = (chipcregs_t *) si_switch_core(sih, CC_CORE_ID, &origidx,
- &intr_val);
-
- switch (SDIOD_DRVSTR_KEY(sih->chip, sih->pmurev)) {
- case SDIOD_DRVSTR_KEY(BCM4325_CHIP_ID, 1):
- str_tab = (sdiod_drive_str_t *)&sdiod_drive_strength_tab1;
- str_mask = 0x30000000;
- str_shift = 28;
- break;
- case SDIOD_DRVSTR_KEY(BCM4325_CHIP_ID, 2):
- case SDIOD_DRVSTR_KEY(BCM4325_CHIP_ID, 3):
- str_tab = (sdiod_drive_str_t *)&sdiod_drive_strength_tab2;
- str_mask = 0x00003800;
- str_shift = 11;
- break;
-
- default:
- PMU_MSG(("No SDIO Drive strength init done for chip %x rev %d "
- "pmurev %d\n", sih->chip, sih->chiprev, sih->pmurev));
-
- break;
- }
-
- if (str_tab != NULL) {
- uint32 drivestrength_sel = 0;
- uint32 cc_data_temp;
- int i;
-
- for (i = 0; str_tab[i].strength != 0; i++) {
- if (drivestrength >= str_tab[i].strength) {
- drivestrength_sel = str_tab[i].sel;
- break;
- }
- }
-
- W_REG(osh, &cc->chipcontrol_addr, 1);
- cc_data_temp = R_REG(osh, &cc->chipcontrol_data);
- cc_data_temp &= ~str_mask;
- drivestrength_sel <<= str_shift;
- cc_data_temp |= drivestrength_sel;
- W_REG(osh, &cc->chipcontrol_data, cc_data_temp);
-
- PMU_MSG(("SDIO: %dmA drive strength selected, set to 0x%08x\n",
- drivestrength, cc_data_temp));
- }
-
- /* Return to original core */
- si_restore_core(sih, origidx, intr_val);
-}
-#else /* BRCM_FULLMAC */
/* PLL controls/clocks */
static void si_pmu1_pllinit0(si_t *sih, osl_t *osh, chipcregs_t *cc,
uint32 xtal);
&intr_val);
switch (SDIOD_DRVSTR_KEY(sih->chip, sih->pmurev)) {
+ case SDIOD_DRVSTR_KEY(BCM4325_CHIP_ID, 1):
+ str_tab = (sdiod_drive_str_t *)&sdiod_drive_strength_tab1;
+ str_mask = 0x30000000;
+ str_shift = 28;
+ break;
+ case SDIOD_DRVSTR_KEY(BCM4325_CHIP_ID, 2):
+ case SDIOD_DRVSTR_KEY(BCM4325_CHIP_ID, 3):
+ str_tab = (sdiod_drive_str_t *)&sdiod_drive_strength_tab2;
+ str_mask = 0x00003800;
+ str_shift = 11;
+ break;
case SDIOD_DRVSTR_KEY(BCM4336_CHIP_ID, 8):
str_tab = (sdiod_drive_str_t *) &sdiod_drive_strength_tab3;
str_mask = 0x00003800;
(m6div << PMU1_PLL0_PC2_M6DIV_SHIFT));
si_pmu_pllcontrol(sih, PMU1_PLL0_PLLCTL2, ~0, pllc2);
}
-#endif /* BRCM_FULLMAC */
void *sdh);
static bool si_buscore_setup(si_info_t *sii, chipcregs_t *cc, uint bustype,
uint32 savewin, uint *origidx, void *regs);
-#ifndef BRCM_FULLMAC
static void si_nvram_process(si_info_t *sii, char *pvars);
-#endif
/* dev path concatenation util */
-#ifndef BRCM_FULLMAC
static char *si_devpathvar(si_t *sih, char *var, int len, const char *name);
static bool _si_clkctl_cc(si_info_t *sii, uint mode);
static bool si_ispcie(si_info_t *sii);
-#endif
static uint BCMINITFN(socram_banksize) (si_info_t *sii, sbsocramregs_t *r,
uint8 idx, uint8 mtype);
return TRUE;
}
-#ifndef BRCM_FULLMAC
-static void BCMATTACHFN(si_nvram_process) (si_info_t *sii, char *pvars)
+static __used void BCMATTACHFN(si_nvram_process) (si_info_t *sii, char *pvars)
{
uint w = 0;
sii->pub.boardflags = getintvar(pvars, "boardflags");
}
-#endif /* !BRCM_FULLMAC */
/* this is will make Sonics calls directly, since Sonics is no longer supported in the Si abstraction */
/* this has been customized for the bcm 4329 ONLY */
}
}
-#ifndef BRCM_FULLMAC
uint32 BCMINITFN(si_clock) (si_t *sih)
{
si_info_t *sii;
return ILP_CLOCK;
}
-#endif
/* set chip watchdog reset timer to fire in 'ticks' */
#ifdef BRCM_FULLMAC
si_watchdog(sih, wd_msticks * ms);
}
-#ifndef BRCM_FULLMAC
uint16 BCMATTACHFN(si_d11_devid) (si_t *sih)
{
si_info_t *sii = SI_INFO(sih);
}
/* return TRUE if PCIE capability exists in the pci config space */
-static bool si_ispcie(si_info_t *sii)
+static __used bool si_ispcie(si_info_t *sii)
{
uint8 cap_ptr;
pcicore_pmeclr(sii->pch);
}
-#endif /* !BRCM_FULLMAC */
#ifdef BCMSDIO
/* initialize the sdio core */
}
#endif /* BCMSDIO */
-#ifndef BRCM_FULLMAC
bool BCMATTACHFN(si_pci_war16165) (si_t *sih)
{
si_info_t *sii;
pcicore_hwup(sii->pch);
return 0;
}
-#endif /* !BRCM_FULLMAC */
/* change logical "focus" to the gpio core for optimized access */
void *si_gpiosetcore(si_t *sih)
return FALSE;
}
-#ifndef BRCM_FULLMAC
bool si_is_sprom_available(si_t *sih)
{
if (sih->ccrev >= 31) {
return CIS_DEFAULT;
}
}
-#endif /* BRCM_FULLMAC */