Lines Matching refs:solo_dev

171 static u8 tw_readbyte(struct solo_dev *solo_dev, int chip_id, u8 tw6x_off,  in tw_readbyte()  argument
174 if (is_tw286x(solo_dev, chip_id)) in tw_readbyte()
175 return solo_i2c_readbyte(solo_dev, SOLO_I2C_TW, in tw_readbyte()
179 return solo_i2c_readbyte(solo_dev, SOLO_I2C_TW, in tw_readbyte()
184 static void tw_writebyte(struct solo_dev *solo_dev, int chip_id, in tw_writebyte() argument
187 if (is_tw286x(solo_dev, chip_id)) in tw_writebyte()
188 solo_i2c_writebyte(solo_dev, SOLO_I2C_TW, in tw_writebyte()
192 solo_i2c_writebyte(solo_dev, SOLO_I2C_TW, in tw_writebyte()
197 static void tw_write_and_verify(struct solo_dev *solo_dev, u8 addr, u8 off, in tw_write_and_verify() argument
203 u8 rval = solo_i2c_readbyte(solo_dev, SOLO_I2C_TW, addr, off); in tw_write_and_verify()
208 solo_i2c_writebyte(solo_dev, SOLO_I2C_TW, addr, off, val); in tw_write_and_verify()
216 static int tw2865_setup(struct solo_dev *solo_dev, u8 dev_addr) in tw2865_setup() argument
221 if (solo_dev->video_type == SOLO_VO_FMT_TYPE_PAL) in tw2865_setup()
229 if (solo_dev->nr_chans == 4) { in tw2865_setup()
232 } else if (solo_dev->nr_chans == 8) { in tw2865_setup()
236 } else if (solo_dev->nr_chans == 16) { in tw2865_setup()
260 tw_write_and_verify(solo_dev, dev_addr, i, in tw2865_setup()
267 static int tw2864_setup(struct solo_dev *solo_dev, u8 dev_addr) in tw2864_setup() argument
272 if (solo_dev->video_type == SOLO_VO_FMT_TYPE_PAL) in tw2864_setup()
279 if (solo_dev->tw2865 == 0) { in tw2864_setup()
281 if (solo_dev->nr_chans == 4) { in tw2864_setup()
284 } else if (solo_dev->nr_chans == 8) { in tw2864_setup()
290 } else if (solo_dev->nr_chans == 16) { in tw2864_setup()
307 if (solo_dev->nr_chans == 8) { in tw2864_setup()
311 } else if (solo_dev->nr_chans == 16) { in tw2864_setup()
336 tw_write_and_verify(solo_dev, dev_addr, i, in tw2864_setup()
343 static int tw2815_setup(struct solo_dev *solo_dev, u8 dev_addr) in tw2815_setup() argument
411 (solo_dev->video_type == SOLO_VO_FMT_TYPE_NTSC) ? in tw2815_setup()
420 if (solo_dev->nr_chans == 4) { in tw2815_setup()
423 } else if (solo_dev->nr_chans == 8) { in tw2815_setup()
429 } else if (solo_dev->nr_chans == 16) { in tw2815_setup()
482 solo_i2c_writebyte(solo_dev, SOLO_I2C_TW, in tw2815_setup()
494 solo_i2c_writebyte(solo_dev, SOLO_I2C_TW, dev_addr, i, in tw2815_setup()
504 static void saa712x_write_regs(struct solo_dev *dev, const u8 *vals, in saa712x_write_regs()
523 static void saa712x_setup(struct solo_dev *dev) in saa712x_setup()
582 int solo_tw28_init(struct solo_dev *solo_dev) in solo_tw28_init() argument
587 solo_dev->tw28_cnt = 0; in solo_tw28_init()
590 for (i = 0; i < solo_dev->nr_chans / 4; i++) { in solo_tw28_init()
591 value = solo_i2c_readbyte(solo_dev, SOLO_I2C_TW, in solo_tw28_init()
596 solo_dev->tw2865 |= 1 << i; in solo_tw28_init()
597 solo_dev->tw28_cnt++; in solo_tw28_init()
601 solo_dev->tw2864 |= 1 << i; in solo_tw28_init()
602 solo_dev->tw28_cnt++; in solo_tw28_init()
605 value = solo_i2c_readbyte(solo_dev, SOLO_I2C_TW, in solo_tw28_init()
609 solo_dev->tw2815 |= 1 << i; in solo_tw28_init()
610 solo_dev->tw28_cnt++; in solo_tw28_init()
615 if (solo_dev->tw28_cnt != (solo_dev->nr_chans >> 2)) { in solo_tw28_init()
616 dev_err(&solo_dev->pdev->dev, in solo_tw28_init()
621 saa712x_setup(solo_dev); in solo_tw28_init()
623 for (i = 0; i < solo_dev->tw28_cnt; i++) { in solo_tw28_init()
624 if ((solo_dev->tw2865 & (1 << i))) in solo_tw28_init()
625 tw2865_setup(solo_dev, TW_CHIP_OFFSET_ADDR(i)); in solo_tw28_init()
626 else if ((solo_dev->tw2864 & (1 << i))) in solo_tw28_init()
627 tw2864_setup(solo_dev, TW_CHIP_OFFSET_ADDR(i)); in solo_tw28_init()
629 tw2815_setup(solo_dev, TW_CHIP_OFFSET_ADDR(i)); in solo_tw28_init()
641 int tw28_get_video_status(struct solo_dev *solo_dev, u8 ch) in tw28_get_video_status() argument
649 val = tw_readbyte(solo_dev, chip_num, TW286x_AV_STAT_ADDR, in tw28_get_video_status()
658 u16 tw28_get_audio_status(struct solo_dev *solo_dev)
664 for (i = 0; i < solo_dev->tw28_cnt; i++) {
665 val = (tw_readbyte(solo_dev, i, TW286x_AV_STAT_ADDR,
674 bool tw28_has_sharpness(struct solo_dev *solo_dev, u8 ch) in tw28_has_sharpness() argument
676 return is_tw286x(solo_dev, ch / 4); in tw28_has_sharpness()
679 int tw28_set_ctrl_val(struct solo_dev *solo_dev, u32 ctrl, u8 ch, in tw28_set_ctrl_val() argument
695 if (is_tw286x(solo_dev, chip_num)) { in tw28_set_ctrl_val()
696 u8 v = solo_i2c_readbyte(solo_dev, SOLO_I2C_TW, in tw28_set_ctrl_val()
701 solo_i2c_writebyte(solo_dev, SOLO_I2C_TW, in tw28_set_ctrl_val()
710 if (is_tw286x(solo_dev, chip_num)) in tw28_set_ctrl_val()
714 tw_writebyte(solo_dev, chip_num, TW286x_HUE_ADDR(ch), in tw28_set_ctrl_val()
721 if (is_tw286x(solo_dev, chip_num)) { in tw28_set_ctrl_val()
722 solo_i2c_writebyte(solo_dev, SOLO_I2C_TW, in tw28_set_ctrl_val()
726 tw_writebyte(solo_dev, chip_num, TW286x_SATURATIONV_ADDR(ch), in tw28_set_ctrl_val()
732 tw_writebyte(solo_dev, chip_num, TW286x_CONTRAST_ADDR(ch), in tw28_set_ctrl_val()
737 if (is_tw286x(solo_dev, chip_num)) in tw28_set_ctrl_val()
741 tw_writebyte(solo_dev, chip_num, TW286x_BRIGHTNESS_ADDR(ch), in tw28_set_ctrl_val()
752 int tw28_get_ctrl_val(struct solo_dev *solo_dev, u32 ctrl, u8 ch, in tw28_get_ctrl_val() argument
764 if (is_tw286x(solo_dev, chip_num)) { in tw28_get_ctrl_val()
765 rval = solo_i2c_readbyte(solo_dev, SOLO_I2C_TW, in tw28_get_ctrl_val()
773 rval = tw_readbyte(solo_dev, chip_num, TW286x_HUE_ADDR(ch), in tw28_get_ctrl_val()
775 if (is_tw286x(solo_dev, chip_num)) in tw28_get_ctrl_val()
781 *val = tw_readbyte(solo_dev, chip_num, in tw28_get_ctrl_val()
786 *val = tw_readbyte(solo_dev, chip_num, in tw28_get_ctrl_val()
791 rval = tw_readbyte(solo_dev, chip_num, in tw28_get_ctrl_val()
794 if (is_tw286x(solo_dev, chip_num)) in tw28_get_ctrl_val()
812 void tw2815_Set_AudioOutVol(struct solo_dev *solo_dev, unsigned int u_val)
817 chip_num = (solo_dev->nr_chans - 1) / 4;
819 val = tw_readbyte(solo_dev, chip_num, TW286x_AUDIO_OUTPUT_VOL_ADDR,
824 tw_writebyte(solo_dev, chip_num, TW286x_AUDIO_OUTPUT_VOL_ADDR,
829 u8 tw28_get_audio_gain(struct solo_dev *solo_dev, u8 ch) in tw28_get_audio_gain() argument
838 val = tw_readbyte(solo_dev, chip_num, in tw28_get_audio_gain()
845 void tw28_set_audio_gain(struct solo_dev *solo_dev, u8 ch, u8 val) in tw28_set_audio_gain() argument
854 old_val = tw_readbyte(solo_dev, chip_num, in tw28_set_audio_gain()
861 tw_writebyte(solo_dev, chip_num, TW286x_AUDIO_INPUT_GAIN_ADDR(ch), in tw28_set_audio_gain()