void Mode9_open_Timer_ON_ComingCall(void) { static int sizeof_on_ComingCall; static int count; //sizeof_on_ComingCall=2; sizeof_on_ComingCall=(sizeof(PWMup_ComingCall))/sizeof(PWMup_ComingCall[0]); //Mode_Close_all(); //led_share_red_grean_blue(); //count++; if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x22,PWMup_ComingCall[count++])) { return; } if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x21,PWMup_ComingCall[count++])) { return; } if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x20,PWMup_ComingCall[count++])) { return; } if(sizeof_on_ComingCall<=count) { Mode_Close_all(); //led_red_grean_blue(); count=0; return; } SANLED_Timer.data = (unsigned long)9; mod_timer(&SANLED_Timer,(jiffies + 5)); //20 }
void Mode13_open_Timer_ON_PowerOn(void) { static int sizeof_on_PowerOn; static int count; //sizeof_on_PowerOn=2; sizeof_on_PowerOn=(sizeof(PWMup_PowerOn))/sizeof(PWMup_PowerOn[0]); //Mode_Close_all(); //led_share_red_grean_blue(); //count++; if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x22,PWMup_PowerOn[count++])) { return; } if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x21,PWMup_PowerOn[count++])) { return; } if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x20,PWMup_PowerOn[count++])) { return; } if(sizeof_on_PowerOn<=count) { Mode_Close_all(); //led_red_grean_blue(); count=0; return; } SANLED_Timer.data = (unsigned long)13; mod_timer(&SANLED_Timer,(jiffies + 20)); }
void Mode12_open_Timer_ON_PowerOff(void) { static int sizeof_on_PowerOff; static int count; //sizeof_on_PowerOff=2; sizeof_on_PowerOff=(sizeof(PWMup_PowerOff))/sizeof(PWMup_PowerOff[0]); //Mode_Close_all(); //led_share_grean_grean(); //count++; if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x22,PWMup_PowerOff[count++])) { return; } if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x21,PWMup_PowerOff[count++])) { return; } if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x20,PWMup_PowerOff[count++])) { return; } if(sizeof_on_PowerOff<=count) { Mode_Close_all(); //led_share_grean(); count=0; return; } SANLED_Timer.data = (unsigned long)12; mod_timer(&SANLED_Timer,(jiffies + 10)); }
static void led_red_grean_blue() { static int led_red_grean_blue; if(led_red_grean_blue==0) { if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x22,0x3F)) { ; } led_red_grean_blue+=1; } else if(led_red_grean_blue==1) { if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x21,0x3F)) { ; } led_red_grean_blue+=1; } else if(led_red_grean_blue==2) { if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x20,0x3F)) { ; } led_red_grean_blue=0; } }
void Mode2_open_Timer_ON_Charge() { static int sizeof_on_charge; static int count; //sizeof_on_charge=10; sizeof_on_charge=(sizeof(PWMup_Charge))/sizeof(PWMup_Charge[0]); //Mode_Close_all(); //led_share_red_red(); // printk("Mode2_open_Timer_ON_Charge \n"); //count++; if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x22,PWMup_Charge[count++])) { return; } if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x21,PWMup_Charge[count++])) { return; } if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x20,PWMup_Charge[count++])) { return; } if(sizeof_on_charge<=count) { Mode_Close_all(); //led_share_red(); count=0; return; } SANLED_Timer.data = (unsigned long)2; mod_timer(&SANLED_Timer,(jiffies + 20)); //60 }
static void led_share_red() { if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x20,0x3F)) { ; } }
void SANLED_Chip_Pin_Off() { if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x20,0x00))//OUT0口调光,调光等级为0-255。OUT0~OUT9的调光指令依次为0x20~0x29. 写0关闭 { return; } if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x21,0x00))//OUT0口调光,调光等级为0-255。OUT0~OUT9的调光指令依次为0x20~0x29. 写0关闭 { return; } if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x22,0x00))//OUT0口调光,调光等级为0-255。OUT0~OUT9的调光指令依次为0x20~0x29. 写0关闭 { return; } }
static void led_share_grean_grean() { static int led_grean_grean; if(led_grean_grean/2==0) { if ((led_grean_grean % 2) == 0){ if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x21,0x3F)) { return; } }else{ //mdelay(100); if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x21,0x00)) { return; } } } else if(led_grean_grean/2==1) { if ((led_grean_grean % 2) == 0){ //mdelay(100); if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x21,0x3F)) { return; } } else{ if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x21,0x00)) { return; } } } if (led_grean_grean >= 3) led_grean_grean=0; else led_grean_grean+=1; }
static void led_share_red_red() { static int led_red_red; if(led_red_red/2==0) { if ((led_red_red % 2) == 0){ if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x22,0x3F)) { return; } }else{ // schedule_timeout(100); if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x22,0x00)) { return; } } } else if(led_red_red/2==1) { if ((led_red_red % 2) == 0){ if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x22,0x3F)) { return; } // schedule_timeout(100); } else{ if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x22,0x00)) { return; } } } if (led_red_red >= 3) led_red_red=0; else led_red_red+=1; }
/*----------------------------------------------------------------------------*/ int hwmsen_clr_bits(struct i2c_client *client, u8 addr, u8 bits) { int err; u8 cur, nxt; if ((err = hwmsen_read_byte(client, addr, &cur))) { HWM_ERR("read err: 0x%02X\n", addr); return -EFAULT; } nxt = cur & (~bits); if (nxt ^ cur) { if ((err = hwmsen_write_byte(client, addr, nxt))) { HWM_ERR("write err: 0x%02X\n", addr); return -EFAULT; } } return 0; }
static void led_share_red_grean_blue() { static int led_red_grean_blue; if(led_red_grean_blue/2==0) { if ((led_red_grean_blue % 2) == 0){ if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x22,0x3F)) { return; } }else{ //mdelay(100); if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x22,0x00)) { return; } } } else if(led_red_grean_blue/2==1) { if ((led_red_grean_blue % 2) == 0){ if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x21,0x3F)) { return; } //mdelay(100); } else{ if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x21,0x00)) { return; } } } else if(led_red_grean_blue/2==2) { if ((led_red_grean_blue % 2) == 0){ if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x20,0x3F)) { return; } }else{ // mdelay(100); if(hwmsen_write_byte(SANLED_marquee_i2c_client,0x20,0x00)) { return; } } } if (led_red_grean_blue >= 5) led_red_grean_blue=0; else led_red_grean_blue+=1; }
static int aw9523b_init_device(struct i2c_client *client) { u8 buf =0; u8 dat; int err = 0; printk("aw9523b_init_device.........\r\n"); /*if(hwmsen_write_byte(client,0x7F,0x00)) { return -EFAULT; } */ if(hwmsen_write_byte(client,0x11,0x02)) { return -EFAULT; } //refor to datasheet if(hwmsen_write_byte(client,0x12,0x00))//P1_0 P1_1 P1_2 配置为呼吸灯模式 { return -EFAULT; } if(hwmsen_write_byte(client,0x13,0x00))//P1_0 P1_1 P1_2 配置为呼吸灯模式 { return -EFAULT; } /* mdelay(10); if(hwmsen_write_byte(client,0x06,0xFF)) { return -EFAULT; } mdelay(10); if(hwmsen_write_byte(client,0x07,0xFF)) { return -EFAULT; } mdelay(10); if(hwmsen_write_byte(client,0x04,0x00)) { return -EFAULT; } mdelay(10); if(hwmsen_write_byte(client,0x05,0x00)) { return -EFAULT; } mdelay(10); if(hwmsen_write_byte(client,0x02,0x00)) { return -EFAULT; } mdelay(10); if(hwmsen_write_byte(client,0x03,0x00)) { return -EFAULT; } mdelay(10); */ if(hwmsen_write_byte(client,0x20,0x00))//OUT0口调光,调光等级为0-255。OUT0~OUT9的调光指令依次为0x20~0x29. 写0关闭 { return -EFAULT; } if(hwmsen_write_byte(client,0x21,0x00))//OUT0口调光,调光等级为0-255。OUT0~OUT9的调光指令依次为0x20~0x29. 写0关闭 { return -EFAULT; } if(hwmsen_write_byte(client,0x22,0x00))//OUT0口调光,调光等级为0-255。OUT0~OUT9的调光指令依次为0x20~0x29. 写0关闭 { return -EFAULT; } printk("aw9523b_init_device.........OK \r\n"); return 0; }