static void avia_gt_vbi_irq(u16 irq) { u8 tt_error = 0; u8 tt_pts = 0; if (avia_gt_chip(ENX)) { tt_error = enx_reg_s(TSTATUS)->E; tt_pts = enx_reg_s(TSTATUS)->R; } else if (avia_gt_chip(GTX)) { tt_error = gtx_reg_s(TSTATUS)->E; tt_pts = gtx_reg_s(TSTATUS)->R; } avia_gt_reg_set(TSTATUS, E, 0); avia_gt_reg_set(TSTATUS, R, 0); if (tt_error) { printk(KERN_INFO "avia_gt_vbi: error in TS stream\n"); avia_gt_vbi_stop(); avia_gt_vbi_start(); } if (tt_pts) printk(KERN_INFO "avia_gt_vbi: got pts\n"); }
void avia_gt_exit(void) { #if (!defined(MODULE)) || (defined(MODULE) && !defined(STANDALONE)) if (init_state >= 13) avia_gt_vbi_exit(); if (init_state >= 12) avia_gt_ir_exit(); if (init_state >= 11) avia_gt_pig_exit(); if (init_state >= 10) avia_gt_capture_exit(); if (init_state >= 9) avia_gt_pcm_exit(); if (init_state >= 8) avia_gt_gv_exit(); if (init_state >= 7) avia_gt_dmx_exit(); if (init_state >= 6) avia_gt_accel_exit(); #endif if (init_state >= 5) { if (avia_gt_chip(ENX)) avia_gt_enx_exit(); else if (avia_gt_chip(GTX)) avia_gt_gtx_exit(); } if (init_state >= 4) { if (avia_gt_chip(ENX)) free_irq(ENX_INTERRUPT, 0); else if (avia_gt_chip(GTX)) free_irq(GTX_INTERRUPT, 0); } if (init_state >= 3) iounmap(gt_info->mem_addr); if (init_state >= 2) iounmap(gt_info->reg_addr); if (init_state >= 1) kfree(gt_info); }
void avia_gt_unmask_irq(unsigned char irq_reg, unsigned char irq_bit) { if (avia_gt_chip(ENX)) avia_gt_enx_unmask_irq(irq_reg, irq_bit); else if (avia_gt_chip(GTX)) avia_gt_gtx_unmask_irq(irq_reg, irq_bit); }
unsigned short avia_gt_get_irq_status(unsigned char irq_reg) { if (avia_gt_chip(ENX)) return avia_gt_enx_get_irq_status(irq_reg); else if (avia_gt_chip(GTX)) return avia_gt_gtx_get_irq_status(irq_reg); return 0; }
void avia_gt_enx_init(void) { printk(KERN_INFO "avia_gt_enx: $Id: avia_gt_enx.c,v 1.21 2003/09/30 05:45:35 obi Exp $\n"); gt_info = avia_gt_get_info(); if (!avia_gt_chip(ENX)) { printk("avia_gt_enx: Unsupported chip type\n"); return; } enx_reset(); enx_sdram_ctrl_init(); enx_dac_init(); enx_video_init(); enx_irq_enable(); memset(gt_info->mem_addr, 0xF, 1024 * 1024 /*ENX_MEM_SIZE*/); //bring out of reset state enx_reg_set(RSTR0, AVI, 0); // AV - Decoder enx_reg_set(RSTR0, QUE, 0); // Queue Manager enx_reg_set(RSTR0, BLIT, 0); // Blitter / Color expander enx_reg_set(CFGR0, TCP, 0); // disable clip mode teletext enx_reg_set(CFGR0, ACP, 0); // disable clip mode audio enx_reg_set(CFGR0, VCP, 0); // disable clip mode video }
void avia_gt_enx_init(void) { printk("avia_gt_enx: $Id: avia_gt_enx.c,v 1.13 2002/09/02 19:25:37 Jolt Exp $\n"); gt_info = avia_gt_get_info(); if (!avia_gt_chip(ENX)) { printk("avia_gt_enx: Unsupported chip type\n"); return; } enx_reset(); enx_sdram_ctrl_init(); enx_dac_init(); enx_video_init(); enx_irq_enable(); memset(gt_info->mem_addr, 0xF, 1024 * 1024 /*ENX_MEM_SIZE*/); //bring out of reset state enx_reg_32(RSTR0) &= ~(1 << 27); // AV - Decoder enx_reg_32(RSTR0) &= ~(1 << 13); // Queue Manager enx_reg_32(RSTR0) &= ~(1 << 6); // Blitter / Color expander enx_reg_32(CFGR0) &= ~(1 << 1); // disable clip mode audio enx_reg_32(CFGR0) &= ~(1 << 0); // disable clip mode video }
static int avia_gt_fb_encode_fix(struct fb_fix_screeninfo *fix, const void *fb_par, struct fb_info_gen *info) { struct gtxfb_par *par = (struct gtxfb_par *)fb_par; strcpy(fix->id, "AViA eNX/GTX Framebuffer improved version"); fix->type = FB_TYPE_PACKED_PIXELS; fix->type_aux = 0; if (par->bpp < 16) fix->visual = FB_VISUAL_PSEUDOCOLOR; else fix->visual = FB_VISUAL_TRUECOLOR; fix->line_length = par->stride; fix->smem_start = (unsigned long)fb_info.pvideobase; fix->smem_len = (AVIA_GT_MEM_GV_SIZE + PAGE_SIZE) & PAGE_MASK; fix->xpanstep = 0; fix->ypanstep = 1; fix->ywrapstep = 0; if (avia_gt_chip(GTX)) { fix->accel = FB_ACCEL_CCUBE_AVIA_GTX; fix->mmio_start = (unsigned long)GTX_REG_BASE; fix->mmio_len = (GTX_REG_SIZE + PAGE_SIZE) & PAGE_MASK; } else if (avia_gt_chip(ENX)) { fix->accel = FB_ACCEL_CCUBE_AVIA_ENX; fix->mmio_start = (unsigned long)ENX_REG_BASE; fix->mmio_len = (ENX_REG_SIZE + PAGE_SIZE) & PAGE_MASK; } return 0; }
int __init avia_gt_init(void) { struct dbox_info_struct *dbox_info = (struct dbox_info_struct *)NULL; int result = (int)0; printk("avia_gt_core: $Id: avia_gt_core.c,v 1.23 2002/10/05 15:01:12 Jolt Exp $\n"); if (chip_type == -1) { printk("avia_gt_core: autodetecting chip type... "); dbox_get_info_ptr(&dbox_info); if (dbox_info->enxID != -1) { chip_type = AVIA_GT_CHIP_TYPE_ENX; printk("AViA eNX found\n"); } else if (dbox_info->gtxID != -1) { chip_type = AVIA_GT_CHIP_TYPE_GTX; printk("AViA GTX found\n"); } else { printk("no supported chip type found\n"); } } if ((chip_type != AVIA_GT_CHIP_TYPE_ENX) && (chip_type != AVIA_GT_CHIP_TYPE_GTX)) { printk("avia_gt_core: Unsupported chip type (gt_info->chip_type = %d)\n", gt_info->chip_type); return -EIO; } memset(gt_isr_proc_list, 0, sizeof(gt_isr_proc_list)); gt_info = kmalloc(sizeof(gt_info), GFP_KERNEL); if (!gt_info) { printk(KERN_ERR "avia_gt_core: Could not allocate info memory!\n"); avia_gt_exit(); return -1; } gt_info->chip_type = chip_type; init_state = 1; if (avia_gt_chip(ENX)) gt_info->reg_addr = (unsigned char *)ioremap(ENX_REG_BASE, ENX_REG_SIZE); else if (avia_gt_chip(GTX)) gt_info->reg_addr = (unsigned char *)ioremap(GTX_REG_BASE, GTX_REG_SIZE); if (!gt_info->reg_addr) { printk(KERN_ERR "avia_gt_core: Failed to remap register space.\n"); return -1; } init_state = 2; if (avia_gt_chip(ENX)) gt_info->mem_addr = (unsigned char*)ioremap(ENX_MEM_BASE, ENX_MEM_SIZE); else if (avia_gt_chip(GTX)) gt_info->mem_addr = (unsigned char*)ioremap(GTX_MEM_BASE, GTX_MEM_SIZE); if (!gt_info->mem_addr) { printk(KERN_ERR "avia_gt_core: Failed to remap memory space.\n"); avia_gt_exit(); return -1; } init_state = 3; if (avia_gt_chip(ENX)) result = request_8xxirq(ENX_INTERRUPT, avia_gt_irq_handler, 0, "avia_gt", 0); else if (avia_gt_chip(GTX)) result = request_8xxirq(GTX_INTERRUPT, avia_gt_irq_handler, 0, "avia_gt", 0); if (result) { printk(KERN_ERR "avia_gt_core: Could not allocate IRQ!\n"); avia_gt_exit(); return -1; } init_state = 4; if (avia_gt_chip(ENX)) avia_gt_enx_init(); else if (avia_gt_chip(GTX)) avia_gt_gtx_init(); init_state = 5; #if (!defined(MODULE)) || (defined(MODULE) && !defined(STANDALONE)) if (avia_gt_accel_init()) { avia_gt_exit(); return -1; } init_state = 6; if (avia_gt_dmx_init()) { avia_gt_exit(); return -1; } init_state = 7; if (avia_gt_gv_init()) { avia_gt_exit(); return -1; } init_state = 8; if (avia_gt_pcm_init()) { avia_gt_exit(); return -1; } init_state = 9; if (avia_gt_capture_init()) { avia_gt_exit(); return -1; } init_state = 10; if (avia_gt_pig_init()) { avia_gt_exit(); return -1; } init_state = 11; if (avia_gt_ir_init()) { avia_gt_exit(); return -1; } init_state = 12; if (avia_gt_vbi_init()) { avia_gt_exit(); return -1; } avia_gt_vbi_start(); init_state = 13; #endif printk(KERN_NOTICE "avia_gt_core: Loaded AViA eNX/GTX driver\n"); return 0; }