Lines Matching refs:rk628
19 static int rk628_combrxphy_try_clk_detect(struct rk628 *rk628) in rk628_combrxphy_try_clk_detect() argument
28 rk628_i2c_read(rk628, COMBRX_REG(0x6630), &val); in rk628_combrxphy_try_clk_detect()
31 rk628_i2c_write(rk628, COMBRX_REG(0x6630), val); in rk628_combrxphy_try_clk_detect()
37 rk628_i2c_read(rk628, COMBRX_REG(0x6630), &val); in rk628_combrxphy_try_clk_detect()
39 rk628_i2c_write(rk628, COMBRX_REG(0x6630), val); in rk628_combrxphy_try_clk_detect()
41 rk628_i2c_read(rk628, COMBRX_REG(0x66f0), &val); in rk628_combrxphy_try_clk_detect()
43 rk628_i2c_write(rk628, COMBRX_REG(0x66f0), val); in rk628_combrxphy_try_clk_detect()
45 rk628_i2c_read(rk628, COMBRX_REG(0x66f4), &val); in rk628_combrxphy_try_clk_detect()
47 rk628_i2c_write(rk628, COMBRX_REG(0x66f4), val); in rk628_combrxphy_try_clk_detect()
49 rk628_i2c_read(rk628, COMBRX_REG(0x66f0), &val); in rk628_combrxphy_try_clk_detect()
51 rk628_i2c_write(rk628, COMBRX_REG(0x66f0), val); in rk628_combrxphy_try_clk_detect()
53 rk628_i2c_read(rk628, COMBRX_REG(0x66f4), &val); in rk628_combrxphy_try_clk_detect()
55 rk628_i2c_write(rk628, COMBRX_REG(0x66f4), val); in rk628_combrxphy_try_clk_detect()
57 rk628_i2c_read(rk628, COMBRX_REG(0x66f0), &val); in rk628_combrxphy_try_clk_detect()
60 rk628_i2c_write(rk628, COMBRX_REG(0x66f0), val); in rk628_combrxphy_try_clk_detect()
63 rk628_i2c_read(rk628, COMBRX_REG(0x66f0), &val); in rk628_combrxphy_try_clk_detect()
66 rk628_i2c_write(rk628, COMBRX_REG(0x66f0), val); in rk628_combrxphy_try_clk_detect()
70 rk628_i2c_read(rk628, COMBRX_REG(0x6654), &val); in rk628_combrxphy_try_clk_detect()
73 dev_info(rk628->dev, "clock detected!\n"); in rk628_combrxphy_try_clk_detect()
81 static void rk628_combrxphy_get_data_of_round(struct rk628 *rk628, in rk628_combrxphy_get_data_of_round() argument
87 rk628_i2c_read(rk628, COMBRX_REG(0x6740 + i * 4), &data[i]); in rk628_combrxphy_get_data_of_round()
90 static void rk628_combrxphy_set_dc_gain(struct rk628 *rk628, in rk628_combrxphy_set_dc_gain() argument
99 rk628_i2c_read(rk628, COMBRX_REG(0x661c), &val); in rk628_combrxphy_set_dc_gain()
103 rk628_i2c_write(rk628, COMBRX_REG(0x661c), val); in rk628_combrxphy_set_dc_gain()
129 rk628_combrxphy_max_zero_of_round(struct rk628 *rk628, in rk628_combrxphy_max_zero_of_round() argument
153 dev_info(rk628->dev, "channel:%d, round:%d, max_zero_cnt:%d, max_val:%#x\n", in rk628_combrxphy_max_zero_of_round()
157 static int rk628_combrxphy_chose_round_for_ch(struct rk628 *rk628, in rk628_combrxphy_chose_round_for_ch() argument
176 dev_info(rk628->dev, "%s channel:%d, rd:%d\n", __func__, ch, rd); in rk628_combrxphy_chose_round_for_ch()
181 static void rk628_combrxphy_set_sample_edge_round(struct rk628 *rk628, in rk628_combrxphy_set_sample_edge_round() argument
190 rk628_i2c_read(rk628, COMBRX_REG(0x6618), &val); in rk628_combrxphy_set_sample_edge_round()
193 rk628_i2c_write(rk628, COMBRX_REG(0x6618), val); in rk628_combrxphy_set_sample_edge_round()
196 static void rk628_combrxphy_start_sample_edge(struct rk628 *rk628) in rk628_combrxphy_start_sample_edge() argument
200 rk628_i2c_read(rk628, COMBRX_REG(0x66f0), &val); in rk628_combrxphy_start_sample_edge()
202 rk628_i2c_write(rk628, COMBRX_REG(0x66f0), val); in rk628_combrxphy_start_sample_edge()
203 rk628_i2c_read(rk628, COMBRX_REG(0x66f0), &val); in rk628_combrxphy_start_sample_edge()
205 rk628_i2c_write(rk628, COMBRX_REG(0x66f0), val); in rk628_combrxphy_start_sample_edge()
208 static void rk628_combrxphy_set_sample_edge_mode(struct rk628 *rk628, int ch) in rk628_combrxphy_set_sample_edge_mode() argument
212 rk628_i2c_read(rk628, COMBRX_REG(0x6634), &val); in rk628_combrxphy_set_sample_edge_mode()
214 rk628_i2c_write(rk628, COMBRX_REG(0x6634), val); in rk628_combrxphy_set_sample_edge_mode()
217 static void rk628_combrxphy_select_channel(struct rk628 *rk628, int ch) in rk628_combrxphy_select_channel() argument
221 rk628_i2c_read(rk628, COMBRX_REG(0x6700), &val); in rk628_combrxphy_select_channel()
223 rk628_i2c_write(rk628, COMBRX_REG(0x6700), val); in rk628_combrxphy_select_channel()
226 static void rk628_combrxphy_cfg_6730(struct rk628 *rk628) in rk628_combrxphy_cfg_6730() argument
230 rk628_i2c_read(rk628, COMBRX_REG(0x6730), &val); in rk628_combrxphy_cfg_6730()
232 rk628_i2c_write(rk628, COMBRX_REG(0x6730), val); in rk628_combrxphy_cfg_6730()
235 static void rk628_combrxphy_sample_edge_procedure_for_cable(struct rk628 *rk628, in rk628_combrxphy_sample_edge_procedure_for_cable() argument
249 rk628_combrxphy_set_sample_edge_mode(rk628, ch); in rk628_combrxphy_sample_edge_procedure_for_cable()
253 rk628_combrxphy_select_channel(rk628, ch); in rk628_combrxphy_sample_edge_procedure_for_cable()
254 rk628_combrxphy_cfg_6730(rk628); in rk628_combrxphy_sample_edge_procedure_for_cable()
295 dev_info(rk628->dev, "cdr_mode:%d, dc_gain:%d, rd_offset:%d, edge:%#x\n", in rk628_combrxphy_sample_edge_procedure_for_cable()
298 rk628_combrxphy_select_channel(rk628, ch); in rk628_combrxphy_sample_edge_procedure_for_cable()
299 rk628_i2c_write(rk628, COMBRX_REG(0x6708), edge); in rk628_combrxphy_sample_edge_procedure_for_cable()
302 rk628_combrxphy_set_dc_gain(rk628, dc_gain, dc_gain, dc_gain); in rk628_combrxphy_sample_edge_procedure_for_cable()
305 rk628_combrxphy_set_sample_edge_round(rk628, n, n, n); in rk628_combrxphy_sample_edge_procedure_for_cable()
307 rk628_combrxphy_start_sample_edge(rk628); in rk628_combrxphy_sample_edge_procedure_for_cable()
312 rk628_combrxphy_select_channel(rk628, ch); in rk628_combrxphy_sample_edge_procedure_for_cable()
313 rk628_combrxphy_get_data_of_round(rk628, data); in rk628_combrxphy_sample_edge_procedure_for_cable()
316 rk628_combrxphy_max_zero_of_round(rk628, data_in, in rk628_combrxphy_sample_edge_procedure_for_cable()
327 ch_round[ch] = rk628_combrxphy_chose_round_for_ch(rk628, round_max_zero[ch], in rk628_combrxphy_sample_edge_procedure_for_cable()
331 dev_info(rk628->dev, "last equ gain ch0:%d, ch1:%d, ch2:%d\n", in rk628_combrxphy_sample_edge_procedure_for_cable()
335 rk628_combrxphy_set_sample_edge_round(rk628, ch_round[0], ch_round[1], ch_round[2]); in rk628_combrxphy_sample_edge_procedure_for_cable()
339 rk628_combrxphy_start_sample_edge(rk628); in rk628_combrxphy_sample_edge_procedure_for_cable()
344 static int rk628_combrxphy_set_hdmi_mode_for_cable(struct rk628 *rk628, int f) in rk628_combrxphy_set_hdmi_mode_for_cable() argument
387 if (rk628_combrxphy_try_clk_detect(rk628) >= 0) in rk628_combrxphy_set_hdmi_mode_for_cable()
391 rk628_i2c_read(rk628, COMBRX_REG(0x6654), &val); in rk628_combrxphy_set_hdmi_mode_for_cable()
392 dev_info(rk628->dev, "clk det over cnt:%d, reg_0x6654:%#x\n", i, val); in rk628_combrxphy_set_hdmi_mode_for_cable()
395 dev_info(rk628->dev, "Clock detection anomaly\n"); in rk628_combrxphy_set_hdmi_mode_for_cable()
398 dev_info(rk628->dev, "%s%s%s%s%s%s%s%s level detection anomaly\n", in rk628_combrxphy_set_hdmi_mode_for_cable()
409 rk628_i2c_read(rk628, COMBRX_REG(0x6620), &val); in rk628_combrxphy_set_hdmi_mode_for_cable()
415 dev_info(rk628->dev, "clock detected failed, cfg resistance manual!\n"); in rk628_combrxphy_set_hdmi_mode_for_cable()
416 rk628_i2c_write(rk628, COMBRX_REG(0x6620), 0x66666666); in rk628_combrxphy_set_hdmi_mode_for_cable()
417 rk628_i2c_update_bits(rk628, COMBRX_REG(0x6604), BIT(31), BIT(31)); in rk628_combrxphy_set_hdmi_mode_for_cable()
427 rk628_i2c_read(rk628, COMBRX_REG(0x6654), &val); in rk628_combrxphy_set_hdmi_mode_for_cable()
438 dev_info(rk628->dev, "clock stable!"); in rk628_combrxphy_set_hdmi_mode_for_cable()
444 rk628_i2c_read(rk628, COMBRX_REG(0x6630), &val_a); in rk628_combrxphy_set_hdmi_mode_for_cable()
445 rk628_i2c_read(rk628, COMBRX_REG(0x6608), &val_b); in rk628_combrxphy_set_hdmi_mode_for_cable()
446 dev_err(rk628->dev, in rk628_combrxphy_set_hdmi_mode_for_cable()
451 rk628_i2c_update_bits(rk628, COMBRX_REG(0x6628), BIT(31), BIT(31)); in rk628_combrxphy_set_hdmi_mode_for_cable()
456 rk628_i2c_read(rk628, COMBRX_REG(0x6654), &val); in rk628_combrxphy_set_hdmi_mode_for_cable()
458 rk628_i2c_read(rk628, COMBRX_REG(0x6630), &val_a); in rk628_combrxphy_set_hdmi_mode_for_cable()
459 rk628_i2c_read(rk628, COMBRX_REG(0x6608), &val_b); in rk628_combrxphy_set_hdmi_mode_for_cable()
460 dev_err(rk628->dev, in rk628_combrxphy_set_hdmi_mode_for_cable()
469 dev_info(rk628->dev, "cdr_mode:%d, cdr_data:%d\n", cdr_mode, cdr_data); in rk628_combrxphy_set_hdmi_mode_for_cable()
474 dev_info(rk628->dev, "f:%d\n", f); in rk628_combrxphy_set_hdmi_mode_for_cable()
482 rk628_i2c_write(rk628, COMBRX_REG(0x662c), 0x01000500); in rk628_combrxphy_set_hdmi_mode_for_cable()
484 rk628_i2c_write(rk628, COMBRX_REG(0x66a8), 0x0000c000); in rk628_combrxphy_set_hdmi_mode_for_cable()
486 rk628_i2c_write(rk628, COMBRX_REG(0x66a8), 0x0000c600); in rk628_combrxphy_set_hdmi_mode_for_cable()
488 rk628_i2c_write(rk628, COMBRX_REG(0x662c), 0x01001400); in rk628_combrxphy_set_hdmi_mode_for_cable()
489 rk628_i2c_write(rk628, COMBRX_REG(0x66a8), 0x0000c600); in rk628_combrxphy_set_hdmi_mode_for_cable()
511 dev_info(rk628->dev, "cdr_mode:%d, pll_man:%#x\n", cdr_mode, pll_man); in rk628_combrxphy_set_hdmi_mode_for_cable()
512 rk628_i2c_write(rk628, COMBRX_REG(0x6630), pll_man); in rk628_combrxphy_set_hdmi_mode_for_cable()
515 rk628_combrxphy_sample_edge_procedure_for_cable(rk628, cdr_mode); in rk628_combrxphy_set_hdmi_mode_for_cable()
519 rk628_i2c_write(rk628, COMBRX_REG(0x66a0), 0x00000003); in rk628_combrxphy_set_hdmi_mode_for_cable()
521 rk628_i2c_write(rk628, COMBRX_REG(0x66b0), 0x00080060); in rk628_combrxphy_set_hdmi_mode_for_cable()
523 rk628_i2c_write(rk628, COMBRX_REG(0x66a0), 0x00000083); in rk628_combrxphy_set_hdmi_mode_for_cable()
525 rk628_i2c_write(rk628, COMBRX_REG(0x66b0), 0x00380060); in rk628_combrxphy_set_hdmi_mode_for_cable()
527 rk628_i2c_update_bits(rk628, COMBRX_REG(0x66ac), in rk628_combrxphy_set_hdmi_mode_for_cable()
535 rk628_i2c_read(rk628, COMBRX_REG(0x66b4), &data_a); in rk628_combrxphy_set_hdmi_mode_for_cable()
536 rk628_i2c_read(rk628, COMBRX_REG(0x66b8), &data_b); in rk628_combrxphy_set_hdmi_mode_for_cable()
545 dev_info(rk628->dev, "channel alignment done\n"); in rk628_combrxphy_set_hdmi_mode_for_cable()
546 dev_info(rk628->dev, "rx initial done\n"); in rk628_combrxphy_set_hdmi_mode_for_cable()
549 dev_info(rk628->dev, "link not stable, count:%d of 100\n", count); in rk628_combrxphy_set_hdmi_mode_for_cable()
552 dev_err(rk628->dev, "channel alignment failed!\n"); in rk628_combrxphy_set_hdmi_mode_for_cable()
559 int rk628_combrxphy_power_on(struct rk628 *rk628, int f) in rk628_combrxphy_power_on() argument
561 return rk628_combrxphy_set_hdmi_mode_for_cable(rk628, f); in rk628_combrxphy_power_on()
564 int rk628_combrxphy_power_off(struct rk628 *rk628) in rk628_combrxphy_power_off() argument