Beispiel #1
0
int ths8200_is_present(void)
{
	__u8 data;
	int err;

	data = 0x02;

	err = davinci_i2c_write(1, &data, THS8200_I2C_ADDR);
	if ( err != 0)
	{
	     return 0;
	}
  
	err = davinci_i2c_read(1, &data,  THS8200_I2C_ADDR);
	if ( err != 0)
	{
	     return 0;
	}

	if (data != 4)  // Value read by Neal
	{
	     return 0;
	}
  
	// Everthing check out, return 1 (TRUE)
	return 1;
}
Beispiel #2
0
static int evm_read_time(struct device *dev, struct rtc_time *tm)
{
	char rtcdata [9];

	rtcdata[0] = 2;
	rtcdata[1] = 1;
	davinci_i2c_write(2, rtcdata, 0x23);

	msleep(1);
	davinci_i2c_read(9, rtcdata, 0x23);
	msleep(1);

	/* FIXME the RTC reports 12-hour time, without an AM/PM indicator,
	 * but Linux requires that we report 24 hour time...
	 */

	tm->tm_year = BCD_TO_BIN(rtcdata[3]) * 100
			+ BCD_TO_BIN(rtcdata[2])
			- 1900;
	tm->tm_mon = BCD_TO_BIN(rtcdata[4]);
	tm->tm_mday = BCD_TO_BIN(rtcdata[5]);
	tm->tm_hour = BCD_TO_BIN(rtcdata[6]);
	tm->tm_min = BCD_TO_BIN(rtcdata[7]);
	tm->tm_sec = BCD_TO_BIN(rtcdata[8]);

	return 0;
}
int set_cpld_for_tvp7002() {
	int err = 0;
	u8 val;
	err = davinci_i2c_read(1, &val, CPLD_VIDEO_REG);
	if(err)
		return err;
	val |= 0x10;
	err = davinci_i2c_write(1, &val, CPLD_VIDEO_REG);
	return err;
}
int set_cpld_for_tvp5147() {
	int err = 0;
        u8 val;
	err = davinci_i2c_read(1, &val, CPLD_VIDEO_REG);
	if(err)
		return err;
	val &= 0xEF;
	err = davinci_i2c_write(1, &val, CPLD_VIDEO_REG);
	return err;
}
Beispiel #5
0
int dm644x_mmc_get_ro(int index)
{
	char input_state[4] = { 2, 4, 0, 0 };

	davinci_i2c_write(2, input_state, 0x23);
	udelay(1000);
	davinci_i2c_read(4,  input_state, 0x23);
	udelay(1000);

	return input_state[3] & 0x40;
}
int set_vid_in_mode_for_tvp5147() {
	int err = 0;
	u8 val;
	unsigned int value;
	unsigned int sys_vsclk =
		(unsigned int)IO_ADDRESS(0x01C40038);
	err = davinci_i2c_read(1, &val, CPLD_VIDEO_REG);
	if(err)
		return err;
	val &= 0xDF;
	err = davinci_i2c_write(1, &val, CPLD_VIDEO_REG);
	if(err)
		return err;

	value = inl(sys_vsclk);
	value |= (1<<4);
	outl(value, sys_vsclk);

	return err;
}
Beispiel #7
0
static int read_ir_values(void)
{
	int err;

	message[0] = 2;
	message[1] = 2;
	err = davinci_i2c_write(2, message, 0x23);
	if (err)
		return err;

	msleep(1);

	err = davinci_i2c_read(MESSAGE_LENGTH, message, 0x23);
	if (err)
		return err;

	msleep(1);

	next_value = 0;

	return 0;
}
Beispiel #8
0
int davinci_i2c_expander_op(enum i2c_expander_pins pin, unsigned val)
{
	u16 address = davinci_i2c_expander.address;
	u8 data = 0;
	int err;

	if (val > 1)
		return -EINVAL;

	if (davinci_i2c_expander.validate != NULL) {
		err = davinci_i2c_expander.validate(pin);
		if (err)
			return err;
	}

	mutex_lock(&expander_lock);

	err = davinci_i2c_read(1, &data, address);
	if (err)
		goto exit;

	if (davinci_i2c_expander.special != NULL) {
		err = davinci_i2c_expander.special(pin, val);
		if (err)
			goto exit;
	}

	data &= ~(1 << pin);
	data |= val << pin;

	err = davinci_i2c_write(1, &data, address);

exit:
	mutex_unlock(&expander_lock);
	return err;
}
int set_vid_out_mode_for_hd() {

	int err = 0;
	u8 val;
	unsigned int value;
	unsigned int sys_vsclk =
		(unsigned int)IO_ADDRESS(0x01C40038);
	err = davinci_i2c_read(1, &val, CPLD_VIDEO_REG);
	if(err)
		return err;
	val |= 0x40;
	err = davinci_i2c_write(1, &val, CPLD_VIDEO_REG);
	if(err)
		return err;

        value = inl(sys_vsclk);
        value &= ~(7<<8);
        value &= ~(7<<12);
	value |= (2<<8);
	value |= (2<<12);
	outl(value, sys_vsclk);

	return err;
}