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