Lines Matching refs:ast
37 void ast_set_index_reg_mask(struct ast_private *ast, in ast_set_index_reg_mask() argument
42 ast_io_write8(ast, base, index); in ast_set_index_reg_mask()
43 tmp = (ast_io_read8(ast, base + 1) & mask) | val; in ast_set_index_reg_mask()
44 ast_set_index_reg(ast, base, index, tmp); in ast_set_index_reg_mask()
47 uint8_t ast_get_index_reg(struct ast_private *ast, in ast_get_index_reg() argument
51 ast_io_write8(ast, base, index); in ast_get_index_reg()
52 ret = ast_io_read8(ast, base + 1); in ast_get_index_reg()
56 uint8_t ast_get_index_reg_mask(struct ast_private *ast, in ast_get_index_reg_mask() argument
60 ast_io_write8(ast, base, index); in ast_get_index_reg_mask()
61 ret = ast_io_read8(ast, base + 1) & mask; in ast_get_index_reg_mask()
68 struct ast_private *ast = dev->dev_private; in ast_detect_chip() local
70 ast_open_key(ast); in ast_detect_chip()
73 ast->chip = AST1100; in ast_detect_chip()
77 ast->chip = AST2400; in ast_detect_chip()
80 ast->chip = AST2300; in ast_detect_chip()
84 ast_write32(ast, 0xf004, 0x1e6e0000); in ast_detect_chip()
85 ast_write32(ast, 0xf000, 0x1); in ast_detect_chip()
87 data = ast_read32(ast, 0x1207c); in ast_detect_chip()
90 ast->chip = AST1100; in ast_detect_chip()
94 ast->chip = AST2200; in ast_detect_chip()
98 ast->chip = AST2150; in ast_detect_chip()
102 ast->chip = AST2100; in ast_detect_chip()
106 ast->vga2_clone = false; in ast_detect_chip()
108 ast->chip = AST2000; in ast_detect_chip()
128 switch (ast->chip) { in ast_detect_chip()
130 ast->support_wide_screen = true; in ast_detect_chip()
133 ast->support_wide_screen = false; in ast_detect_chip()
136 jreg = ast_get_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xd0, 0xff); in ast_detect_chip()
138 ast->support_wide_screen = true; in ast_detect_chip()
140 ast->support_wide_screen = true; in ast_detect_chip()
142 ast->support_wide_screen = false; in ast_detect_chip()
144 ast_write32(ast, 0xf004, 0x1e6e0000); in ast_detect_chip()
145 ast_write32(ast, 0xf000, 0x1); in ast_detect_chip()
146 data = ast_read32(ast, 0x1207c); in ast_detect_chip()
148 if (ast->chip == AST2300 && data == 0x0) /* ast1300 */ in ast_detect_chip()
149 ast->support_wide_screen = true; in ast_detect_chip()
150 if (ast->chip == AST2400 && data == 0x100) /* ast1400 */ in ast_detect_chip()
151 ast->support_wide_screen = true; in ast_detect_chip()
157 ast->tx_chip_type = AST_TX_NONE; in ast_detect_chip()
168 jreg = ast_get_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xa3, 0xff); in ast_detect_chip()
170 ast->tx_chip_type = AST_TX_SIL164; in ast_detect_chip()
173 if ((ast->chip == AST2300) || (ast->chip == AST2400)) { in ast_detect_chip()
179 jreg = ast_get_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xd1, 0xff); in ast_detect_chip()
182 ast->tx_chip_type = AST_TX_SIL164; in ast_detect_chip()
185 ast->dp501_fw_addr = kzalloc(32*1024, GFP_KERNEL); in ast_detect_chip()
186 if (ast->dp501_fw_addr) { in ast_detect_chip()
188 if (ast_backup_fw(dev, ast->dp501_fw_addr, 32*1024)) { in ast_detect_chip()
189 kfree(ast->dp501_fw_addr); in ast_detect_chip()
190 ast->dp501_fw_addr = NULL; in ast_detect_chip()
195 ast->tx_chip_type = AST_TX_DP501; in ast_detect_chip()
200 switch(ast->tx_chip_type) { in ast_detect_chip()
215 struct ast_private *ast = dev->dev_private; in ast_get_dram_info() local
219 ast_write32(ast, 0xf004, 0x1e6e0000); in ast_get_dram_info()
220 ast_write32(ast, 0xf000, 0x1); in ast_get_dram_info()
223 ast_write32(ast, 0x10000, 0xfc600309); in ast_get_dram_info()
227 } while (ast_read32(ast, 0x10000) != 0x01); in ast_get_dram_info()
228 data = ast_read32(ast, 0x10004); in ast_get_dram_info()
231 ast->dram_bus_width = 16; in ast_get_dram_info()
233 ast->dram_bus_width = 32; in ast_get_dram_info()
235 if (ast->chip == AST2300 || ast->chip == AST2400) { in ast_get_dram_info()
238 ast->dram_type = AST_DRAM_512Mx16; in ast_get_dram_info()
242 ast->dram_type = AST_DRAM_1Gx16; in ast_get_dram_info()
245 ast->dram_type = AST_DRAM_2Gx16; in ast_get_dram_info()
248 ast->dram_type = AST_DRAM_4Gx16; in ast_get_dram_info()
255 ast->dram_type = AST_DRAM_512Mx16; in ast_get_dram_info()
259 ast->dram_type = AST_DRAM_1Gx16; in ast_get_dram_info()
261 ast->dram_type = AST_DRAM_512Mx32; in ast_get_dram_info()
264 ast->dram_type = AST_DRAM_1Gx32; in ast_get_dram_info()
269 data = ast_read32(ast, 0x10120); in ast_get_dram_info()
270 data2 = ast_read32(ast, 0x10170); in ast_get_dram_info()
291 ast->mclk = ref_pll * (num + 2) / (denum + 2) * (div * 1000); in ast_get_dram_info()
361 struct ast_private *ast = dev->dev_private; in ast_get_vram_info() local
364 ast_open_key(ast); in ast_get_vram_info()
367 jreg = ast_get_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xaa, 0xff); in ast_get_vram_info()
375 jreg = ast_get_index_reg_mask(ast, AST_IO_CRTC_PORT, 0x99, 0xff); in ast_get_vram_info()
393 struct ast_private *ast; in ast_driver_load() local
397 ast = kzalloc(sizeof(struct ast_private), GFP_KERNEL); in ast_driver_load()
398 if (!ast) in ast_driver_load()
401 dev->dev_private = ast; in ast_driver_load()
402 ast->dev = dev; in ast_driver_load()
404 ast->regs = pci_iomap(dev->pdev, 1, 0); in ast_driver_load()
405 if (!ast->regs) { in ast_driver_load()
417 ast->ioregs = ast->regs + AST_IO_MM_OFFSET; in ast_driver_load()
421 if (!ast->ioregs) { in ast_driver_load()
422 ast->ioregs = pci_iomap(dev->pdev, 2, 0); in ast_driver_load()
423 if (!ast->ioregs) { in ast_driver_load()
431 if (ast->chip != AST1180) { in ast_driver_load()
433 ast->vram_size = ast_get_vram_info(dev); in ast_driver_load()
434 DRM_INFO("dram %d %d %d %08x\n", ast->mclk, ast->dram_type, ast->dram_bus_width, ast->vram_size); in ast_driver_load()
440 ret = ast_mm_init(ast); in ast_driver_load()
452 if (ast->chip == AST2100 || in ast_driver_load()
453 ast->chip == AST2200 || in ast_driver_load()
454 ast->chip == AST2300 || in ast_driver_load()
455 ast->chip == AST2400 || in ast_driver_load()
456 ast->chip == AST1180) { in ast_driver_load()
474 kfree(ast); in ast_driver_load()
481 struct ast_private *ast = dev->dev_private; in ast_driver_unload() local
483 kfree(ast->dp501_fw_addr); in ast_driver_unload()
488 ast_mm_fini(ast); in ast_driver_unload()
489 pci_iounmap(dev->pdev, ast->ioregs); in ast_driver_unload()
490 pci_iounmap(dev->pdev, ast->regs); in ast_driver_unload()
491 kfree(ast); in ast_driver_unload()