示例#1
0
/*----------------------------------------------------------------------------*/
int hwmsen_read_block(struct i2c_client *client, u8 addr, u8 *data, u8 len)
{
    if (len == 1) {
        return hwmsen_read_byte(client, addr, data);
    } else {
        u8 beg = addr; 
        struct i2c_msg msgs[2] = {
            {
                .addr = client->addr,    .flags = 0,
                .len = 1,                .buf= &beg
            },
            {
                .addr = client->addr,    .flags = I2C_M_RD,
                .len = len,             .buf = data,
            }
        };
示例#2
0
/*----------------------------------------------------------------------------*/
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;    
}
示例#3
0
static int SANLED_marquee_i2c_probe(struct i2c_client *client, const struct i2c_device_id *id)
{
    int err = 0;
		u8  dat;

    printk("HMH marquee i2c  probe  \n");
       SANLED_marquee_i2c_client = client;
       //SANLED_marquee_i2c_client->timing = 100;
       
  if((err = hwmsen_read_byte(SANLED_marquee_i2c_client, 0x10, &dat)))
	{
		printk("read data fail!!\n");
		return err;
	}
	
	printk("HMH aw9523b  aw9523b id = 0x%x \n",dat);
	
	if((err = aw9523b_init_device(SANLED_marquee_i2c_client)))
	{
		printk("init dev: %d\n", err);
		return err;
	}

	if(err = misc_register(&SANLED_device))
	{
		printk("HMH marquee  SANLED_marquee_i2c_probe register failed\n");
	}

	init_waitqueue_head(&SANLED_waitMain);

    thread = kthread_run(SANLED_event_handler, 0, SANLED_marquee_DEV_NAME);
    if (IS_ERR(thread)) { 
        err = PTR_ERR(thread);
        printk("HMH marquee failed to create kernel thread: %d\n", err);
    }
	
	return err;
}