ATI Mach64 VT2

http://www.jp.netbsd.org/ja/JP/ml/port-powerpc-ja/200108/msg00000.html という話があって
linux/drivers
http://cobra.digital-impact.ch/cgi-bin/cvsweb.cgi/cobra/linux/drivers/
controlfb.c
http://cobra.digital-impact.ch/cgi-bin/cvsweb.cgi/cobra/linux/drivers/video/controlfb.c
linux 2.4.5 src imported
http://cobra.digital-impact.ch/cgi-bin/cvsweb.cgi/cobra/linux/drivers/video/atyfb.c
XFree86 ati mach64
http://cvsweb.xfree86.org/cvsweb/xc/programs/Xserver/hw/xfree86/drivers/ati/atimach64.c
XFree86 atichip.c
http://cvsweb.xfree86.org/cvsweb/xc/programs/Xserver/hw/xfree86/drivers/ati/atichip.c
linux-fbdev.org
http://www.linux-fbdev.org/
Frame Buffer Device
http://gtf.org/garzik/video/framebuffer.html
makoto@u  9:56:26/020208(~/macppc/controlfb)> grep out_le32 *
        out_le32(CNTRL_REG(p,start_addr),
        out_le32(CNTRL_REG(p,ctrl), ctrl);
        out_le32(CNTRL_REG(p,ctrl), 0x400 | par->ctrl);
                out_le32(&rp->r, r->regs[i]);
        out_le32(CNTRL_REG(p,pitch), par->pitch);
        out_le32(CNTRL_REG(p,mode), r->mode);
        out_le32(CNTRL_REG(p,vram_attr), p->vram_attr);
        out_le32(CNTRL_REG(p,start_addr), par->yoffset * par->pitch
        out_le32(CNTRL_REG(p,rfrcnt), 0x1e5);
        out_le32(CNTRL_REG(p,intr_ena), 0);
        out_le32(CNTRL_REG(p,ctrl), par->ctrl);
        out_le32(CNTRL_REG(p,vram_attr), 0x31);
        out_le32(CNTRL_REG(p,vram_attr), 0x39);
        out_le32(CNTRL_REG(p,mon_sense), 7);    /* drive all lines high */
        out_le32(CNTRL_REG(p,mon_sense), 077);  /* turn off drivers */
        out_le32(CNTRL_REG(p,mon_sense), 033);  /* drive A low */
        out_le32(CNTRL_REG(p,mon_sense), 055);  /* drive B low */
        out_le32(CNTRL_REG(p,mon_sense), 066);  /* drive C low */
        out_le32(CNTRL_REG(p,mon_sense), 077);  /* turn off drivers */
makoto@u  9:56:28/020208(~/macppc/controlfb)> 
extern inline void out_le32(volatile unsigned *addr, int val)
{
        __asm__ __volatile__("stwbrx %1,0,%2; eieio" : "=m" (*addr) :
                             "r" (val), "r" (addr));
}
struct fb_info_control {
        struct fb_info                  info;
        struct display                  display;
        struct fb_par_control           par;
        struct {
                __u8 red, green, blue;
        }                       palette[256];
        
        struct cmap_regs        *cmap_regs;
        unsigned long           cmap_regs_phys;
        
        struct control_regs     *control_regs;
        unsigned long           control_regs_phys;
        unsigned long           control_regs_size;
        
        __u8                    *frame_buffer;
        unsigned long           frame_buffer_phys;
        unsigned long           fb_orig_base;
        unsigned long           fb_orig_size;

        int                     control_use_bank2;
        unsigned long           total_vram;
        unsigned char           vram_attr;
        union {
#ifdef FBCON_HAS_CFB16
                u16 cfb16[16];
#endif
#ifdef FBCON_HAS_CFB32
                u32 cfb32[16];
#endif
        } fbcon_cmap;
};
/* control register access macro */
#define CNTRL_REG(INFO,REG) (&(((INFO)->control_regs-> ## REG).r))
Last Update
19:52:48 03/12/08
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Apache/2.0.65 (Unix) mod_ssl/2.0.65 OpenSSL/1.0.1g DAV/2 PHP/5.4.26
Count.cgi
(since 2002/02/08)