static void pwm_set_voltage(unsigned int id, unsigned int voltage) { int to; for (to = 0; to < ARRAY_SIZE(pwm_voltage_table); to++) { if (pwm_voltage_table[to][1] >= voltage) { break; } } if (to >= ARRAY_SIZE(pwm_voltage_table)) { to = ARRAY_SIZE(pwm_voltage_table) - 1; } switch (id) { case pwm_a: uart_puts("set vcck to 0x"); uart_put_hex(to, 16); uart_puts("mv\n"); P_PWM_PWM_A = pwm_voltage_table[to][0]; break; case pwm_ao_b: uart_puts("set vddee to 0x"); uart_put_hex(to, 16); uart_puts("mv\n"); P_AO_PWM_PWM_B1 = pwm_voltage_table[to][0]; break; default: break; } _udelay(200); }
/* *suspend_from defines who call this function. * 1: suspend * 0: power off */ void enter_suspend(unsigned int suspend_from) { int exit_reason = UDEFINED_WAKEUP; #ifdef CONFIG_CEC_WAKEUP hdmi_cec_func_config = readl(P_AO_DEBUG_REG0); uart_puts("CEC cfg:0x"); uart_put_hex(hdmi_cec_func_config, 16); uart_puts("\n"); #endif p_pwr_op->power_off_at_clk81(); p_pwr_op->power_off_at_24M(); gxbb_com_gate_off(); p_pwr_op->power_off_at_32k(); exit_reason = p_pwr_op->detect_key(suspend_from); p_pwr_op->power_on_at_32k(); gxbb_com_gate_on(); uart_puts("exit_reason:0x"); uart_put_hex(exit_reason, 8); uart_puts("\n"); set_wakeup_method(exit_reason); p_pwr_op->power_on_at_24M(); p_pwr_op->power_on_at_clk81(); }