Lines Matching full:cec
2 /* drivers/media/platform/s5p-cec/exynos_hdmi_cecctrl.c
7 * cec ftn file for Samsung TVOUT driver
14 #include "regs-cec.h"
23 void s5p_cec_set_divider(struct s5p_cec_dev *cec) in s5p_cec_set_divider() argument
30 if (regmap_read(cec->pmu, EXYNOS_HDMI_PHY_CONTROL, ®)) { in s5p_cec_set_divider()
31 dev_err(cec->dev, "failed to read phy control\n"); in s5p_cec_set_divider()
37 if (regmap_write(cec->pmu, EXYNOS_HDMI_PHY_CONTROL, reg)) { in s5p_cec_set_divider()
38 dev_err(cec->dev, "failed to write phy control\n"); in s5p_cec_set_divider()
44 writeb(0x0, cec->reg + S5P_CEC_DIVISOR_3); in s5p_cec_set_divider()
45 writeb(0x0, cec->reg + S5P_CEC_DIVISOR_2); in s5p_cec_set_divider()
46 writeb(0x0, cec->reg + S5P_CEC_DIVISOR_1); in s5p_cec_set_divider()
47 writeb(div_val, cec->reg + S5P_CEC_DIVISOR_0); in s5p_cec_set_divider()
50 void s5p_cec_enable_rx(struct s5p_cec_dev *cec) in s5p_cec_enable_rx() argument
54 reg = readb(cec->reg + S5P_CEC_RX_CTRL); in s5p_cec_enable_rx()
56 writeb(reg, cec->reg + S5P_CEC_RX_CTRL); in s5p_cec_enable_rx()
59 void s5p_cec_mask_rx_interrupts(struct s5p_cec_dev *cec) in s5p_cec_mask_rx_interrupts() argument
63 reg = readb(cec->reg + S5P_CEC_IRQ_MASK); in s5p_cec_mask_rx_interrupts()
66 writeb(reg, cec->reg + S5P_CEC_IRQ_MASK); in s5p_cec_mask_rx_interrupts()
69 void s5p_cec_unmask_rx_interrupts(struct s5p_cec_dev *cec) in s5p_cec_unmask_rx_interrupts() argument
73 reg = readb(cec->reg + S5P_CEC_IRQ_MASK); in s5p_cec_unmask_rx_interrupts()
76 writeb(reg, cec->reg + S5P_CEC_IRQ_MASK); in s5p_cec_unmask_rx_interrupts()
79 void s5p_cec_mask_tx_interrupts(struct s5p_cec_dev *cec) in s5p_cec_mask_tx_interrupts() argument
83 reg = readb(cec->reg + S5P_CEC_IRQ_MASK); in s5p_cec_mask_tx_interrupts()
86 writeb(reg, cec->reg + S5P_CEC_IRQ_MASK); in s5p_cec_mask_tx_interrupts()
89 void s5p_cec_unmask_tx_interrupts(struct s5p_cec_dev *cec) in s5p_cec_unmask_tx_interrupts() argument
93 reg = readb(cec->reg + S5P_CEC_IRQ_MASK); in s5p_cec_unmask_tx_interrupts()
96 writeb(reg, cec->reg + S5P_CEC_IRQ_MASK); in s5p_cec_unmask_tx_interrupts()
99 void s5p_cec_reset(struct s5p_cec_dev *cec) in s5p_cec_reset() argument
103 writeb(S5P_CEC_RX_CTRL_RESET, cec->reg + S5P_CEC_RX_CTRL); in s5p_cec_reset()
104 writeb(S5P_CEC_TX_CTRL_RESET, cec->reg + S5P_CEC_TX_CTRL); in s5p_cec_reset()
106 reg = readb(cec->reg + 0xc4); in s5p_cec_reset()
108 writeb(reg, cec->reg + 0xc4); in s5p_cec_reset()
111 void s5p_cec_tx_reset(struct s5p_cec_dev *cec) in s5p_cec_tx_reset() argument
113 writeb(S5P_CEC_TX_CTRL_RESET, cec->reg + S5P_CEC_TX_CTRL); in s5p_cec_tx_reset()
116 void s5p_cec_rx_reset(struct s5p_cec_dev *cec) in s5p_cec_rx_reset() argument
120 writeb(S5P_CEC_RX_CTRL_RESET, cec->reg + S5P_CEC_RX_CTRL); in s5p_cec_rx_reset()
122 reg = readb(cec->reg + 0xc4); in s5p_cec_rx_reset()
124 writeb(reg, cec->reg + 0xc4); in s5p_cec_rx_reset()
127 void s5p_cec_threshold(struct s5p_cec_dev *cec) in s5p_cec_threshold() argument
129 writeb(CEC_FILTER_THRESHOLD, cec->reg + S5P_CEC_RX_FILTER_TH); in s5p_cec_threshold()
130 writeb(0, cec->reg + S5P_CEC_RX_FILTER_CTRL); in s5p_cec_threshold()
133 void s5p_cec_copy_packet(struct s5p_cec_dev *cec, char *data, in s5p_cec_copy_packet() argument
140 writeb(data[i], cec->reg + (S5P_CEC_TX_BUFF0 + (i * 4))); in s5p_cec_copy_packet()
144 writeb(count, cec->reg + S5P_CEC_TX_BYTES); in s5p_cec_copy_packet()
145 reg = readb(cec->reg + S5P_CEC_TX_CTRL); in s5p_cec_copy_packet()
151 dev_dbg(cec->dev, "Broadcast"); in s5p_cec_copy_packet()
154 dev_dbg(cec->dev, "No Broadcast"); in s5p_cec_copy_packet()
158 writeb(reg, cec->reg + S5P_CEC_TX_CTRL); in s5p_cec_copy_packet()
159 dev_dbg(cec->dev, "cec-tx: cec count (%zu): %*ph", count, in s5p_cec_copy_packet()
163 void s5p_cec_set_addr(struct s5p_cec_dev *cec, u32 addr) in s5p_cec_set_addr() argument
165 writeb(addr & 0x0F, cec->reg + S5P_CEC_LOGIC_ADDR); in s5p_cec_set_addr()
168 u32 s5p_cec_get_status(struct s5p_cec_dev *cec) in s5p_cec_get_status() argument
172 status = readb(cec->reg + S5P_CEC_STATUS_0) & 0xf; in s5p_cec_get_status()
173 status |= (readb(cec->reg + S5P_CEC_TX_STAT1) & 0xf) << 4; in s5p_cec_get_status()
174 status |= readb(cec->reg + S5P_CEC_STATUS_1) << 8; in s5p_cec_get_status()
175 status |= readb(cec->reg + S5P_CEC_STATUS_2) << 16; in s5p_cec_get_status()
176 status |= readb(cec->reg + S5P_CEC_STATUS_3) << 24; in s5p_cec_get_status()
178 dev_dbg(cec->dev, "status = 0x%x!\n", status); in s5p_cec_get_status()
183 void s5p_clr_pending_tx(struct s5p_cec_dev *cec) in s5p_clr_pending_tx() argument
186 cec->reg + S5P_CEC_IRQ_CLEAR); in s5p_clr_pending_tx()
189 void s5p_clr_pending_rx(struct s5p_cec_dev *cec) in s5p_clr_pending_rx() argument
192 cec->reg + S5P_CEC_IRQ_CLEAR); in s5p_clr_pending_rx()
195 void s5p_cec_get_rx_buf(struct s5p_cec_dev *cec, u32 size, u8 *buffer) in s5p_cec_get_rx_buf() argument
201 buffer[i] = readb(cec->reg + S5P_CEC_RX_BUFF0 + (i * 4)); in s5p_cec_get_rx_buf()
205 dev_dbg(cec->dev, "cec-rx: cec size(%d): %s", size, debug); in s5p_cec_get_rx_buf()