/Linux-v6.1/drivers/media/pci/solo6x10/ |
D | solo6x10-v4l2.c | 35 static inline void erase_on(struct solo_dev *solo_dev) in erase_on() argument 37 solo_reg_write(solo_dev, SOLO_VO_DISP_ERASE, SOLO_VO_DISP_ERASE_ON); in erase_on() 38 solo_dev->erasing = 1; in erase_on() 39 solo_dev->frame_blank = 0; in erase_on() 42 static inline int erase_off(struct solo_dev *solo_dev) in erase_off() argument 44 if (!solo_dev->erasing) in erase_off() 48 if (!solo_dev->frame_blank) in erase_off() 49 solo_reg_write(solo_dev, SOLO_VO_DISP_ERASE, 0); in erase_off() 51 if (solo_dev->frame_blank++ >= 8) in erase_off() 52 solo_dev->erasing = 0; in erase_off() [all …]
|
D | solo6x10-i2c.c | 25 u8 solo_i2c_readbyte(struct solo_dev *solo_dev, int id, u8 addr, u8 off) in solo_i2c_readbyte() argument 40 i2c_transfer(&solo_dev->i2c_adap[id], msgs, 2); in solo_i2c_readbyte() 45 void solo_i2c_writebyte(struct solo_dev *solo_dev, int id, u8 addr, in solo_i2c_writebyte() argument 58 i2c_transfer(&solo_dev->i2c_adap[id], &msgs, 1); in solo_i2c_writebyte() 61 static void solo_i2c_flush(struct solo_dev *solo_dev, int wr) in solo_i2c_flush() argument 65 ctrl = SOLO_IIC_CH_SET(solo_dev->i2c_id); in solo_i2c_flush() 67 if (solo_dev->i2c_state == IIC_STATE_START) in solo_i2c_flush() 74 if (!(solo_dev->i2c_msg->flags & I2C_M_NO_RD_ACK)) in solo_i2c_flush() 78 if (solo_dev->i2c_msg_ptr == solo_dev->i2c_msg->len) in solo_i2c_flush() 81 solo_reg_write(solo_dev, SOLO_IIC_CTRL, ctrl); in solo_i2c_flush() [all …]
|
D | solo6x10-disp.c | 29 static void solo_vin_config(struct solo_dev *solo_dev) in solo_vin_config() argument 31 solo_dev->vin_hstart = 8; in solo_vin_config() 32 solo_dev->vin_vstart = 2; in solo_vin_config() 34 solo_reg_write(solo_dev, SOLO_SYS_VCLK, in solo_vin_config() 45 solo_reg_write(solo_dev, SOLO_VI_ACT_I_P, in solo_vin_config() 46 SOLO_VI_H_START(solo_dev->vin_hstart) | in solo_vin_config() 47 SOLO_VI_V_START(solo_dev->vin_vstart) | in solo_vin_config() 48 SOLO_VI_V_STOP(solo_dev->vin_vstart + in solo_vin_config() 49 solo_dev->video_vsize)); in solo_vin_config() 51 solo_reg_write(solo_dev, SOLO_VI_ACT_I_S, in solo_vin_config() [all …]
|
D | solo6x10-enc.c | 24 static void solo_capture_config(struct solo_dev *solo_dev) in solo_capture_config() argument 31 solo_reg_write(solo_dev, SOLO_CAP_BASE, in solo_capture_config() 32 SOLO_CAP_MAX_PAGE((SOLO_CAP_EXT_SIZE(solo_dev) in solo_capture_config() 34 | SOLO_CAP_BASE_ADDR(SOLO_CAP_EXT_ADDR(solo_dev) >> 16)); in solo_capture_config() 37 if (solo_dev->type == SOLO_DEV_6110) { in solo_capture_config() 40 solo_reg_write(solo_dev, SOLO_CAP_BTW, in solo_capture_config() 44 solo_reg_write(solo_dev, SOLO_CAP_BTW, in solo_capture_config() 50 width = solo_dev->video_hsize; in solo_capture_config() 51 height = solo_dev->video_vsize; in solo_capture_config() 52 solo_reg_write(solo_dev, SOLO_DIM_SCALE1, in solo_capture_config() [all …]
|
D | solo6x10-core.c | 39 static void solo_set_time(struct solo_dev *solo_dev) in solo_set_time() argument 46 solo_reg_write(solo_dev, SOLO_TIMER_SEC, (u32)ts.tv_sec); in solo_set_time() 47 solo_reg_write(solo_dev, SOLO_TIMER_USEC, (u32)ts.tv_nsec / NSEC_PER_USEC); in solo_set_time() 50 static void solo_timer_sync(struct solo_dev *solo_dev) in solo_timer_sync() argument 56 if (solo_dev->type != SOLO_DEV_6110) in solo_timer_sync() 59 if (++solo_dev->time_sync < 60) in solo_timer_sync() 62 solo_dev->time_sync = 0; in solo_timer_sync() 64 sec = solo_reg_read(solo_dev, SOLO_TIMER_SEC); in solo_timer_sync() 65 usec = solo_reg_read(solo_dev, SOLO_TIMER_USEC); in solo_timer_sync() 74 solo_set_time(solo_dev); in solo_timer_sync() [all …]
|
D | solo6x10-gpio.c | 19 static void solo_gpio_mode(struct solo_dev *solo_dev, in solo_gpio_mode() argument 25 ret = solo_reg_read(solo_dev, SOLO_GPIO_CONFIG_0); in solo_gpio_mode() 36 solo_reg_write(solo_dev, SOLO_GPIO_CONFIG_0, ret); in solo_gpio_mode() 39 ret = solo_reg_read(solo_dev, SOLO_GPIO_CONFIG_1); in solo_gpio_mode() 54 solo_reg_write(solo_dev, SOLO_GPIO_CONFIG_1, ret); in solo_gpio_mode() 57 static void solo_gpio_set(struct solo_dev *solo_dev, unsigned int value) in solo_gpio_set() argument 59 solo_reg_write(solo_dev, SOLO_GPIO_DATA_OUT, in solo_gpio_set() 60 solo_reg_read(solo_dev, SOLO_GPIO_DATA_OUT) | value); in solo_gpio_set() 63 static void solo_gpio_clear(struct solo_dev *solo_dev, unsigned int value) in solo_gpio_clear() argument 65 solo_reg_write(solo_dev, SOLO_GPIO_DATA_OUT, in solo_gpio_clear() [all …]
|
D | solo6x10.h | 140 struct solo_dev *solo_dev; member 181 struct solo_dev { struct 275 static inline u32 solo_reg_read(struct solo_dev *solo_dev, int reg) in solo_reg_read() argument 277 return readl(solo_dev->reg_base + reg); in solo_reg_read() 280 static inline void solo_reg_write(struct solo_dev *solo_dev, int reg, in solo_reg_write() argument 285 writel(data, solo_dev->reg_base + reg); in solo_reg_write() 286 pci_read_config_word(solo_dev->pdev, PCI_STATUS, &val); in solo_reg_write() 289 static inline void solo_irq_on(struct solo_dev *dev, u32 mask) in solo_irq_on() 295 static inline void solo_irq_off(struct solo_dev *dev, u32 mask) in solo_irq_off() 302 int solo_disp_init(struct solo_dev *solo_dev); [all …]
|
D | solo6x10-tw28.c | 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() [all …]
|
D | solo6x10-eeprom.c | 26 #define eeprom_delay() solo_reg_read(solo_dev, SOLO_EEPROM_CTRL) 31 ret = solo_eeprom_reg_read(solo_dev); \ 43 static unsigned int solo_eeprom_reg_read(struct solo_dev *solo_dev) in solo_eeprom_reg_read() argument 45 return solo_reg_read(solo_dev, SOLO_EEPROM_CTRL) & EE_DATA_READ; in solo_eeprom_reg_read() 48 static void solo_eeprom_reg_write(struct solo_dev *solo_dev, u32 data) in solo_eeprom_reg_write() argument 50 solo_reg_write(solo_dev, SOLO_EEPROM_CTRL, data); in solo_eeprom_reg_write() 54 static void solo_eeprom_cmd(struct solo_dev *solo_dev, int cmd) in solo_eeprom_cmd() argument 58 solo_eeprom_reg_write(solo_dev, SOLO_EEPROM_ACCESS_EN); in solo_eeprom_cmd() 59 solo_eeprom_reg_write(solo_dev, SOLO_EEPROM_ENABLE); in solo_eeprom_cmd() 64 solo_eeprom_reg_write(solo_dev, SOLO_EEPROM_ENABLE | dataval); in solo_eeprom_cmd() [all …]
|
D | solo6x10-p2m.c | 28 int solo_p2m_dma(struct solo_dev *solo_dev, int wr, in solo_p2m_dma() argument 40 dma_addr = dma_map_single(&solo_dev->pdev->dev, sys_addr, size, in solo_p2m_dma() 42 if (dma_mapping_error(&solo_dev->pdev->dev, dma_addr)) in solo_p2m_dma() 45 ret = solo_p2m_dma_t(solo_dev, wr, dma_addr, ext_addr, size, in solo_p2m_dma() 48 dma_unmap_single(&solo_dev->pdev->dev, dma_addr, size, in solo_p2m_dma() 55 int solo_p2m_dma_desc(struct solo_dev *solo_dev, in solo_p2m_dma_desc() argument 66 if (solo_dev->type != SOLO_DEV_6110 && multi_p2m) in solo_p2m_dma_desc() 67 p2m_id = atomic_inc_return(&solo_dev->p2m_count) % SOLO_NR_P2M; in solo_p2m_dma_desc() 69 p2m_dev = &solo_dev->p2m_dev[p2m_id]; in solo_p2m_dma_desc() 77 if (desc_cnt > 1 && solo_dev->type != SOLO_DEV_6110 && desc_mode) { in solo_p2m_dma_desc() [all …]
|
D | solo6x10-v4l2-enc.c | 95 struct solo_dev *solo_dev = solo_enc->solo_dev; in solo_is_motion_on() local 97 return (solo_dev->motion_mask >> solo_enc->ch) & 1; in solo_is_motion_on() 102 struct solo_dev *solo_dev = solo_enc->solo_dev; in solo_motion_detected() local 108 if (solo_reg_read(solo_dev, SOLO_VI_MOT_STATUS) & ch_mask) { in solo_motion_detected() 109 solo_reg_write(solo_dev, SOLO_VI_MOT_CLEAR, ch_mask); in solo_motion_detected() 119 struct solo_dev *solo_dev = solo_enc->solo_dev; in solo_motion_toggle() local 126 solo_dev->motion_mask |= mask; in solo_motion_toggle() 128 solo_dev->motion_mask &= ~mask; in solo_motion_toggle() 130 solo_reg_write(solo_dev, SOLO_VI_MOT_CLEAR, mask); in solo_motion_toggle() 132 solo_reg_write(solo_dev, SOLO_VI_MOT_ADR, in solo_motion_toggle() [all …]
|
D | solo6x10-g723.c | 48 struct solo_dev *solo_dev; member 53 static void solo_g723_config(struct solo_dev *solo_dev) in solo_g723_config() argument 57 clk_div = (solo_dev->clock_mhz * 1000000) in solo_g723_config() 60 solo_reg_write(solo_dev, SOLO_AUDIO_SAMPLE, in solo_g723_config() 64 solo_reg_write(solo_dev, SOLO_AUDIO_FDMA_INTR, in solo_g723_config() 67 | SOLO_AUDIO_FDMA_BASE(SOLO_G723_EXT_ADDR(solo_dev) >> 16)); in solo_g723_config() 69 solo_reg_write(solo_dev, SOLO_AUDIO_CONTROL, in solo_g723_config() 76 void solo_g723_isr(struct solo_dev *solo_dev) in solo_g723_isr() argument 79 &solo_dev->snd_pcm->streams[SNDRV_PCM_STREAM_CAPTURE]; in solo_g723_isr() 88 if (snd_pcm_substream_chip(ss) == solo_dev) in solo_g723_isr() [all …]
|
D | solo6x10-tw28.h | 41 int solo_tw28_init(struct solo_dev *solo_dev); 43 int tw28_set_ctrl_val(struct solo_dev *solo_dev, u32 ctrl, u8 ch, s32 val); 44 int tw28_get_ctrl_val(struct solo_dev *solo_dev, u32 ctrl, u8 ch, s32 *val); 45 bool tw28_has_sharpness(struct solo_dev *solo_dev, u8 ch); 47 u8 tw28_get_audio_gain(struct solo_dev *solo_dev, u8 ch); 48 void tw28_set_audio_gain(struct solo_dev *solo_dev, u8 ch, u8 val); 49 int tw28_get_video_status(struct solo_dev *solo_dev, u8 ch);
|