コード例 #1
0
static int rt5025_exttemp_alert_switch(struct rt5025_swjeita_info *swji, int onoff)
{
	if (!onoff)
	{
		rt5025_clr_bits(swji->i2c, RT5025_REG_IRQCTL, RT5025_TMXEN_MASK);
		rt5025_clr_bits(swji->i2c, RT5025_REG_IRQCTL, RT5025_TMNEN_MASK);
	}
	else
	{
		switch (swji->cur_section)
		{
			case 0:
				rt5025_set_bits(swji->i2c, RT5025_REG_IRQCTL, RT5025_TMNEN_MASK);
				break;
			case 1:
				rt5025_set_bits(swji->i2c, RT5025_REG_IRQCTL, RT5025_TMXEN_MASK);
				rt5025_set_bits(swji->i2c, RT5025_REG_IRQCTL, RT5025_TMNEN_MASK);
				break;
			case 2:
				rt5025_set_bits(swji->i2c, RT5025_REG_IRQCTL, RT5025_TMXEN_MASK);
				rt5025_set_bits(swji->i2c, RT5025_REG_IRQCTL, RT5025_TMNEN_MASK);
				break;
			case 3:
				rt5025_set_bits(swji->i2c, RT5025_REG_IRQCTL, RT5025_TMXEN_MASK);
				rt5025_set_bits(swji->i2c, RT5025_REG_IRQCTL, RT5025_TMNEN_MASK);
				break;
			case 4:
				rt5025_set_bits(swji->i2c, RT5025_REG_IRQCTL, RT5025_TMXEN_MASK);
				break;
		}
	}

	RTINFO("index=%d, onoff=%d\n", swji->cur_section, onoff);
	return 0;		
}
コード例 #2
0
static int rt5025_disable(struct regulator_dev *rdev)
{
	struct rt5025_regulator_info *info = rdev_get_drvdata(rdev);

	return rt5025_clr_bits(info->i2c, info->enable_reg,
				info->enable_bit);
}
コード例 #3
0
static int rt5025_set_charging_cc_switch (struct i2c_client *i2c, int onoff)
{
	int ret;
	RTINFO("onoff = %d\n", onoff);
	if (onoff)
		ret = rt5025_set_bits(i2c, RT5025_REG_CHGCTL7, RT5025_CHGCCEN_MASK);
	else
		ret = rt5025_clr_bits(i2c, RT5025_REG_CHGCTL7, RT5025_CHGCCEN_MASK);
	return ret;
}
コード例 #4
0
static inline int rt5025_set_intadc_onoff(struct rt5025_swjeita_info *swji, int enable)
{
	int ret;

	RTINFO("enable = %d\n", enable);
	if (enable)
		ret = rt5025_set_bits(swji->i2c, RT5025_REG_CHANNELL, RT5025_INTEN_MASK);
	else
		ret = rt5025_clr_bits(swji->i2c, RT5025_REG_CHANNELL, RT5025_INTEN_MASK);

	return ret;
}
コード例 #5
0
static int rt5025_gpio_direction_output(struct gpio_chip *chip,
	unsigned offset, int value)
{
	struct rt5025_gpio_info *gi = dev_get_drvdata(chip->dev);
	int gpio_reg = 0;
	int ret = 0;

	ret = find_rt5025_gpioreg(offset, &gpio_reg);
	if (ret < 0) {
		dev_err(chip->dev, "not a valid gpio index\n");
		return ret;
	}

	ret = rt5025_clr_bits(gi->i2c, gpio_reg, RT5025_GPIO_DIRSHIFT);
	if (ret < 0) {
		dev_err(chip->dev, "clr gpio direction fail\n");
		return ret;
	}

	ret = rt5025_set_bits(gi->i2c, gpio_reg,
		RT5025_GPIO_OUTPUT<<RT5025_GPIO_DIRSHIFT);
	if (ret < 0) {
		dev_err(chip->dev, "set gpio output dir fail\n");
		return ret;
	}

	if (value)
		ret = rt5025_set_bits(gi->i2c, gpio_reg,
		RT5025_GPIO_OVALUEMASK);
	else
		ret = rt5025_clr_bits(gi->i2c, gpio_reg,
		RT5025_GPIO_OVALUEMASK);

	if (ret < 0) {
		dev_err(chip->dev, "set gpio output value fail\n");
		return ret;
	}

	return 0;
}
コード例 #6
0
static int rt5025_gpio_direction_input(struct gpio_chip *chip, unsigned offset)
{
	struct rt5025_gpio_info *gi = dev_get_drvdata(chip->dev);
	int gpio_reg = 0;
	int ret = 0;

	ret = find_rt5025_gpioreg(offset , &gpio_reg);
	if (ret < 0) {
		dev_err(chip->dev, "not a valid gpio index\n");
		return ret;
	}

	ret = rt5025_clr_bits(gi->i2c, gpio_reg, RT5025_GPIO_DIRMASK);
	if (ret < 0) {
		dev_err(chip->dev, "set gpio input fail\n");
		return ret;
	}

	return 0;
}
コード例 #7
0
static void rt5025_gpio_set_value(struct gpio_chip *chip,
	unsigned offset, int value)
{
	struct rt5025_gpio_info *gi = dev_get_drvdata(chip->dev);
	int gpio_reg = 0;
	int ret = 0;

	ret = find_rt5025_gpioreg(offset, &gpio_reg);
	if (ret < 0) {
		dev_err(chip->dev, "not a valid gpio index\n");
		return;
	}

	if (value)
		ret = rt5025_set_bits(gi->i2c, gpio_reg,
		RT5025_GPIO_OVALUEMASK);
	else
		ret = rt5025_clr_bits(gi->i2c, gpio_reg,
		RT5025_GPIO_OVALUEMASK);

	if (ret < 0)
		dev_err(chip->dev, "read gpio register fail\n");
}
コード例 #8
0
static int rt5025_set_mode(struct regulator_dev *rdev, unsigned int mode)
{
	struct rt5025_regulator_info *info = rdev_get_drvdata(rdev);
	int ret;

	if (!info->mode_bit) {
		ret = 0;
	} else {
		switch (mode) {
		case REGULATOR_MODE_NORMAL:
			ret = rt5025_set_bits(info->i2c, info->mode_reg,
				info->mode_bit);
			break;
		case REGULATOR_MODE_FAST:
			ret = rt5025_clr_bits(info->i2c, info->mode_reg,
				info->mode_bit);
			break;
		default:
			ret = -EINVAL;
			break;
		}
	}
	return ret;
}