static void
mq_power_on (struct mediaq11xx_base *zis, int subdev_id)
{
/* The device IDs lower 4 bits contains the subdevice index
* (counting from 1). Take care to keep all MEDIAQ_11XX_XXX
* contstants with sequential values in their lower 4 bits!
*/
unsigned idx = (subdev_id & 0x0f) - 1;
struct mq_data *mqdata = to_mq_data (zis);
debug_func ("subdev:%x curstate:%d\n", subdev_id, mqdata->power_on [idx]);
/* Check if MediaQ is not totally turned off */
if (!global_power (mqdata)) {
debug ("-*- Global POWER ON to the MediaQ chip -*-\n");
>>> the above debug message was not printed
/* First of all, enable the oscillator clock */
zis->regs->DC.config_1 = mqdata->mq_init->DC [1];
/* Wait for oscillator to run - 30ms doesnt suffice */
mdelay (100);
/* Enable power to CPU Configuration module */
zis->regs->DC.config_2 |= MQ_CONFIG_CC_MODULE_ENABLE;
mdelay (10);
/* Needed for MediaQ 1178/88 on h2200. */
mqdata->base.regs->DC.config_8 = 0x86098609;
/* Enable the MQ1132 MIU */
zis->regs->MIU.miu_0 |= MQ_MIU_ENABLE;
}
if (!mqdata->power_on [idx])
>>> isn't mqdata->power_on[idx] == 1 so this is not entered?
switch (subdev_id) {
case MEDIAQ_11XX_FB_DEVICE_ID:
zis->regs->GC.control |= MQ_GC_CONTROL_ENABLE;
/* Enable the graphics engine power */
zis->regs->DC.config_5 |= MQ_CONFIG_GE_ENABLE;
break;
case MEDIAQ_11XX_FP_DEVICE_ID:
/* Enable flat panel pin outputs */
//zis->regs->FP.pin_control_1 &= ~MQ_FP_DISABLE_FLAT_PANEL_PINS;
zis->regs->FP.output_control = mqdata->mq_init->FP [2];
break;
case MEDIAQ_11XX_UDC_DEVICE_ID:
/* Enable power to USB function */
zis->regs->DC.config_5 |= MQ_CONFIG_UDC_CLOCK_ENABLE;
break;
case MEDIAQ_11XX_UHC_DEVICE_ID:
/* Enable power to USB host */
zis->regs->DC.config_5 |= MQ_CONFIG_UHC_CLOCK_ENABLE;
break;
case MEDIAQ_11XX_SPI_DEVICE_ID:
case MEDIAQ_11XX_I2S_DEVICE_ID:
/* There's no explicit way to do it */
break;
}
mqdata->power_on [idx]++;
}