Lines Matching refs:solo_dev
180 static u8 tw_readbyte(struct solo_dev *solo_dev, int chip_id, u8 tw6x_off, in tw_readbyte() argument
183 if (is_tw286x(solo_dev, chip_id)) in tw_readbyte()
184 return solo_i2c_readbyte(solo_dev, SOLO_I2C_TW, in tw_readbyte()
188 return solo_i2c_readbyte(solo_dev, SOLO_I2C_TW, in tw_readbyte()
193 static void tw_writebyte(struct solo_dev *solo_dev, int chip_id, in tw_writebyte() argument
196 if (is_tw286x(solo_dev, chip_id)) in tw_writebyte()
197 solo_i2c_writebyte(solo_dev, SOLO_I2C_TW, in tw_writebyte()
201 solo_i2c_writebyte(solo_dev, SOLO_I2C_TW, in tw_writebyte()
206 static void tw_write_and_verify(struct solo_dev *solo_dev, u8 addr, u8 off, in tw_write_and_verify() argument
212 u8 rval = solo_i2c_readbyte(solo_dev, SOLO_I2C_TW, addr, off); in tw_write_and_verify()
217 solo_i2c_writebyte(solo_dev, SOLO_I2C_TW, addr, off, val); in tw_write_and_verify()
225 static int tw2865_setup(struct solo_dev *solo_dev, u8 dev_addr) in tw2865_setup() argument
230 if (solo_dev->video_type == SOLO_VO_FMT_TYPE_PAL) in tw2865_setup()
238 if (solo_dev->nr_chans == 4) { in tw2865_setup()
241 } else if (solo_dev->nr_chans == 8) { in tw2865_setup()
245 } else if (solo_dev->nr_chans == 16) { in tw2865_setup()
269 tw_write_and_verify(solo_dev, dev_addr, i, in tw2865_setup()
276 static int tw2864_setup(struct solo_dev *solo_dev, u8 dev_addr) in tw2864_setup() argument
281 if (solo_dev->video_type == SOLO_VO_FMT_TYPE_PAL) in tw2864_setup()
288 if (solo_dev->tw2865 == 0) { in tw2864_setup()
290 if (solo_dev->nr_chans == 4) { in tw2864_setup()
293 } else if (solo_dev->nr_chans == 8) { in tw2864_setup()
299 } else if (solo_dev->nr_chans == 16) { in tw2864_setup()
316 if (solo_dev->nr_chans == 8) { in tw2864_setup()
320 } else if (solo_dev->nr_chans == 16) { in tw2864_setup()
345 tw_write_and_verify(solo_dev, dev_addr, i, in tw2864_setup()
352 static int tw2815_setup(struct solo_dev *solo_dev, u8 dev_addr) in tw2815_setup() argument
420 (solo_dev->video_type == SOLO_VO_FMT_TYPE_NTSC) ? in tw2815_setup()
429 if (solo_dev->nr_chans == 4) { in tw2815_setup()
432 } else if (solo_dev->nr_chans == 8) { in tw2815_setup()
438 } else if (solo_dev->nr_chans == 16) { in tw2815_setup()
491 solo_i2c_writebyte(solo_dev, SOLO_I2C_TW, in tw2815_setup()
503 solo_i2c_writebyte(solo_dev, SOLO_I2C_TW, dev_addr, i, in tw2815_setup()
513 static void saa712x_write_regs(struct solo_dev *dev, const u8 *vals, in saa712x_write_regs()
532 static void saa712x_setup(struct solo_dev *dev) in saa712x_setup()
591 int solo_tw28_init(struct solo_dev *solo_dev) in solo_tw28_init() argument
596 solo_dev->tw28_cnt = 0; in solo_tw28_init()
599 for (i = 0; i < solo_dev->nr_chans / 4; i++) { in solo_tw28_init()
600 value = solo_i2c_readbyte(solo_dev, SOLO_I2C_TW, in solo_tw28_init()
605 solo_dev->tw2865 |= 1 << i; in solo_tw28_init()
606 solo_dev->tw28_cnt++; in solo_tw28_init()
609 solo_dev->tw2864 |= 1 << i; in solo_tw28_init()
610 solo_dev->tw28_cnt++; in solo_tw28_init()
613 value = solo_i2c_readbyte(solo_dev, SOLO_I2C_TW, in solo_tw28_init()
617 solo_dev->tw2815 |= 1 << i; in solo_tw28_init()
618 solo_dev->tw28_cnt++; in solo_tw28_init()
623 if (solo_dev->tw28_cnt != (solo_dev->nr_chans >> 2)) { in solo_tw28_init()
624 dev_err(&solo_dev->pdev->dev, in solo_tw28_init()
629 saa712x_setup(solo_dev); in solo_tw28_init()
631 for (i = 0; i < solo_dev->tw28_cnt; i++) { in solo_tw28_init()
632 if ((solo_dev->tw2865 & (1 << i))) in solo_tw28_init()
633 tw2865_setup(solo_dev, TW_CHIP_OFFSET_ADDR(i)); in solo_tw28_init()
634 else if ((solo_dev->tw2864 & (1 << i))) in solo_tw28_init()
635 tw2864_setup(solo_dev, TW_CHIP_OFFSET_ADDR(i)); in solo_tw28_init()
637 tw2815_setup(solo_dev, TW_CHIP_OFFSET_ADDR(i)); in solo_tw28_init()
649 int tw28_get_video_status(struct solo_dev *solo_dev, u8 ch) in tw28_get_video_status() argument
657 val = tw_readbyte(solo_dev, chip_num, TW286x_AV_STAT_ADDR, in tw28_get_video_status()
666 u16 tw28_get_audio_status(struct solo_dev *solo_dev)
672 for (i = 0; i < solo_dev->tw28_cnt; i++) {
673 val = (tw_readbyte(solo_dev, i, TW286x_AV_STAT_ADDR,
682 bool tw28_has_sharpness(struct solo_dev *solo_dev, u8 ch) in tw28_has_sharpness() argument
684 return is_tw286x(solo_dev, ch / 4); in tw28_has_sharpness()
687 int tw28_set_ctrl_val(struct solo_dev *solo_dev, u32 ctrl, u8 ch, in tw28_set_ctrl_val() argument
703 if (is_tw286x(solo_dev, chip_num)) { in tw28_set_ctrl_val()
704 u8 v = solo_i2c_readbyte(solo_dev, SOLO_I2C_TW, in tw28_set_ctrl_val()
709 solo_i2c_writebyte(solo_dev, SOLO_I2C_TW, in tw28_set_ctrl_val()
718 if (is_tw286x(solo_dev, chip_num)) in tw28_set_ctrl_val()
722 tw_writebyte(solo_dev, chip_num, TW286x_HUE_ADDR(ch), in tw28_set_ctrl_val()
729 if (is_tw286x(solo_dev, chip_num)) { in tw28_set_ctrl_val()
730 solo_i2c_writebyte(solo_dev, SOLO_I2C_TW, in tw28_set_ctrl_val()
734 tw_writebyte(solo_dev, chip_num, TW286x_SATURATIONV_ADDR(ch), in tw28_set_ctrl_val()
740 tw_writebyte(solo_dev, chip_num, TW286x_CONTRAST_ADDR(ch), in tw28_set_ctrl_val()
745 if (is_tw286x(solo_dev, chip_num)) in tw28_set_ctrl_val()
749 tw_writebyte(solo_dev, chip_num, TW286x_BRIGHTNESS_ADDR(ch), in tw28_set_ctrl_val()
760 int tw28_get_ctrl_val(struct solo_dev *solo_dev, u32 ctrl, u8 ch, in tw28_get_ctrl_val() argument
772 if (is_tw286x(solo_dev, chip_num)) { in tw28_get_ctrl_val()
773 rval = solo_i2c_readbyte(solo_dev, SOLO_I2C_TW, in tw28_get_ctrl_val()
781 rval = tw_readbyte(solo_dev, chip_num, TW286x_HUE_ADDR(ch), in tw28_get_ctrl_val()
783 if (is_tw286x(solo_dev, chip_num)) in tw28_get_ctrl_val()
789 *val = tw_readbyte(solo_dev, chip_num, in tw28_get_ctrl_val()
794 *val = tw_readbyte(solo_dev, chip_num, in tw28_get_ctrl_val()
799 rval = tw_readbyte(solo_dev, chip_num, in tw28_get_ctrl_val()
802 if (is_tw286x(solo_dev, chip_num)) in tw28_get_ctrl_val()
820 void tw2815_Set_AudioOutVol(struct solo_dev *solo_dev, unsigned int u_val)
825 chip_num = (solo_dev->nr_chans - 1) / 4;
827 val = tw_readbyte(solo_dev, chip_num, TW286x_AUDIO_OUTPUT_VOL_ADDR,
832 tw_writebyte(solo_dev, chip_num, TW286x_AUDIO_OUTPUT_VOL_ADDR,
837 u8 tw28_get_audio_gain(struct solo_dev *solo_dev, u8 ch) in tw28_get_audio_gain() argument
846 val = tw_readbyte(solo_dev, chip_num, in tw28_get_audio_gain()
853 void tw28_set_audio_gain(struct solo_dev *solo_dev, u8 ch, u8 val) in tw28_set_audio_gain() argument
862 old_val = tw_readbyte(solo_dev, chip_num, in tw28_set_audio_gain()
869 tw_writebyte(solo_dev, chip_num, TW286x_AUDIO_INPUT_GAIN_ADDR(ch), in tw28_set_audio_gain()