static int cs8427_i2c_write(struct cs8427 *chip, unsigned short reg,
			 int bytes, void *src)
{
	int ret = 0, err = 0;
	struct cs8427_platform_data *pdata = chip->client->dev.platform_data;
	/*
	 * enable the 100KHz level shifter to communicate
	 * with CS8427 chip
	 */
	if (pdata->enable) {
		err = pdata->enable(1, pdata->ls_gpio);
		if (err < 0) {
			dev_err(&chip->client->dev,
				"failed to enable the level shifter\n");
			return err;
		}
	}
	ret = cs8427_i2c_write_device(chip, reg, src, bytes);

	/*
	 * Disable the 100KHz level shifter to communicate
	 * with CS8427 chip
	 */
	if (pdata->enable) {
		err = pdata->enable(0, pdata->ls_gpio);
		if (err < 0) {
			dev_err(&chip->client->dev,
				"failed to disable the level shifter\n");
			return err;
		}
	}
	return ret;
}
Exemplo n.º 2
0
static int cs8427_i2c_sendbytes(struct cs8427 *chip,
			char *reg_addr, char *data,
			int bytes)
{
	int ret = 0;
	u8 i = 0;

	if (!chip) {
		pr_err("%s, invalid device info\n", __func__);
		return -ENODEV;
	}
	if (!data) {
		dev_err(&chip->client->dev, "%s:"
			"invalid data pointer\n", __func__);
		return -EINVAL;
	}
	for (i = 0; i < bytes; i++) {
		ret = cs8427_i2c_write_device(chip, (*reg_addr + i),
						&data[i], 1);
		if (ret < 0) {
			dev_err(&chip->client->dev,
				"%s: failed to send the data to"
				" cs8427 chip\n", __func__);
			break;
		}
	}
	return i;
}
static int cs8427_i2c_sendbytes(struct cs8427 *chip,
			char *reg_addr, char *data,
			int bytes)
{
	u32 ret = 0, err = 0;
	u8 i = 0;
	struct cs8427_platform_data *pdata = chip->client->dev.platform_data;

	if (!chip) {
		pr_err("%s, invalid device info\n", __func__);
		return -ENODEV;
	}
	if (!data) {
		dev_err(&chip->client->dev, "%s:"
			"invalid data pointer\n", __func__);
		return -EINVAL;
	}
	/*
	 * enable the 100KHz level shifter to communicate
	 * with CS8427 chip
	 */
	if (pdata->enable) {
		err = pdata->enable(1, pdata->ls_gpio);
		if (err < 0) {
			dev_err(&chip->client->dev,
				"failed to enable the level shifter\n");
			return err;
		}
	}
	for (i = 0; i < bytes; i++) {
		ret = cs8427_i2c_write_device(chip, (*reg_addr + i),
						&data[i], 1);
		if (ret < 0) {
			dev_err(&chip->client->dev,
				"%s: failed to send the data to"
				" cs8427 chip\n", __func__);
			break;
		}
	}

	/*
	 * Disable the 100KHz level shifter to communicate
	 * with CS8427 chip
	 */
	if (pdata->enable) {
		err = pdata->enable(0, pdata->ls_gpio);
		if (err < 0) {
			dev_err(&chip->client->dev,
				"failed to disable the level shifter\n");
			return err;
		}
	}
	return i;
}
Exemplo n.º 4
0
static int cs8427_i2c_write(struct cs8427 *chip, unsigned short reg,
			 int bytes, void *src)
{
	return cs8427_i2c_write_device(chip, reg, src, bytes);
}