Lines Matching refs:ast
53 static inline void ast_load_palette_index(struct ast_private *ast, in ast_load_palette_index() argument
57 ast_io_write8(ast, AST_IO_DAC_INDEX_WRITE, index); in ast_load_palette_index()
58 ast_io_read8(ast, AST_IO_SEQ_PORT); in ast_load_palette_index()
59 ast_io_write8(ast, AST_IO_DAC_DATA, red); in ast_load_palette_index()
60 ast_io_read8(ast, AST_IO_SEQ_PORT); in ast_load_palette_index()
61 ast_io_write8(ast, AST_IO_DAC_DATA, green); in ast_load_palette_index()
62 ast_io_read8(ast, AST_IO_SEQ_PORT); in ast_load_palette_index()
63 ast_io_write8(ast, AST_IO_DAC_DATA, blue); in ast_load_palette_index()
64 ast_io_read8(ast, AST_IO_SEQ_PORT); in ast_load_palette_index()
67 static void ast_crtc_load_lut(struct ast_private *ast, struct drm_crtc *crtc) in ast_crtc_load_lut() argument
80 ast_load_palette_index(ast, i, *r++ >> 8, *g++ >> 8, *b++ >> 8); in ast_crtc_load_lut()
205 static void ast_set_vbios_color_reg(struct ast_private *ast, in ast_set_vbios_color_reg() argument
226 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0x8c, (u8)((color_index & 0x0f) << 4)); in ast_set_vbios_color_reg()
228 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0x91, 0x00); in ast_set_vbios_color_reg()
231 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0x91, 0xa8); in ast_set_vbios_color_reg()
232 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0x92, format->cpp[0] * 8); in ast_set_vbios_color_reg()
236 static void ast_set_vbios_mode_reg(struct ast_private *ast, in ast_set_vbios_mode_reg() argument
245 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0x8d, refresh_rate_index & 0xff); in ast_set_vbios_mode_reg()
246 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0x8e, mode_id & 0xff); in ast_set_vbios_mode_reg()
248 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0x91, 0x00); in ast_set_vbios_mode_reg()
251 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0x91, 0xa8); in ast_set_vbios_mode_reg()
252 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0x93, adjusted_mode->clock / 1000); in ast_set_vbios_mode_reg()
253 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0x94, adjusted_mode->crtc_hdisplay); in ast_set_vbios_mode_reg()
254 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0x95, adjusted_mode->crtc_hdisplay >> 8); in ast_set_vbios_mode_reg()
255 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0x96, adjusted_mode->crtc_vdisplay); in ast_set_vbios_mode_reg()
256 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0x97, adjusted_mode->crtc_vdisplay >> 8); in ast_set_vbios_mode_reg()
260 static void ast_set_std_reg(struct ast_private *ast, in ast_set_std_reg() argument
271 ast_io_write8(ast, AST_IO_MISC_PORT_WRITE, jreg); in ast_set_std_reg()
274 ast_set_index_reg(ast, AST_IO_SEQ_PORT, 0x00, 0x03); in ast_set_std_reg()
275 ast_set_index_reg_mask(ast, AST_IO_SEQ_PORT, 0x01, 0xdf, stdtable->seq[0]); in ast_set_std_reg()
278 ast_set_index_reg(ast, AST_IO_SEQ_PORT, (i + 1), jreg); in ast_set_std_reg()
282 ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0x11, 0x7f, 0x00); in ast_set_std_reg()
284 ast_set_index_reg(ast, AST_IO_CRTC_PORT, i, stdtable->crtc[i]); in ast_set_std_reg()
286 ast_set_index_reg(ast, AST_IO_CRTC_PORT, i, stdtable->crtc[i]); in ast_set_std_reg()
288 ast_set_index_reg(ast, AST_IO_CRTC_PORT, i, stdtable->crtc[i]); in ast_set_std_reg()
291 jreg = ast_io_read8(ast, AST_IO_INPUT_STATUS1_READ); in ast_set_std_reg()
294 ast_io_write8(ast, AST_IO_AR_PORT_WRITE, (u8)i); in ast_set_std_reg()
295 ast_io_write8(ast, AST_IO_AR_PORT_WRITE, jreg); in ast_set_std_reg()
297 ast_io_write8(ast, AST_IO_AR_PORT_WRITE, 0x14); in ast_set_std_reg()
298 ast_io_write8(ast, AST_IO_AR_PORT_WRITE, 0x00); in ast_set_std_reg()
300 jreg = ast_io_read8(ast, AST_IO_INPUT_STATUS1_READ); in ast_set_std_reg()
301 ast_io_write8(ast, AST_IO_AR_PORT_WRITE, 0x20); in ast_set_std_reg()
305 ast_set_index_reg(ast, AST_IO_GR_PORT, i, stdtable->gr[i]); in ast_set_std_reg()
308 static void ast_set_crtc_reg(struct ast_private *ast, in ast_set_crtc_reg() argument
315 if ((ast->chip == AST2500) && in ast_set_crtc_reg()
319 ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0x11, 0x7f, 0x00); in ast_set_crtc_reg()
324 ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0x00, 0x00, temp); in ast_set_crtc_reg()
329 ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0x01, 0x00, temp); in ast_set_crtc_reg()
334 ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0x02, 0x00, temp); in ast_set_crtc_reg()
341 ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0x03, 0xE0, (temp & 0x1f)); in ast_set_crtc_reg()
346 ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0x04, 0x00, temp); in ast_set_crtc_reg()
351 ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0x05, 0x60, (u8)((temp & 0x1f) | jreg05)); in ast_set_crtc_reg()
353 ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xAC, 0x00, jregAC); in ast_set_crtc_reg()
354 ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xAD, 0x00, jregAD); in ast_set_crtc_reg()
364 ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0x06, 0x00, temp); in ast_set_crtc_reg()
373 ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0x10, 0x00, temp); in ast_set_crtc_reg()
380 ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0x11, 0x70, temp & 0xf); in ast_set_crtc_reg()
389 ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0x12, 0x00, temp); in ast_set_crtc_reg()
398 ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0x15, 0x00, temp); in ast_set_crtc_reg()
403 ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0x16, 0x00, temp); in ast_set_crtc_reg()
405 ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0x07, 0x00, jreg07); in ast_set_crtc_reg()
406 ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0x09, 0xdf, jreg09); in ast_set_crtc_reg()
407 ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xAE, 0x00, (jregAE | 0x80)); in ast_set_crtc_reg()
410 ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xb6, 0x3f, 0x80); in ast_set_crtc_reg()
412 ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xb6, 0x3f, 0x00); in ast_set_crtc_reg()
414 ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0x11, 0x7f, 0x80); in ast_set_crtc_reg()
417 static void ast_set_offset_reg(struct ast_private *ast, in ast_set_offset_reg() argument
423 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0x13, (offset & 0xff)); in ast_set_offset_reg()
424 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xb0, (offset >> 8) & 0x3f); in ast_set_offset_reg()
427 static void ast_set_dclk_reg(struct ast_private *ast, in ast_set_dclk_reg() argument
433 if (ast->chip == AST2500) in ast_set_dclk_reg()
438 ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xc0, 0x00, clk_info->param1); in ast_set_dclk_reg()
439 ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xc1, 0x00, clk_info->param2); in ast_set_dclk_reg()
440 ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xbb, 0x0f, in ast_set_dclk_reg()
445 static void ast_set_color_reg(struct ast_private *ast, in ast_set_color_reg() argument
469 ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xa0, 0x8f, jregA0); in ast_set_color_reg()
470 ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xa3, 0xf0, jregA3); in ast_set_color_reg()
471 ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xa8, 0xfd, jregA8); in ast_set_color_reg()
474 static void ast_set_crtthd_reg(struct ast_private *ast) in ast_set_crtthd_reg() argument
477 if (ast->chip == AST2300 || ast->chip == AST2400 || in ast_set_crtthd_reg()
478 ast->chip == AST2500) { in ast_set_crtthd_reg()
479 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa7, 0x78); in ast_set_crtthd_reg()
480 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa6, 0x60); in ast_set_crtthd_reg()
481 } else if (ast->chip == AST2100 || in ast_set_crtthd_reg()
482 ast->chip == AST1100 || in ast_set_crtthd_reg()
483 ast->chip == AST2200 || in ast_set_crtthd_reg()
484 ast->chip == AST2150) { in ast_set_crtthd_reg()
485 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa7, 0x3f); in ast_set_crtthd_reg()
486 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa6, 0x2f); in ast_set_crtthd_reg()
488 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa7, 0x2f); in ast_set_crtthd_reg()
489 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa6, 0x1f); in ast_set_crtthd_reg()
493 static void ast_set_sync_reg(struct ast_private *ast, in ast_set_sync_reg() argument
499 jreg = ast_io_read8(ast, AST_IO_MISC_PORT_READ); in ast_set_sync_reg()
505 ast_io_write8(ast, AST_IO_MISC_PORT_WRITE, jreg); in ast_set_sync_reg()
508 static void ast_set_start_address_crt1(struct ast_private *ast, in ast_set_start_address_crt1() argument
514 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0x0d, (u8)(addr & 0xff)); in ast_set_start_address_crt1()
515 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0x0c, (u8)((addr >> 8) & 0xff)); in ast_set_start_address_crt1()
516 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xaf, (u8)((addr >> 16) & 0xff)); in ast_set_start_address_crt1()
520 static void ast_wait_for_vretrace(struct ast_private *ast) in ast_wait_for_vretrace() argument
526 vgair1 = ast_io_read8(ast, AST_IO_INPUT_STATUS1_READ); in ast_wait_for_vretrace()
579 struct ast_private *ast = to_ast_private(dev); in ast_primary_plane_helper_atomic_update() local
592 ast_set_color_reg(ast, fb->format); in ast_primary_plane_helper_atomic_update()
593 ast_set_vbios_color_reg(ast, fb->format, vbios_mode_info); in ast_primary_plane_helper_atomic_update()
601 ast_set_offset_reg(ast, fb); in ast_primary_plane_helper_atomic_update()
602 ast_set_start_address_crt1(ast, (u32)gpu_addr); in ast_primary_plane_helper_atomic_update()
604 ast_set_index_reg_mask(ast, AST_IO_SEQ_PORT, 0x1, 0xdf, 0x00); in ast_primary_plane_helper_atomic_update()
611 struct ast_private *ast = to_ast_private(plane->dev); in ast_primary_plane_helper_atomic_disable() local
613 ast_set_index_reg_mask(ast, AST_IO_SEQ_PORT, 0x1, 0xdf, 0x20); in ast_primary_plane_helper_atomic_disable()
632 static int ast_primary_plane_init(struct ast_private *ast) in ast_primary_plane_init() argument
634 struct drm_device *dev = &ast->base; in ast_primary_plane_init()
635 struct drm_plane *primary_plane = &ast->primary_plane; in ast_primary_plane_init()
720 static void ast_set_cursor_base(struct ast_private *ast, u64 address) in ast_set_cursor_base() argument
726 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xc8, addr0); in ast_set_cursor_base()
727 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xc9, addr1); in ast_set_cursor_base()
728 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xca, addr2); in ast_set_cursor_base()
731 static void ast_set_cursor_location(struct ast_private *ast, u16 x, u16 y, in ast_set_cursor_location() argument
739 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xc2, x_offset); in ast_set_cursor_location()
740 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xc3, y_offset); in ast_set_cursor_location()
741 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xc4, x0); in ast_set_cursor_location()
742 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xc5, x1); in ast_set_cursor_location()
743 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xc6, y0); in ast_set_cursor_location()
744 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xc7, y1); in ast_set_cursor_location()
747 static void ast_set_cursor_enabled(struct ast_private *ast, bool enabled) in ast_set_cursor_enabled() argument
757 ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xcb, mask, vgacrcb); in ast_set_cursor_enabled()
806 struct ast_private *ast = to_ast_private(plane->dev); in ast_cursor_plane_helper_atomic_update() local
831 ast_set_cursor_base(ast, dst_off); in ast_cursor_plane_helper_atomic_update()
862 ast_set_cursor_location(ast, x, y, x_offset, y_offset); in ast_cursor_plane_helper_atomic_update()
865 ast_set_cursor_enabled(ast, true); in ast_cursor_plane_helper_atomic_update()
872 struct ast_private *ast = to_ast_private(plane->dev); in ast_cursor_plane_helper_atomic_disable() local
874 ast_set_cursor_enabled(ast, false); in ast_cursor_plane_helper_atomic_disable()
909 static int ast_cursor_plane_init(struct ast_private *ast) in ast_cursor_plane_init() argument
911 struct drm_device *dev = &ast->base; in ast_cursor_plane_init()
912 struct ast_cursor_plane *ast_cursor_plane = &ast->cursor_plane; in ast_cursor_plane_init()
989 struct ast_private *ast = to_ast_private(crtc->dev); in ast_crtc_dpms() local
998 if (ast->tx_chip_type == AST_TX_DP501) in ast_crtc_dpms()
1002 if (ast->tx_chip_type == AST_TX_DP501) in ast_crtc_dpms()
1044 struct ast_private *ast = to_ast_private(crtc->dev); in ast_crtc_helper_atomic_flush() local
1053 ast_crtc_load_lut(ast, crtc); in ast_crtc_helper_atomic_flush()
1061 struct ast_private *ast = to_ast_private(dev); in ast_crtc_helper_atomic_enable() local
1068 ast_set_vbios_mode_reg(ast, adjusted_mode, vbios_mode_info); in ast_crtc_helper_atomic_enable()
1069 ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa1, 0x06); in ast_crtc_helper_atomic_enable()
1070 ast_set_std_reg(ast, adjusted_mode, vbios_mode_info); in ast_crtc_helper_atomic_enable()
1071 ast_set_crtc_reg(ast, adjusted_mode, vbios_mode_info); in ast_crtc_helper_atomic_enable()
1072 ast_set_dclk_reg(ast, adjusted_mode, vbios_mode_info); in ast_crtc_helper_atomic_enable()
1073 ast_set_crtthd_reg(ast); in ast_crtc_helper_atomic_enable()
1074 ast_set_sync_reg(ast, adjusted_mode, vbios_mode_info); in ast_crtc_helper_atomic_enable()
1086 struct ast_private *ast = to_ast_private(dev); in ast_crtc_helper_atomic_disable() local
1106 ast_wait_for_vretrace(ast); in ast_crtc_helper_atomic_disable()
1170 struct ast_private *ast = to_ast_private(dev); in ast_crtc_init() local
1171 struct drm_crtc *crtc = &ast->crtc; in ast_crtc_init()
1174 ret = drm_crtc_init_with_planes(dev, crtc, &ast->primary_plane, in ast_crtc_init()
1175 &ast->cursor_plane.base, &ast_crtc_funcs, in ast_crtc_init()
1192 struct ast_private *ast = to_ast_private(dev); in ast_encoder_init() local
1193 struct drm_encoder *encoder = &ast->encoder; in ast_encoder_init()
1212 struct ast_private *ast = to_ast_private(connector->dev); in ast_get_modes() local
1217 if (ast->tx_chip_type == AST_TX_DP501) { in ast_get_modes()
1218 ast->dp501_maxclk = 0xff; in ast_get_modes()
1225 ast->dp501_maxclk = ast_get_dp501_max_clk(connector->dev); in ast_get_modes()
1244 struct ast_private *ast = to_ast_private(connector->dev); in ast_mode_valid() local
1248 if (ast->support_wide_screen) { in ast_mode_valid()
1260 if ((ast->chip == AST2100) || (ast->chip == AST2200) || in ast_mode_valid()
1261 (ast->chip == AST2300) || (ast->chip == AST2400) || in ast_mode_valid()
1262 (ast->chip == AST2500)) { in ast_mode_valid()
1267 jtemp = ast_get_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xd1, 0xff); in ast_mode_valid()
1326 struct ast_private *ast = to_ast_private(dev); in ast_connector_init() local
1327 struct ast_connector *ast_connector = &ast->connector; in ast_connector_init()
1329 struct drm_encoder *encoder = &ast->encoder; in ast_connector_init()
1368 int ast_mode_config_init(struct ast_private *ast) in ast_mode_config_init() argument
1370 struct drm_device *dev = &ast->base; in ast_mode_config_init()
1385 if (ast->chip == AST2100 || in ast_mode_config_init()
1386 ast->chip == AST2200 || in ast_mode_config_init()
1387 ast->chip == AST2300 || in ast_mode_config_init()
1388 ast->chip == AST2400 || in ast_mode_config_init()
1389 ast->chip == AST2500) { in ast_mode_config_init()
1400 ret = ast_primary_plane_init(ast); in ast_mode_config_init()
1404 ret = ast_cursor_plane_init(ast); in ast_mode_config_init()
1420 struct ast_private *ast = to_ast_private(i2c->dev); in get_clock() local
1425 val = (ast_get_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xb7, 0x10) >> 4) & 0x01; in get_clock()
1427 val2 = (ast_get_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xb7, 0x10) >> 4) & 0x01; in get_clock()
1432 val = (ast_get_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xb7, 0x10) >> 4) & 0x01; in get_clock()
1442 struct ast_private *ast = to_ast_private(i2c->dev); in get_data() local
1447 val = (ast_get_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xb7, 0x20) >> 5) & 0x01; in get_data()
1449 val2 = (ast_get_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xb7, 0x20) >> 5) & 0x01; in get_data()
1454 val = (ast_get_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xb7, 0x20) >> 5) & 0x01; in get_data()
1464 struct ast_private *ast = to_ast_private(i2c->dev); in set_clock() local
1470 ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xb7, 0xf4, ujcrb7); in set_clock()
1471 jtemp = ast_get_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xb7, 0x01); in set_clock()
1480 struct ast_private *ast = to_ast_private(i2c->dev); in set_data() local
1486 ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xb7, 0xf1, ujcrb7); in set_data()
1487 jtemp = ast_get_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xb7, 0x04); in set_data()