Exemple #1
0
int stmpe_set_bits(struct stmpe *stmpe, u32 reg, u8 mask, u8 val)
{
	u8 tmp;
	int err;

	err = stmpe_reg_read(stmpe, reg, &tmp);
	tmp = (tmp & ~mask) | val;

	if (!err)
		err = stmpe_reg_write(stmpe, reg, tmp);

	return err;
}
Exemple #2
0
static int stmpe_gpio_get(struct gpio_chip *chip, unsigned offset)
{
	struct stmpe_gpio *stmpe_gpio = gpiochip_get_data(chip);
	struct stmpe *stmpe = stmpe_gpio->stmpe;
	u8 reg = stmpe->regs[STMPE_IDX_GPMR_LSB + (offset / 8)];
	u8 mask = BIT(offset % 8);
	int ret;

	ret = stmpe_reg_read(stmpe, reg);
	if (ret < 0)
		return ret;

	return !!(ret & mask);
}
Exemple #3
0
static ssize_t stmpe_read(struct cdev *cdev, void *_buf, size_t count, loff_t offset, ulong flags)
{
	struct stmpe *stmpe = to_stmpe(cdev);
	u8 *buf = _buf;
	size_t i = count;
	int err;

	while (i) {
		err = stmpe_reg_read(stmpe, offset, buf);
		if (err)
			return (ssize_t)err;
		buf++;
		i--;
		offset++;
	}

	return count;
}