int led_set_pwm(int pwm_num, struct nled_setting* led)
{
/*
struct pwm_spec_config pwm_setting;
int time_index = 0;
pwm_setting.pwm_no = pwm_num;
pwm_setting.mode = PWM_MODE_OLD;
//LEDS_DEBUG("[LED]led_set_pwm: mode = %d, pwm_no = %d\n", led->nled_mode, pwm_num);
// Only old PWM mode with 32kHz clock source can work in the system sleep mode
pwm_setting.clk_src = PWM_CLK_OLD_MODE_32K;
switch (led->nled_mode)
{
case 1 :
pwm_setting.PWM_MODE_OLD_REGS.THRESH = 8100;
pwm_setting.clk_div = CLK_DIV1;
pwm_setting.PWM_MODE_OLD_REGS.DATA_WIDTH = 8100;
break;
}
pwm_setting.PWM_MODE_FIFO_REGS.IDLE_VALUE = 0;
pwm_setting.PWM_MODE_FIFO_REGS.GUARD_VALUE = 0;
pwm_setting.PWM_MODE_FIFO_REGS.WAVE_NUM = 0;
pwm_setting.PWM_MODE_OLD_REGS.GDURATION = 8100;
pwm_set_spec_config(&pwm_setting);
*/
struct pwm_spec_config pwm_setting;
pwm_setting.pwm_no = pwm_num;
pwm_setting.mode = PWM_MODE_FIFO; //new mode fifo and periodical mode
pwm_setting.clk_div = CLK_DIV1;
pwm_setting.clk_src = PWM_CLK_NEW_MODE_BLOCK;//PWM_CLK_NEW_MODE_BLOCK_DIV_BY_1625;
pwm_setting.PWM_MODE_FIFO_REGS.IDLE_VALUE = 0;
pwm_setting.PWM_MODE_FIFO_REGS.GUARD_VALUE = 0;
pwm_setting.PWM_MODE_FIFO_REGS.STOP_BITPOS_VALUE = 63;
pwm_setting.PWM_MODE_FIFO_REGS.HDURATION = 4;
pwm_setting.PWM_MODE_FIFO_REGS.LDURATION = 4;
pwm_setting.PWM_MODE_FIFO_REGS.GDURATION = 0;
pwm_setting.PWM_MODE_FIFO_REGS.WAVE_NUM = 0;
u32 level = 20;
//LEDS_DEBUG("[LED]backlight_set_pwm:duty is %d\n", level);
if(level <= 32)
{
pwm_setting.PWM_MODE_FIFO_REGS.SEND_DATA0 = (1 << level) - 1 ;
pwm_setting.PWM_MODE_FIFO_REGS.SEND_DATA1 = 0 ;
}else if(level>32 && level <=64)
{
//level -= 32;//32
if(level>28)level=28; //鍥犱负纭欢鐨勪寒搴︾瓑绾ф槸0--31,32涓瓑绾с€傛垜浠妸纭欢鐨勬渶澶т寒搴︾瓑绾ц缃负28锛屼篃杈惧埌浜嗙洰鐨勩€?
pwm_setting.PWM_MODE_FIFO_REGS.SEND_DATA0 = 0xFFFFFFFF ;
pwm_setting.PWM_MODE_FIFO_REGS.SEND_DATA1 = (1 << level) - 1;
}else
{
//LEDS_DEBUG("[LED]Error level in backlight\n");
}
pwm_set_spec_config(&pwm_setting);
return 0;
{
/*
struct pwm_spec_config pwm_setting;
int time_index = 0;
pwm_setting.pwm_no = pwm_num;
pwm_setting.mode = PWM_MODE_OLD;
//LEDS_DEBUG("[LED]led_set_pwm: mode = %d, pwm_no = %d\n", led->nled_mode, pwm_num);
// Only old PWM mode with 32kHz clock source can work in the system sleep mode
pwm_setting.clk_src = PWM_CLK_OLD_MODE_32K;
switch (led->nled_mode)
{
case 1 :
pwm_setting.PWM_MODE_OLD_REGS.THRESH = 8100;
pwm_setting.clk_div = CLK_DIV1;
pwm_setting.PWM_MODE_OLD_REGS.DATA_WIDTH = 8100;
break;
}
pwm_setting.PWM_MODE_FIFO_REGS.IDLE_VALUE = 0;
pwm_setting.PWM_MODE_FIFO_REGS.GUARD_VALUE = 0;
pwm_setting.PWM_MODE_FIFO_REGS.WAVE_NUM = 0;
pwm_setting.PWM_MODE_OLD_REGS.GDURATION = 8100;
pwm_set_spec_config(&pwm_setting);
*/
struct pwm_spec_config pwm_setting;
pwm_setting.pwm_no = pwm_num;
pwm_setting.mode = PWM_MODE_FIFO; //new mode fifo and periodical mode
pwm_setting.clk_div = CLK_DIV1;
pwm_setting.clk_src = PWM_CLK_NEW_MODE_BLOCK;//PWM_CLK_NEW_MODE_BLOCK_DIV_BY_1625;
pwm_setting.PWM_MODE_FIFO_REGS.IDLE_VALUE = 0;
pwm_setting.PWM_MODE_FIFO_REGS.GUARD_VALUE = 0;
pwm_setting.PWM_MODE_FIFO_REGS.STOP_BITPOS_VALUE = 63;
pwm_setting.PWM_MODE_FIFO_REGS.HDURATION = 4;
pwm_setting.PWM_MODE_FIFO_REGS.LDURATION = 4;
pwm_setting.PWM_MODE_FIFO_REGS.GDURATION = 0;
pwm_setting.PWM_MODE_FIFO_REGS.WAVE_NUM = 0;
u32 level = 20;
//LEDS_DEBUG("[LED]backlight_set_pwm:duty is %d\n", level);
if(level <= 32)
{
pwm_setting.PWM_MODE_FIFO_REGS.SEND_DATA0 = (1 << level) - 1 ;
pwm_setting.PWM_MODE_FIFO_REGS.SEND_DATA1 = 0 ;
}else if(level>32 && level <=64)
{
//level -= 32;//32
if(level>28)level=28; //鍥犱负纭欢鐨勪寒搴︾瓑绾ф槸0--31,32涓瓑绾с€傛垜浠妸纭欢鐨勬渶澶т寒搴︾瓑绾ц缃负28锛屼篃杈惧埌浜嗙洰鐨勩€?
pwm_setting.PWM_MODE_FIFO_REGS.SEND_DATA0 = 0xFFFFFFFF ;
pwm_setting.PWM_MODE_FIFO_REGS.SEND_DATA1 = (1 << level) - 1;
}else
{
//LEDS_DEBUG("[LED]Error level in backlight\n");
}
pwm_set_spec_config(&pwm_setting);
return 0;
}
mt_set_gpio_mode(GPIO129, 1);
mt_set_gpio_dir(GPIO129, GPIO_DIR_OUT);
//mt_set_gpio_out(GPIO129, GPIO_OUT_ONE);
struct nled_setting led_tmp_setting = {1,0,0};
led_set_pwm(1, &led_tmp_setting);