Lines Matching refs:solo_dev
142 static u8 tw_readbyte(struct solo6010_dev *solo_dev, int chip_id, u8 tw6x_off,
145 if (is_tw286x(solo_dev, chip_id))
146 return solo_i2c_readbyte(solo_dev, SOLO_I2C_TW,
150 return solo_i2c_readbyte(solo_dev, SOLO_I2C_TW,
155 static void tw_writebyte(struct solo6010_dev *solo_dev, int chip_id,
158 if (is_tw286x(solo_dev, chip_id))
159 solo_i2c_writebyte(solo_dev, SOLO_I2C_TW,
163 solo_i2c_writebyte(solo_dev, SOLO_I2C_TW,
168 static void tw_write_and_verify(struct solo6010_dev *solo_dev, u8 addr, u8 off,
174 u8 rval = solo_i2c_readbyte(solo_dev, SOLO_I2C_TW, addr, off);
178 solo_i2c_writebyte(solo_dev, SOLO_I2C_TW, addr, off, val);
186 static int tw2865_setup(struct solo6010_dev *solo_dev, u8 dev_addr)
191 if (solo_dev->video_type == SOLO_VO_FMT_TYPE_PAL)
199 if (solo_dev->nr_chans == 4) {
202 } else if (solo_dev->nr_chans == 8) {
206 } else if (solo_dev->nr_chans == 16) {
229 tw_write_and_verify(solo_dev, dev_addr, i,
236 static int tw2864_setup(struct solo6010_dev *solo_dev, u8 dev_addr)
244 if (solo_dev->tw2865 == 0) {
246 if (solo_dev->nr_chans == 4) {
249 } else if (solo_dev->nr_chans == 8) {
255 } else if (solo_dev->nr_chans == 16) {
272 if (solo_dev->nr_chans == 8) {
276 } else if (solo_dev->nr_chans == 16) {
288 if (solo_dev->video_type == SOLO_VO_FMT_TYPE_PAL) {
315 tw_write_and_verify(solo_dev, dev_addr, i,
322 static int tw2815_setup(struct solo6010_dev *solo_dev, u8 dev_addr)
390 (solo_dev->video_type == SOLO_VO_FMT_TYPE_NTSC) ?
399 if (solo_dev->nr_chans == 4) {
402 } else if (solo_dev->nr_chans == 8) {
408 } else if (solo_dev->nr_chans == 16) {
460 solo_i2c_writebyte(solo_dev, SOLO_I2C_TW,
472 solo_i2c_writebyte(solo_dev, SOLO_I2C_TW, dev_addr, i,
482 static void saa7128_setup(struct solo6010_dev *solo_dev)
510 if (solo_dev->video_type != SOLO_VO_FMT_TYPE_NTSC) {
533 solo_i2c_writebyte(solo_dev, SOLO_I2C_SAA, 0x46, i, regs[i]);
539 int solo_tw28_init(struct solo6010_dev *solo_dev)
546 value = solo_i2c_readbyte(solo_dev, SOLO_I2C_TW,
551 solo_dev->tw2865 |= 1 << i;
552 solo_dev->tw28_cnt++;
555 solo_dev->tw2864 |= 1 << i;
556 solo_dev->tw28_cnt++;
559 value = solo_i2c_readbyte(solo_dev, SOLO_I2C_TW,
562 solo_dev->tw2815 |= 1 << i;
563 solo_dev->tw28_cnt++;
568 if (!solo_dev->tw28_cnt)
571 saa7128_setup(solo_dev);
573 for (i = 0; i < solo_dev->tw28_cnt; i++) {
574 if ((solo_dev->tw2865 & (1 << i)))
575 tw2865_setup(solo_dev, TW_CHIP_OFFSET_ADDR(i));
576 else if ((solo_dev->tw2864 & (1 << i)))
577 tw2864_setup(solo_dev, TW_CHIP_OFFSET_ADDR(i));
579 tw2815_setup(solo_dev, TW_CHIP_OFFSET_ADDR(i));
582 dev_info(&solo_dev->pdev->dev, "Initialized %d tw28xx chip%s:",
583 solo_dev->tw28_cnt, solo_dev->tw28_cnt == 1 ? "" : "s");
585 if (solo_dev->tw2865)
586 printk(" tw2865[%d]", hweight32(solo_dev->tw2865));
587 if (solo_dev->tw2864)
588 printk(" tw2864[%d]", hweight32(solo_dev->tw2864));
589 if (solo_dev->tw2815)
590 printk(" tw2815[%d]", hweight32(solo_dev->tw2815));
602 int tw28_get_video_status(struct solo6010_dev *solo_dev, u8 ch)
610 val = tw_readbyte(solo_dev, chip_num, TW286X_AV_STAT_ADDR,
617 int tw28_set_ctrl_val(struct solo6010_dev *solo_dev, u32 ctrl, u8 ch,
635 if (is_tw286x(solo_dev, chip_num)) {
636 u8 v = solo_i2c_readbyte(solo_dev, SOLO_I2C_TW,
641 solo_i2c_writebyte(solo_dev, SOLO_I2C_TW,
649 if (is_tw286x(solo_dev, chip_num))
653 tw_writebyte(solo_dev, chip_num, TW286x_HUE_ADDR(ch),
659 if (is_tw286x(solo_dev, chip_num)) {
660 solo_i2c_writebyte(solo_dev, SOLO_I2C_TW,
664 tw_writebyte(solo_dev, chip_num, TW286x_SATURATIONV_ADDR(ch),
670 tw_writebyte(solo_dev, chip_num, TW286x_CONTRAST_ADDR(ch),
675 if (is_tw286x(solo_dev, chip_num))
679 tw_writebyte(solo_dev, chip_num, TW286x_BRIGHTNESS_ADDR(ch),
690 int tw28_get_ctrl_val(struct solo6010_dev *solo_dev, u32 ctrl, u8 ch,
702 if (is_tw286x(solo_dev, chip_num)) {
703 rval = solo_i2c_readbyte(solo_dev, SOLO_I2C_TW,
711 rval = tw_readbyte(solo_dev, chip_num, TW286x_HUE_ADDR(ch),
713 if (is_tw286x(solo_dev, chip_num))
719 *val = tw_readbyte(solo_dev, chip_num,
724 *val = tw_readbyte(solo_dev, chip_num,
729 rval = tw_readbyte(solo_dev, chip_num,
732 if (is_tw286x(solo_dev, chip_num))
745 u8 tw28_get_audio_gain(struct solo6010_dev *solo_dev, u8 ch)
754 val = tw_readbyte(solo_dev, chip_num,
761 void tw28_set_audio_gain(struct solo6010_dev *solo_dev, u8 ch, u8 val)
770 old_val = tw_readbyte(solo_dev, chip_num,
777 tw_writebyte(solo_dev, chip_num, TW286x_AUDIO_INPUT_GAIN_ADDR(ch),