void s5p_cec_reset(void) { writeb(CEC_RX_CTRL_RESET, g_cec_base + CEC_RX_CTRL); writeb(CEC_TX_CTRL_RESET, g_cec_base + CEC_TX_CTRL); CECPRINTK("CEC_RX_CTRL = 0x%08x\n", readb(g_cec_base + CEC_RX_CTRL)); CECPRINTK("CEC_TX_CTRL = 0x%08x\n", readb(g_cec_base + CEC_TX_CTRL)); }
void s5p_cec_threshold(void) { writeb(CEC_FILTER_THRESHOLD, g_cec_base + CEC_RX_FILTER_TH); writeb(0, g_cec_base + CEC_RX_FILTER_CTRL); CECPRINTK("CEC_RX_FILTER_TH = 0x%08x\n", readb(g_cec_base + CEC_RX_FILTER_TH)); }
void s5p_cec_enable_rx(void) { u8 reg; reg = readb(g_cec_base + CEC_RX_CTRL); reg |= CEC_RX_CTRL_ENABLE; writeb(reg, g_cec_base + CEC_RX_CTRL); CECPRINTK("CEC_RX_CTRL = 0x%08x\n", readb(g_cec_base + CEC_RX_CTRL)); }
void s5p_cec_unmask_rx_interrupts(void) { u8 reg; reg = readb(g_cec_base + CEC_IRQ_MASK); reg &= ~CEC_IRQ_RX_DONE; reg &= ~CEC_IRQ_RX_ERROR; writeb(reg, g_cec_base + CEC_IRQ_MASK); CECPRINTK("CEC_IRQ_MASK = 0x%08x\n", readb(g_cec_base + CEC_IRQ_MASK)); }
/** * Mask CEC Rx interrupts */ void __s5p_cec_mask_rx_interrupts(void) { u8 reg; reg = readb(cec_base + CEC_IRQ_MASK); reg |= CEC_IRQ_RX_DONE; reg |= CEC_IRQ_RX_ERROR; writeb(reg, cec_base + CEC_IRQ_MASK); CECPRINTK("CEC_IRQ_MASK = 0x%08x \n", readb(cec_base + CEC_IRQ_MASK)); }
u32 s5p_cec_get_status(void) { u32 status = 0; status = readb(g_cec_base + CEC_STATUS_0); status |= readb(g_cec_base + CEC_STATUS_1) << 8; status |= readb(g_cec_base + CEC_STATUS_2) << 16; status |= readb(g_cec_base + CEC_STATUS_3) << 24; CECPRINTK("status = 0x%x!\n", status); return status; }
void s5p_cec_set_divider(void) { u32 div_ratio, reg, div_val; div_ratio = S5P_HDMI_FIN/CEC_DIV_RATIO - 1; reg = readl(S5P_HDMI_PHY_CONTROL); reg = (reg & ~(0x3FF<<16)) | (div_ratio << 16); writel(reg, S5P_HDMI_PHY_CONTROL); div_val = CEC_DIV_RATIO * 0.00005 - 1; writeb(0x0, g_cec_base + CEC_DIVISOR_3); writeb(0x0, g_cec_base + CEC_DIVISOR_2); writeb(0x0, g_cec_base + CEC_DIVISOR_1); writeb(div_val, g_cec_base + CEC_DIVISOR_0); CECPRINTK("CEC_DIVISOR_3 = 0x%08x\n", readb(g_cec_base + CEC_DIVISOR_3)); CECPRINTK("CEC_DIVISOR_2 = 0x%08x\n", readb(g_cec_base + CEC_DIVISOR_2)); CECPRINTK("CEC_DIVISOR_1 = 0x%08x\n", readb(g_cec_base + CEC_DIVISOR_1)); CECPRINTK("CEC_DIVISOR_0 = 0x%08x\n", readb(g_cec_base + CEC_DIVISOR_0)); }
void __s5p_cec_rx_reset(void) { writeb(CEC_RX_CTRL_RESET, cec_base + CEC_RX_CTRL); CECPRINTK("CEC_RX_CTRL = 0x%08x \n", readb(cec_base + CEC_RX_CTRL)); }