Lines Matching +full:0 +full:- +full:576

1 // SPDX-License-Identifier: GPL-2.0
14 #include <dm/device-internal.h>
15 #include <linux/media-bus-format.h>
23 #define TVE_POWCR 0x03
24 #define TVE_OFF 0X07
25 #define TVE_ON 0x03
33 CVBS_NTSC = 0,
39 struct dm_i2c_chip *chip = dev_get_parent_platdata(rk1000_tve->dev); in rk1000_tve_i2c_write()
44 buf[0] = reg; in rk1000_tve_i2c_write()
46 msg.addr = chip->chip_addr; in rk1000_tve_i2c_write()
47 msg.flags = 0; in rk1000_tve_i2c_write()
51 ret = dm_i2c_xfer(rk1000_tve->dev, &msg, 1); in rk1000_tve_i2c_write()
53 dev_err(rk1000_tve->dev, in rk1000_tve_i2c_write()
58 return 0; in rk1000_tve_i2c_write()
63 struct dm_i2c_chip *chip = dev_get_parent_platdata(rk1000_tve->dev); in rk1000_tve_i2c_read()
67 .addr = chip->chip_addr, in rk1000_tve_i2c_read()
68 .flags = 0, in rk1000_tve_i2c_read()
72 .addr = chip->chip_addr, in rk1000_tve_i2c_read()
80 ret = dm_i2c_xfer(rk1000_tve->dev, msg, 2); in rk1000_tve_i2c_read()
82 dev_err(rk1000_tve->dev, in rk1000_tve_i2c_read()
89 return 0; in rk1000_tve_i2c_read()
97 for (i = 0; i < len; i++) { in rk1000_tv_write_block()
113 rk1000_tve->dev = dev; in rk1000_tve_probe()
116 "rk1000-ctl@40", in rk1000_tve_probe()
117 &rk1000_tve->rk1000_ctl.dev); in rk1000_tve_probe()
121 bridge->dev = dev; in rk1000_tve_probe()
123 return 0; in rk1000_tve_probe()
128 u8 tv_encoder_regs_pal[] = {0x06, 0x00, 0x00, 0x03, 0x00, 0x00}; in rk1000_tve_bridge_enable()
129 u8 tv_encoder_control_regs_pal[] = {0x41, 0x01}; in rk1000_tve_bridge_enable()
130 u8 tv_encoder_regs_ntsc[] = {0x00, 0x00, 0x00, 0x03, 0x00, 0x00}; in rk1000_tve_bridge_enable()
131 u8 tv_encoder_control_regs_ntsc[] = {0x43, 0x01}; in rk1000_tve_bridge_enable()
132 char data[4] = {0x88, 0x00, 0x22, 0x00}; in rk1000_tve_bridge_enable()
133 struct rk1000_tve *rk1000_tve = dev_get_priv(bridge->dev); in rk1000_tve_bridge_enable()
134 struct connector_state *conn_state = &bridge->state->conn_state; in rk1000_tve_bridge_enable()
135 struct drm_display_mode *mode = &conn_state->mode; in rk1000_tve_bridge_enable()
136 struct rk1000_ctl *rk1000_ctl = &rk1000_tve->rk1000_ctl; in rk1000_tve_bridge_enable()
138 rk1000_ctl_write_block(rk1000_ctl, 0, (u8 *)data, 4); in rk1000_tve_bridge_enable()
141 data[0] = 0x07; in rk1000_tve_bridge_enable()
142 rk1000_tv_write_block(rk1000_tve, 0x03, (u8 *)data, 1); in rk1000_tve_bridge_enable()
144 if (mode->vdisplay == 576) { in rk1000_tve_bridge_enable()
145 rk1000_tv_write_block(rk1000_tve, 0, tv_encoder_regs_pal, in rk1000_tve_bridge_enable()
151 rk1000_tv_write_block(rk1000_tve, 0, tv_encoder_regs_ntsc, in rk1000_tve_bridge_enable()
161 struct rk1000_tve *rk1000_tve = dev_get_priv(bridge->dev); in rk1000_tve_bridge_disable()
162 char data[1] = {0x07}; in rk1000_tve_bridge_disable()
165 rk1000_tv_write_block(rk1000_tve, 0x03, (u8 *)data, 1); in rk1000_tve_bridge_disable()
181 overscan->left_margin = max_scan; in drm_rk1000_select_output()
182 overscan->right_margin = max_scan; in drm_rk1000_select_output()
183 overscan->top_margin = max_scan; in drm_rk1000_select_output()
184 overscan->bottom_margin = max_scan; in drm_rk1000_select_output()
186 mode->hdisplay = 720; in drm_rk1000_select_output()
187 mode->hsync_start = 732; in drm_rk1000_select_output()
188 mode->hsync_end = 738; in drm_rk1000_select_output()
189 mode->htotal = 864; in drm_rk1000_select_output()
190 mode->vdisplay = 576; in drm_rk1000_select_output()
191 mode->vsync_start = 582; in drm_rk1000_select_output()
192 mode->vsync_end = 588; in drm_rk1000_select_output()
193 mode->vtotal = 625; in drm_rk1000_select_output()
194 mode->clock = 27000; in drm_rk1000_select_output()
195 mode->flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC; in drm_rk1000_select_output()
203 if (part_get_info_by_name(dev_desc, "baseparameter", &part_info) < 0) { in drm_rk1000_select_output()
210 if (ret < 0) { in drm_rk1000_select_output()
219 sizeof(base_parameter.screen_list[0]); in drm_rk1000_select_output()
221 for (i = 0; i < screen_size; i++) { in drm_rk1000_select_output()
229 if (scan->leftscale < min_scan && scan->leftscale > 0) in drm_rk1000_select_output()
230 overscan->left_margin = min_scan; in drm_rk1000_select_output()
231 else if (scan->leftscale < max_scan) in drm_rk1000_select_output()
232 overscan->left_margin = scan->leftscale; in drm_rk1000_select_output()
234 if (scan->rightscale < min_scan && scan->rightscale > 0) in drm_rk1000_select_output()
235 overscan->right_margin = min_scan; in drm_rk1000_select_output()
236 else if (scan->rightscale < max_scan) in drm_rk1000_select_output()
237 overscan->right_margin = scan->rightscale; in drm_rk1000_select_output()
239 if (scan->topscale < min_scan && scan->topscale > 0) in drm_rk1000_select_output()
240 overscan->top_margin = min_scan; in drm_rk1000_select_output()
241 else if (scan->topscale < max_scan) in drm_rk1000_select_output()
242 overscan->top_margin = scan->topscale; in drm_rk1000_select_output()
244 if (scan->bottomscale < min_scan && scan->bottomscale > 0) in drm_rk1000_select_output()
245 overscan->bottom_margin = min_scan; in drm_rk1000_select_output()
246 else if (scan->bottomscale < max_scan) in drm_rk1000_select_output()
247 overscan->bottom_margin = scan->bottomscale; in drm_rk1000_select_output()
250 (screen_info->mode.hdisplay == 720 && in drm_rk1000_select_output()
251 screen_info->mode.hsync_end == 742 && in drm_rk1000_select_output()
252 screen_info->mode.vdisplay == 480)) { in drm_rk1000_select_output()
253 mode->hdisplay = 720; in drm_rk1000_select_output()
254 mode->hsync_start = 736; in drm_rk1000_select_output()
255 mode->hsync_end = 742; in drm_rk1000_select_output()
256 mode->htotal = 858; in drm_rk1000_select_output()
257 mode->vdisplay = 480; in drm_rk1000_select_output()
258 mode->vsync_start = 494; in drm_rk1000_select_output()
259 mode->vsync_end = 500; in drm_rk1000_select_output()
260 mode->vtotal = 525; in drm_rk1000_select_output()
261 mode->clock = 27000; in drm_rk1000_select_output()
263 mode->hdisplay = 720; in drm_rk1000_select_output()
264 mode->hsync_start = 732; in drm_rk1000_select_output()
265 mode->hsync_end = 738; in drm_rk1000_select_output()
266 mode->htotal = 864; in drm_rk1000_select_output()
267 mode->vdisplay = 576; in drm_rk1000_select_output()
268 mode->vsync_start = 582; in drm_rk1000_select_output()
269 mode->vsync_end = 588; in drm_rk1000_select_output()
270 mode->vtotal = 625; in drm_rk1000_select_output()
271 mode->clock = 27000; in drm_rk1000_select_output()
279 struct connector_state *conn_state = &bridge->state->conn_state; in rk1000_tve_get_timing()
280 struct drm_display_mode *mode = &conn_state->mode; in rk1000_tve_get_timing()
281 struct overscan *overscan = &conn_state->overscan; in rk1000_tve_get_timing()
285 return 0; in rk1000_tve_get_timing()
303 .compatible = "rockchip,rk1000-tve",