Exemple #1
0
static int mxc6225_sensor_chip_readid(struct cavan_input_chip *chip)
{
	int ret;
	u8 id;

	ret = chip->read_register(chip, REG_CHIP_ID, &id);
	if (ret < 0) {
		pr_red_info("cavan_sensor_i2c_read_register");
		return ret;
	}

	chip->devid = id & 0x3F;

	pr_bold_info("Device ID = 0x%02x = 0x%02x", id, chip->devid);

	switch (chip->devid) {
	case CHIP_ID_MXC6225XC:
		chip->name = "MXC6225XC";
		break;

	case CHIP_ID_MXC6225XU:
		chip->name = "MXC6225XU";
		break;

	default:
		pr_red_info("Invalid Chip ID 0x%02x", chip->devid);
	}

	pr_bold_info("This chip is %s", chip->name);

	return 0;
}
Exemple #2
0
static int adxl34x_sensor_chip_readid(struct hua_input_chip *chip)
{
	int ret;
	u8 id;

	ret = chip->read_register(chip, DEVID, &id);
	if (ret < 0)
	{
		pr_red_info("hua_sensor_i2c_read_register");
		return ret;
	}

	pr_bold_info("Device ID = 0x%02x", id);

	switch (id)
	{
	case ID_ADXL345:
		chip->devid = 0x0345;
		chip->name = "ADXL345";
		break;

	case ID_ADXL346:
		chip->devid = 0x0346;
		chip->name = "ADXL346";
		break;

	default:
		pr_red_info("Invalid device id = 0x%02x", id);
		return -EINVAL;
	}

	pr_bold_info("This sendor is %s", chip->name);

	return 0;
}
Exemple #3
0
static int huamobile_touch_device_probe(struct huamobile_touch_device *dev, void *data)
{
	int ret;
	int min, max, diff;
	int fd = dev->input_dev.event_dev->fd;
	struct huamobile_input_service *service = data;

	pr_pos_info();
	pr_bold_info("lcd_width = %d, lcd_height = %d", service->lcd_width, service->lcd_height);

	if (service->lcd_width > 0)
	{
		ret = huamobile_event_get_absinfo(fd, dev->xaxis, &min, &max);
		if (ret < 0)
		{
			pr_red_info("huamobile_event_get_absinfo");
			return ret;
		}

		pr_bold_info("x-min = %d, x-max = %d", min, max);
		diff = max - min;
		dev->xscale = ((double)service->lcd_width) / diff;
		dev->xoffset = ((double)service->lcd_width) * min / diff;
	}
	else
	{
		dev->xscale = 1;
		dev->xoffset = 0;
	}

	if (service->lcd_height > 0)
	{
		ret = huamobile_event_get_absinfo(fd, dev->yaxis, &min, &max);
		if (ret < 0)
		{
			pr_red_info("huamobile_event_get_absinfo");
			return ret;
		}

		pr_bold_info("y-min = %d, y-max = %d", min, max);
		diff = max - min;
		dev->yscale = ((double)service->lcd_height) / diff;
		dev->yoffset = ((double)service->lcd_height) * min / diff;
	}
	else
	{
		dev->yscale = 1;
		dev->yoffset = 0;
	}

	pr_bold_info("xscale = %lf, xoffset = %lf", dev->xscale, dev->xoffset);
	pr_bold_info("yscale = %lf, yoffset = %lf", dev->yscale, dev->yoffset);

	return 0;
}
Exemple #4
0
static int cy8c242_enter_upgrade_mode(struct cavan_input_chip *chip, int retry)
{
    while (retry--) {
        int ret;
        u8 value;

        cavan_io_set_power_regulator(chip, false);
        cavan_io_irq_gpio_set_value(chip, 0);
        msleep(10);
        cavan_io_set_power_regulator(chip, true);
        msleep(50);
        cavan_io_irq_gpio_set_value(chip, -1);

        ret = chip->read_register(chip, 0x01, &value);
        if (ret < 0) {
            pr_red_info("cavan_i2c_read_register");
            return ret;
        }

        pr_bold_info("value = 0x%02x", value);

        if (value == 0x11 || value == 0x10) {
            return 0;
        }
    }

    return -ETIMEDOUT;
}
Exemple #5
0
void show_ext2_inode(const struct ext2_inode *inode)
{
	int i;

	print_sep(60);
	pr_bold_info("ext2 inode %p", inode);

	println("mode = 0x%05o", inode->mode);
	println("uid = %d", inode->uid);
	println("size = %d", inode->size);
	println("atime = %d", inode->atime);
	println("ctime = %d", inode->ctime);
	println("mtime = %d", inode->mtime);
	println("dtime = %d", inode->dtime);
	println("gid = %d", inode->gid);
	println("links_count = %d", inode->links_count);
	println("blocks = %d", inode->blocks);
	println("flags = 0x%08x", inode->flags);
	println("version = %d", inode->version);
	println("file_acl = %d", inode->file_acl);
	println("dir_acl = %d", inode->dir_acl);
	println("faddr = %d", inode->faddr);

	if ((inode->flags & EXT2_INODE_FLAG_EXTENTS) == 0)
	{
		for (i = 0; i < EXT2_N_BLOCKS; i++)
		{
			println("inode->block[%d] = %d", i, inode->block[i]);
		}
	}
}
Exemple #6
0
static int cy8c242_exit_upgrade_mode(struct cavan_input_chip *chip, int retry)
{
    int ret;
    u8 value;

    msleep(200);

    while (retry--) {
        cy8c242_ts_reset(chip);

        msleep(100);

        ret = chip->read_register(chip, 0x01, &value);
        if (ret < 0) {
            pr_red_info("cavan_i2c_read_register");
            return ret;
        }

        pr_bold_info("value = 0x%02x", value);

        if (value != 0x11 && value != 0x10) {
            return 0;
        }
    }

    return -ETIMEDOUT;
}
Exemple #7
0
static int bma2xx_sensor_chip_set_active(struct cavan_input_chip *chip, bool enable)
{
	int ret;
	u8 value;

	pr_pos_info();

	ret = chip->read_register(chip, REG_MODE_CTRL, &value);
	if (ret < 0) {
		pr_red_info("read_register");
		return ret;
	}

	if (enable) {
		value &= ~(3 << 6);
	} else {
		value |= 1 << 7;
	}

	pr_bold_info("value = 0x%02x", value);

	ret = chip->write_register(chip, REG_MODE_CTRL, value);
	if (ret < 0) {
		pr_red_info("write_register");
		return ret;
	}

	return 0;
}
Exemple #8
0
static int hua_ts_fb_notifier_call(struct notifier_block *notifier, unsigned long event, void *data)
{
	struct fb_event *evdata = data;
	struct hua_ts_device *ts = container_of(notifier, struct hua_ts_device, fb_notifier);

	pr_bold_info("event = %ld", event);

	if (evdata && event == FB_EVENT_BLANK)
	{
		int *blank = evdata->data;
		if (blank)
		{
			if (*blank == FB_BLANK_UNBLANK)
			{
				hua_ts_resume(ts);
			}
			else if (*blank == FB_BLANK_POWERDOWN)
			{
				hua_ts_suspend(ts);
			}
		}
	}

	return 0;
}
Exemple #9
0
static void showDexHeader(DexHeader *header)
{
	pr_bold_info("DexHeader[%p]:", header);
	println("magic = %s", header->magic);
	// println("signature = %s", header->signature);
	println("fileSize = %d", header->fileSize);
	println("headerSize = %d", header->headerSize);
	println("endianTag = %d", header->endianTag);
	println("linkSize = %d", header->linkSize);
	println("linkOff = %d", header->linkOff);
	println("mapOff = %d", header->mapOff);
	println("stringIdsSize = %d", header->stringIdsSize);
	println("stringIdsOff = %d", header->stringIdsOff);
	println("typeIdsSize = %d", header->typeIdsSize);
	println("typeIdsOff = %d", header->typeIdsOff);
	println("protoIdsSize = %d", header->protoIdsSize);
	println("protoIdsOff = %d", header->protoIdsOff);
	println("fieldIdsSize = %d", header->fieldIdsSize);
	println("fieldIdsOff = %d", header->fieldIdsOff);
	println("methodIdsSize = %d", header->methodIdsSize);
	println("methodIdsOff = %d", header->methodIdsOff);
	println("classDefsSize = %d", header->classDefsSize);
	println("classDefsOff = %d", header->classDefsOff);
	println("dataSize = %d", header->dataSize);
	println("dataOff = %d", header->dataOff);
	println("checksum = 0x%08x", header->checksum);
}
Exemple #10
0
void show_ext4_extent_index(const struct ext4_extent_index *index)
{
	print_sep(60);
	pr_bold_info("ext4 extent index %p", index);

	println("block = %d", index->block);
	println("leaf = %" PRINT_FORMAT_INT64, (u64) index->leaf_hi << 32 | index->leaf_lo);
}
Exemple #11
0
int cavan_thread_send_event(struct cavan_thread *thread, u32 event)
{
#if CAVAN_THREAD_DEBUG
	pr_bold_info("send event %d", event);
#endif

	return write(thread->wr_event_fd, &event, sizeof(event));
}
Exemple #12
0
void show_ext4_extent_leaf(const struct ext4_extent_leaf *leaf)
{
	print_sep(60);
	pr_bold_info("ext4 extent leaf %p", leaf);

	println("block = %d", leaf->block);
	println("length = %d", leaf->length);
	println("start = %" PRINT_FORMAT_INT64, (u64) leaf->start_hi << 32 | leaf->start_lo);
}
Exemple #13
0
const struct cavan_sensor_rate_table_node *cavan_sensor_find_rate_value(const struct cavan_sensor_rate_table_node *table, size_t count, u32 delay_ns)
{
	const struct cavan_sensor_rate_table_node *p;

	for (p = table + count - 1; p > table && p->delay_ns > delay_ns; p--);

	pr_bold_info("value = 0x%02x, delay = %d, relly_delay = %d", p->value, delay_ns, p->delay_ns);

	return p;
}
Exemple #14
0
static int cavan_touchpad_probe(struct cavan_input_device *dev, void *data)
{
	int ret;
	int min, max, diff;
	int width, height;
	int fd = dev->event_dev->fd;
	struct cavan_touchpad_device *touchpad = (struct cavan_touchpad_device *) dev;
	struct cavan_input_service *service = data;

	pr_bold_info("LCD: width = %d, height = %d", service->lcd_width, service->lcd_height);

	ret = cavan_event_get_absinfo(fd, ABS_X, &min, &max);
	if (ret < 0)
	{
		pr_red_info("cavan_event_get_absinfo");
		return ret;
	}

	diff = max - min;
	width = service->lcd_height > 0 ? service->lcd_height : diff;
	pr_bold_info("x-min = %d, x-max = %d, diff = %d, width = %d", min, max, diff, width);

	touchpad->xspeed = ((double) width) / diff;
	touchpad->right = max - (diff >> CAVAN_TOUCHPAD_EDGE_SHIFT);
	pr_bold_info("xspeed = %lf, right = %d", touchpad->xspeed, touchpad->right);

	ret = cavan_event_get_absinfo(fd, ABS_Y, &min, &max);
	if (ret < 0)
	{
		pr_red_info("cavan_event_get_absinfo");
		return ret;
	}

	diff = max - min;
	height = service->lcd_height > 0 ? service->lcd_height : diff;
	pr_bold_info("y-min = %d, y-max = %d, diff = %d, height = %d", min, max, diff, height);

	touchpad->yspeed = ((double) height) / diff;
	touchpad->bottom = max - (diff >> CAVAN_TOUCHPAD_EDGE_SHIFT);
	pr_bold_info("yspeed = %lf, bottom = %d", touchpad->yspeed, touchpad->bottom);

	return 0;
}
Exemple #15
0
static void cavan_thread_sighandler(int signum)
{
#if CAVAN_THREAD_DEBUG
	pr_bold_info("signum = %d", signum);
#endif

	if (signum == SIGUSR1) {
		pthread_exit(0);
	}
}
Exemple #16
0
void show_ext2_directory_entry(const struct ext2_directory_entry *dir_entry)
{
	print_sep(60);
	pr_bold_info("ext2 directory entry %p", dir_entry);

	println("file_type = %d", dir_entry->file_type);
	println("inode = %d", dir_entry->inode);
	println("name = %s", dir_entry->name);
	println("name_len = %d", dir_entry->name_len);
	println("rec_len = %d", dir_entry->rec_len);
}
Exemple #17
0
void show_ext4_extent_header(const struct ext4_extent_header *header)
{
	print_sep(60);
	pr_bold_info("ext4 extent header %p", header);

	println("magic = 0x%04x", header->magic);
	println("entries = %d", header->entries);
	println("max_entries = %d", header->max_entries);
	println("depth = %d", header->depth);
	println("generations = %d", header->generations);
}
Exemple #18
0
void cavan_show_date(struct tm *date, const char *prompt)
{
	if (prompt == NULL)
	{
		prompt = "";
	}

	pr_bold_info("%s%04d-%02d-%02d %02d:%02d:%02d", prompt,
		date->tm_year + 1900, date->tm_mon + 1, date->tm_mday,
		date->tm_hour, date->tm_min, date->tm_sec);

	// pr_bold_info("tm_wday = %d, tm_yday = %d, tm_isdst = %d", date->tm_wday, date->tm_yday, date->tm_isdst);
}
Exemple #19
0
void show_ext2_group_desc(const struct ext2_group_desc *group_desc)
{
	print_sep(60);
	pr_bold_info("ext2 group desc %p", group_desc);

	println("block_bitmap = %d", group_desc->block_bitmap);
	println("inode_bitmap = %d", group_desc->inode_bitmap);
	println("inode_table = %d", group_desc->inode_table);
	println("free_blocks_count = %d", group_desc->free_blocks_count);
	println("free_inodes_count = %d", group_desc->free_inodes_count);
	println("used_dirs_count = %d", group_desc->used_dirs_count);
	println("pad = %d", group_desc->pad);
}
Exemple #20
0
static void showDexOptHeader(DexOptHeader *header)
{
	pr_bold_info("DexOptHeader[%p]:", header);
	println("magic = %s", header->magic);
	println("dexOffset = %d", header->dexOffset);
	println("dexLength = %d", header->dexLength);
	println("depsOffset = %d", header->depsOffset);
	println("depsLength = %d", header->depsLength);
	println("optOffset = %d", header->optOffset);
	println("optLength = %d", header->optLength);
	println("flags = 0x%08x", header->flags);
	println("checksum = 0x%08x", header->checksum);
}
Exemple #21
0
bool cavan_keypad_device_match(uint8_t *key_bitmask)
{
	uint8_t *key, *key_end;
	bool result = false;

	for (key = key_bitmask, key_end = key + KEY_BITMASK_SIZE; key < key_end; key++) {
		if (*key) {
			result = true;

#if 0
#if __WORDSIZE == 64
			pr_bold_info("key_bitmask[%ld] = 0x%02x", key - key_bitmask, *key);
#else
			pr_bold_info("key_bitmask[%d] = 0x%02x", key - key_bitmask, *key);
#endif
#endif

			*key = 0;
		}
	}

	return result;
}
Exemple #22
0
void *huamobule_file_read_all(const char *pathname, size_t *size)
{
	int ret;
	int fd;
	struct stat st;
	void *mem;
	ssize_t rdlen;

	pr_bold_info("pathname = %s", pathname);

	fd = open(pathname, O_RDONLY);
	if (fd < 0)
	{
		pr_error_info("open file %s", pathname);
		return NULL;
	}

	ret = fstat(fd, &st);
	if (ret < 0)
	{
		pr_error_info("get file `%s' stat", pathname);
		close(fd);
		return NULL;
	}

	mem = malloc(st.st_size);
	if (mem == NULL)
	{
		pr_error_info("malloc");
		close(fd);
		return NULL;
	}

	rdlen = read(fd, mem, st.st_size);
	if (rdlen < 0)
	{
		pr_error_info("read");
		free(mem);
		mem = NULL;
	}
	else
	{
		*size = rdlen;
	}

	close(fd);

	return mem;
}
Exemple #23
0
static int bma2xx_sensor_chip_readid(struct cavan_input_chip *chip)
{
	int ret;
	u8 value;

	ret = chip->read_register(chip, REG_CHIP_ID, &value);
	if (ret < 0) {
		pr_red_info("read_register REG_MODE");
		return ret;
	}

	pr_bold_info("REG_CHIP_ID = 0x%02x", value);

	return 0;
}
Exemple #24
0
int cavan_thread_recv_event(struct cavan_thread *thread, u32 *event)
{
	int ret;

	ret = read(thread->rd_event_fd, event, sizeof(*event));
	if (ret < 0) {
		pr_red_info("read");
		return ret;
	}

#if CAVAN_THREAD_DEBUG
	pr_bold_info("receive event %d", *event);
#endif

	return ret;
}
Exemple #25
0
static int cy8c242_change_power_mode(struct cavan_input_chip *chip, u8 mode, int retry)
{
    pr_bold_info("CY8C242 change power mode => %s", cy8c242_power_mode_tostring(mode));

    while (chip->write_register(chip, CY8C242_REG_POWER_MODE, mode) < 0 && retry--) {
        msleep(10);
    }

    if (retry < 0) {
        pr_red_info("Failed");
    } else {
        pr_green_info("OK");
    }

    return retry;
}
Exemple #26
0
static int swan_ts_get_client_address_main(int argc, char *argv[])
{
	int ret;
	u16 addr;

	ret = swan_ts_get_client_address(argc > 1 ? argv[1] : NULL, &addr);
	if (ret < 0)
	{
		pr_red_info("swan_ts_get_client_address");
		return ret;
	}

	pr_bold_info("Client address = %d = 0x%04x", addr, addr);

	return 0;
}
Exemple #27
0
static int ltr553_i2c_probe(struct i2c_client *client, const struct i2c_device_id *id)
{
	int ret;
	struct cavan_input_chip *chip;

	pr_pos_info();

	chip = kzalloc(sizeof(*chip), GFP_KERNEL);
	if (chip == NULL) {
		pr_red_info("kzalloc");
		return -ENOMEM;
	}

	i2c_set_clientdata(client, chip);
	cavan_input_chip_set_bus_data(chip, client);

#if LTR553_SUPPORT_IRQ
	chip->irq = client->irq;
	chip->irq_flags = IRQF_TRIGGER_FALLING;
#else
	chip->irq = -1;
#endif

	pr_bold_info("chip->irq = %d", chip->irq);

	chip->name = "LTR553";
	chip->flags = CAVAN_INPUT_CHIP_FLAG_POWERON_INIT;
	chip->devmask = 1 << CAVAN_INPUT_DEVICE_TYPE_PROXIMITY | 1 << CAVAN_INPUT_DEVICE_TYPE_LIGHT;
	chip->read_data = cavan_input_read_data_i2c;
	chip->write_data = cavan_input_write_data_i2c_single;
	chip->readid = ltr553_sensor_chip_readid;

	chip->probe = ltr553_input_chip_probe;
	chip->remove = ltr553_input_chip_remove;

	ret = cavan_input_chip_register(chip, &client->dev);
	if (ret < 0) {
		pr_red_info("cavan_input_chip_register");
		goto out_kfree_chip;
	}

	return 0;

out_kfree_chip:
	kfree(chip);
	return ret;
}
Exemple #28
0
int swan_ts_calibration(const char *devpath)
{
	int fd;
	int ret;

	fd = swan_ts_open_misc_device(devpath, 0);
	if (fd < 0) {
		pr_bold_info("Retry use input calibration");
		return swan_ts_input_calibration(devpath);
	}

	ret = ioctl(fd, SWAN_TS_IOCTL_CALIBRATION);

	close(fd);

	return ret;
}
Exemple #29
0
static int swan_ts_match_handler(struct cavan_event_matcher *matcher, void *data)
{
	int ret;

	pr_info("Device \"%s\" is named \"%s\"", matcher->pathname, matcher->devname);
	pr_bold_info("Calibration, don't touch the screen");

	ret = ioctl(matcher->fd, SWAN_TS_INPUT_IOCTL_CALIBRATION);
	if (ret < 0) {
		pr_error_info("ioctl SWAN_TS_INPUT_IOCTL_CALIBRATION");
		return ret;
	}

	close(matcher->fd);

	return 0;
}
Exemple #30
0
ssize_t cy8c242_ts_calibration(struct cavan_input_device *dev, char *buff, size_t size, bool store)
{
    int ret;
    u8 value;
    int i;
    char data[2] = {0x1C, 0x01};
    struct cavan_input_chip *chip = dev->chip;

    pr_pos_info();

    for (i = 0; i < 5; i++) {
        cy8c242_ts_reset(chip);

        msleep(100);

        ret = chip->master_send(chip, data, sizeof(data));
        if (ret < 0) {
            pr_red_info("master_send");
            return ret;
        }

        msleep(1000);

        ret = chip->master_send(chip, data, 1);
        if (ret < 0) {
            pr_red_info("master_send");
            return ret;
        }

        ret = chip->master_recv(chip, &value, 1);
        if (ret < 0) {
            pr_red_info("master_recv");
            return ret;
        }

        pr_bold_info("value[%d] = %d", i, value);

        if (value == 0) {
            return snprintf(buff, size, "%s calibration complete.\n", chip->name);
        }
    }

    return -EFAULT;
}