This list is closed, nobody may subscribe to it.
2004 |
Jan
(53) |
Feb
(78) |
Mar
(34) |
Apr
(26) |
May
(25) |
Jun
(34) |
Jul
(16) |
Aug
(16) |
Sep
(2) |
Oct
(58) |
Nov
(13) |
Dec
(32) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(62) |
Feb
(4) |
Mar
(40) |
Apr
(9) |
May
(13) |
Jun
(26) |
Jul
(32) |
Aug
(24) |
Sep
(18) |
Oct
(18) |
Nov
(14) |
Dec
|
2006 |
Jan
(15) |
Feb
(2) |
Mar
(23) |
Apr
(2) |
May
(2) |
Jun
(13) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2007 |
Jan
(1) |
Feb
(45) |
Mar
|
Apr
(13) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
(31) |
Dec
(5) |
2008 |
Jan
(6) |
Feb
(34) |
Mar
(113) |
Apr
(40) |
May
(19) |
Jun
(5) |
Jul
(41) |
Aug
(13) |
Sep
(53) |
Oct
(4) |
Nov
(53) |
Dec
|
2009 |
Jan
(1) |
Feb
(29) |
Mar
(66) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(163) |
Nov
|
Dec
(91) |
From: <mi...@pr...> - 2004-01-31 02:57:01
|
Update of /cvsroot/gc-linux/linux/arch/ppc/configs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29221/arch/ppc/configs Modified Files: gamecube_defconfig Log Message: added missing dvd lid demo driver config option Index: gamecube_defconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/ppc/configs/gamecube_defconfig,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- gamecube_defconfig 31 Jan 2004 02:49:14 -0000 1.7 +++ gamecube_defconfig 31 Jan 2004 02:55:23 -0000 1.8 @@ -94,6 +94,7 @@ # CONFIG_TQM8260 is not set CONFIG_GAMECUBE=y CONFIG_GAMECUBE_RESET_SWITCH=y +CONFIG_GAMECUBE_DVD_COVER=y # CONFIG_SMP is not set # CONFIG_GAMECUBE_CONSOLE is not set # CONFIG_PREEMPT is not set |
From: <mi...@pr...> - 2004-01-31 02:50:52
|
Update of /cvsroot/gc-linux/linux/arch/ppc/configs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23858/arch/ppc/configs Modified Files: gamecube_defconfig Log Message: ip=y, gc-net=y Index: gamecube_defconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/ppc/configs/gamecube_defconfig,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- gamecube_defconfig 30 Jan 2004 14:59:15 -0000 1.6 +++ gamecube_defconfig 31 Jan 2004 02:49:14 -0000 1.7 @@ -94,7 +94,6 @@ # CONFIG_TQM8260 is not set CONFIG_GAMECUBE=y CONFIG_GAMECUBE_RESET_SWITCH=y -CONFIG_GAMECUBE_DVD_COVER=y # CONFIG_SMP is not set # CONFIG_GAMECUBE_CONSOLE is not set # CONFIG_PREEMPT is not set @@ -103,7 +102,7 @@ CONFIG_BINFMT_ELF=y CONFIG_BINFMT_MISC=m CONFIG_CMDLINE_BOOL=y -CONFIG_CMDLINE="root=/dev/ram0 video=gamecubefb" +CONFIG_CMDLINE="root=/dev/ram0 video=gamecubefb ip=192.168.0.47" # # Bus options @@ -158,6 +157,7 @@ # CONFIG_BLK_DEV_UMEM is not set CONFIG_BLK_DEV_LOOP=y # CONFIG_BLK_DEV_CRYPTOLOOP is not set +# CONFIG_BLK_DEV_NBD is not set CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_SIZE=4096 CONFIG_BLK_DEV_INITRD=y @@ -195,7 +195,130 @@ # # Networking support # -# CONFIG_NET is not set +CONFIG_NET=y + +# +# Networking options +# +# CONFIG_PACKET is not set +# CONFIG_NETLINK_DEV is not set +CONFIG_UNIX=y +# CONFIG_NET_KEY is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_IPV6 is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_NETFILTER is not set + +# +# SCTP Configuration (EXPERIMENTAL) +# +CONFIG_IPV6_SCTP__=y +# CONFIG_IP_SCTP is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_LLC2 is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_MII is not set +CONFIG_GAMECUBE_NET=y +# CONFIG_OAKNET is not set +# CONFIG_HAPPYMEAL is not set +# CONFIG_SUNGEM is not set +# CONFIG_NET_VENDOR_3COM is not set + +# +# Tulip family network device support +# +# CONFIG_NET_TULIP is not set +# CONFIG_HP100 is not set +# CONFIG_NET_PCI is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_E1000 is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_R8169 is not set +# CONFIG_SIS190 is not set +# CONFIG_SK98LIN is not set +# CONFIG_TIGON3 is not set + +# +# Ethernet (10000 Mbit) +# +# CONFIG_IXGB is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set # # Amateur Radio support @@ -203,8 +326,19 @@ # CONFIG_HAMRADIO is not set # +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# Bluetooth support +# +# CONFIG_BT is not set + +# # ISDN subsystem # +# CONFIG_ISDN_BOOL is not set # # Graphics support @@ -388,6 +522,7 @@ # # Digital Video Broadcasting Devices # +# CONFIG_DVB is not set # # File systems @@ -452,6 +587,19 @@ # CONFIG_UFS_FS is not set # +# Network File Systems +# +# CONFIG_NFS_FS is not set +# CONFIG_NFSD is not set +# CONFIG_EXPORTFS is not set +# CONFIG_SMB_FS is not set +# CONFIG_CIFS is not set +# CONFIG_NCP_FS is not set +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +# CONFIG_AFS_FS is not set + +# # Partition Types # CONFIG_PARTITION_ADVANCED=y |
From: <mi...@pr...> - 2004-01-31 02:48:46
|
Update of /cvsroot/gc-linux/linux/drivers/net In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20928/drivers/net Added Files: Kconfig Makefile exi.h gc-net.c Log Message: network driver. prints messages when pinged. orginal code by tmbinc, linux driver by ionic, debugging by ionic, tmbinc, groepaz, costis, mist. --- NEW FILE: Kconfig --- # # Network device configuration # config NETDEVICES depends on NET bool "Network device support" ---help--- You can say N here if you don't intend to connect your Linux box to any other computer at all. You'll have to say Y if your computer contains a network card that you want to use under Linux. If you are going to run SLIP or PPP over telephone line or null modem cable you need say Y here. Connecting two machines with parallel ports using PLIP needs this, as well as AX.25/KISS for sending Internet traffic over amateur radio links. See also "The Linux Network Administrator's Guide" by Olaf Kirch and [...2417 lines suppressed...] <file:Documentation/networking/shaper.txt> for more information. An alternative to this traffic shaper is the experimental Class-Based Queueing (CBQ) scheduling support which you get if you say Y to "QoS and/or fair queueing" above. To set up and configure shaper devices, you need the shapecfg program, available from <ftp://shadow.cabi.net/pub/Linux/> in the shaper package. To compile this driver as a module, choose M here: the module will be called shaper. If unsure, say N. source "drivers/net/wan/Kconfig" source "drivers/net/pcmcia/Kconfig" source "drivers/atm/Kconfig" source "drivers/s390/net/Kconfig" --- NEW FILE: Makefile --- # # Makefile for the Linux network (ethercard) device drivers. # rcpci-objs := rcpci45.o rclanmtl.o ifeq ($(CONFIG_ISDN_PPP),y) obj-$(CONFIG_ISDN) += slhc.o endif obj-$(CONFIG_E100) += e100/ obj-$(CONFIG_E1000) += e1000/ obj-$(CONFIG_IXGB) += ixgb/ obj-$(CONFIG_BONDING) += bonding/ # # link order important here # obj-$(CONFIG_PLIP) += plip.o obj-$(CONFIG_ROADRUNNER) += rrunner.o obj-$(CONFIG_HAPPYMEAL) += sunhme.o obj-$(CONFIG_SUNLANCE) += sunlance.o obj-$(CONFIG_SUNQE) += sunqe.o obj-$(CONFIG_SUNBMAC) += sunbmac.o obj-$(CONFIG_MYRI_SBUS) += myri_sbus.o obj-$(CONFIG_SUNGEM) += sungem.o sungem_phy.o obj-$(CONFIG_MACE) += mace.o obj-$(CONFIG_BMAC) += bmac.o obj-$(CONFIG_OAKNET) += oaknet.o 8390.o obj-$(CONFIG_DGRS) += dgrs.o obj-$(CONFIG_RCPCI) += rcpci.o obj-$(CONFIG_VORTEX) += 3c59x.o obj-$(CONFIG_TYPHOON) += typhoon.o obj-$(CONFIG_NE2K_PCI) += ne2k-pci.o 8390.o obj-$(CONFIG_PCNET32) += pcnet32.o obj-$(CONFIG_EEPRO100) += eepro100.o obj-$(CONFIG_TLAN) += tlan.o obj-$(CONFIG_EPIC100) += epic100.o obj-$(CONFIG_SIS190) += sis190.o obj-$(CONFIG_SIS900) += sis900.o obj-$(CONFIG_YELLOWFIN) += yellowfin.o obj-$(CONFIG_ACENIC) += acenic.o obj-$(CONFIG_VETH) += veth.o obj-$(CONFIG_NATSEMI) += natsemi.o obj-$(CONFIG_NS83820) += ns83820.o obj-$(CONFIG_STNIC) += stnic.o 8390.o obj-$(CONFIG_FEALNX) += fealnx.o obj-$(CONFIG_TIGON3) += tg3.o obj-$(CONFIG_TC35815) += tc35815.o obj-$(CONFIG_SK98LIN) += sk98lin/ obj-$(CONFIG_SKFP) += skfp/ obj-$(CONFIG_VIA_RHINE) += via-rhine.o obj-$(CONFIG_ADAPTEC_STARFIRE) += starfire.o # # end link order section # obj-$(CONFIG_MII) += mii.o obj-$(CONFIG_SUNDANCE) += sundance.o obj-$(CONFIG_HAMACHI) += hamachi.o obj-$(CONFIG_NET) += Space.o net_init.o loopback.o obj-$(CONFIG_SEEQ8005) += seeq8005.o obj-$(CONFIG_ETHERTAP) += ethertap.o obj-$(CONFIG_NET_SB1000) += sb1000.o obj-$(CONFIG_MAC8390) += mac8390.o 8390.o obj-$(CONFIG_APNE) += apne.o 8390.o obj-$(CONFIG_PCMCIA_PCNET) += 8390.o obj-$(CONFIG_SHAPER) += shaper.o obj-$(CONFIG_SK_G16) += sk_g16.o obj-$(CONFIG_HP100) += hp100.o obj-$(CONFIG_SMC9194) += smc9194.o obj-$(CONFIG_FEC) += fec.o obj-$(CONFIG_68360_ENET) += 68360enet.o obj-$(CONFIG_ARM_ETHERH) += 8390.o obj-$(CONFIG_WD80x3) += wd.o 8390.o obj-$(CONFIG_EL2) += 3c503.o 8390.o obj-$(CONFIG_NE2000) += ne.o 8390.o obj-$(CONFIG_NE2K_CBUS) += ne2k_cbus.o 8390.o obj-$(CONFIG_NE2_MCA) += ne2.o 8390.o obj-$(CONFIG_HPLAN) += hp.o 8390.o obj-$(CONFIG_HPLAN_PLUS) += hp-plus.o 8390.o obj-$(CONFIG_ULTRA) += smc-ultra.o 8390.o obj-$(CONFIG_ULTRAMCA) += smc-mca.o 8390.o obj-$(CONFIG_ULTRA32) += smc-ultra32.o 8390.o obj-$(CONFIG_E2100) += e2100.o 8390.o obj-$(CONFIG_ES3210) += es3210.o 8390.o obj-$(CONFIG_LNE390) += lne390.o 8390.o obj-$(CONFIG_NE3210) += ne3210.o 8390.o obj-$(CONFIG_NET_SB1250_MAC) += sb1250-mac.o obj-$(CONFIG_B44) += b44.o obj-$(CONFIG_PPP) += ppp_generic.o slhc.o obj-$(CONFIG_PPP_ASYNC) += ppp_async.o obj-$(CONFIG_PPP_SYNC_TTY) += ppp_synctty.o obj-$(CONFIG_PPP_DEFLATE) += ppp_deflate.o obj-$(CONFIG_PPP_BSDCOMP) += bsd_comp.o obj-$(CONFIG_PPPOE) += pppox.o pppoe.o obj-$(CONFIG_SLIP) += slip.o ifeq ($(CONFIG_SLIP_COMPRESSED),y) obj-$(CONFIG_SLIP) += slhc.o endif obj-$(CONFIG_DUMMY) += dummy.o obj-$(CONFIG_DE600) += de600.o obj-$(CONFIG_DE620) += de620.o obj-$(CONFIG_AT1500) += lance.o obj-$(CONFIG_LANCE) += lance.o obj-$(CONFIG_SUN3_82586) += sun3_82586.o obj-$(CONFIG_SUN3LANCE) += sun3lance.o obj-$(CONFIG_DEFXX) += defxx.o obj-$(CONFIG_SGISEEQ) += sgiseeq.o obj-$(CONFIG_SGI_O2MACE_ETH) += meth.o obj-$(CONFIG_AT1700) += at1700.o obj-$(CONFIG_FMV18X) += fmv18x.o obj-$(CONFIG_EL1) += 3c501.o obj-$(CONFIG_EL16) += 3c507.o obj-$(CONFIG_ELMC) += 3c523.o obj-$(CONFIG_SKMC) += sk_mca.o obj-$(CONFIG_IBMLANA) += ibmlana.o obj-$(CONFIG_ELMC_II) += 3c527.o obj-$(CONFIG_EL3) += 3c509.o obj-$(CONFIG_3C515) += 3c515.o obj-$(CONFIG_EEXPRESS) += eexpress.o obj-$(CONFIG_EEXPRESS_PRO) += eepro.o obj-$(CONFIG_8139CP) += 8139cp.o obj-$(CONFIG_8139TOO) += 8139too.o obj-$(CONFIG_ZNET) += znet.o obj-$(CONFIG_LAN_SAA9730) += saa9730.o obj-$(CONFIG_DEPCA) += depca.o obj-$(CONFIG_EWRK3) += ewrk3.o obj-$(CONFIG_ATP) += atp.o obj-$(CONFIG_NI5010) += ni5010.o obj-$(CONFIG_NI52) += ni52.o obj-$(CONFIG_NI65) += ni65.o obj-$(CONFIG_ELPLUS) += 3c505.o obj-$(CONFIG_AC3200) += ac3200.o 8390.o obj-$(CONFIG_APRICOT) += 82596.o obj-$(CONFIG_LASI_82596) += lasi_82596.o obj-$(CONFIG_MVME16x_NET) += 82596.o obj-$(CONFIG_BVME6000_NET) += 82596.o # This is also a 82596 and should probably be merged obj-$(CONFIG_LP486E) += lp486e.o obj-$(CONFIG_ETH16I) += eth16i.o obj-$(CONFIG_ZORRO8390) += zorro8390.o 8390.o obj-$(CONFIG_HPLANCE) += hplance.o 7990.o obj-$(CONFIG_MVME147_NET) += mvme147.o 7990.o obj-$(CONFIG_EQUALIZER) += eql.o obj-$(CONFIG_MIPS_JAZZ_SONIC) += jazzsonic.o obj-$(CONFIG_MIPS_GT96100ETH) += gt96100eth.o obj-$(CONFIG_MIPS_AU1X00_ENET) += au1000_eth.o obj-$(CONFIG_SGI_IOC3_ETH) += ioc3-eth.o obj-$(CONFIG_BAGETLANCE) += bagetlance.o obj-$(CONFIG_DECLANCE) += declance.o obj-$(CONFIG_ATARILANCE) += atarilance.o obj-$(CONFIG_ATARI_BIONET) += atari_bionet.o obj-$(CONFIG_ATARI_PAMSNET) += atari_pamsnet.o obj-$(CONFIG_A2065) += a2065.o obj-$(CONFIG_HYDRA) += hydra.o 8390.o obj-$(CONFIG_ARIADNE) += ariadne.o obj-$(CONFIG_CS89x0) += cs89x0.o obj-$(CONFIG_MACSONIC) += macsonic.o obj-$(CONFIG_MACMACE) += macmace.o obj-$(CONFIG_MAC89x0) += mac89x0.o obj-$(CONFIG_TUN) += tun.o obj-$(CONFIG_DL2K) += dl2k.o obj-$(CONFIG_R8169) += r8169.o obj-$(CONFIG_AMD8111_ETH) += amd8111e.o obj-$(CONFIG_GAMECUBE_NET) += gc-net.o obj-$(CONFIG_ARM) += arm/ obj-$(CONFIG_NET_FC) += fc/ obj-$(CONFIG_DEV_APPLETALK) += appletalk/ obj-$(CONFIG_TR) += tokenring/ obj-$(CONFIG_WAN) += wan/ obj-$(CONFIG_ARCNET) += arcnet/ obj-$(CONFIG_NET_PCMCIA) += pcmcia/ obj-$(CONFIG_NET_WIRELESS) += wireless/ obj-$(CONFIG_NET_TULIP) += tulip/ obj-$(CONFIG_HAMRADIO) += hamradio/ obj-$(CONFIG_IRDA) += irda/ --- NEW FILE: exi.h --- #ifndef __exi_h #define __exi_h void exi_select(int channel, int device, int freq); void exi_deselect(int channel); #define EXI_READ 0 #define EXI_WRITE 1 void exi_imm(int channel, void *data, int len, int mode, int zero); void exi_sync(int channel); void exi_imm_ex(int channel, void *data, int len, int mode); void exi_init(void); #define EXI_EVENT_IRQ 0 #define EXI_EVENT_INSERT 1 #define EXI_EVENT_TC 2 typedef void (exi_irq_handler_t)(int channel, int event, void *context); int exi_request_irq(int channel, int event, exi_irq_handler_t *handler, void *context); int exi_free_irq(int channel, int event); #endif --- NEW FILE: gc-net.c --- /* ------------------------------------------------------------------------- */ /* gc-bba.c GameCube BroadBand Adaptor Driver */ /* ------------------------------------------------------------------------- */ /* Copyright (C) 2004 Stefan Esser This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* ------------------------------------------------------------------------- */ #include <linux/module.h> #include <linux/kernel.h> #include <linux/types.h> #include <linux/fcntl.h> #include <linux/string.h> #include <linux/interrupt.h> #include <linux/ioport.h> #include <linux/in.h> #include <asm/system.h> #include <linux/errno.h> #include <linux/init.h> #include <linux/delay.h> #include <linux/inet.h> #include <linux/netdevice.h> #include <linux/etherdevice.h> #include <linux/skbuff.h> #include <asm/io.h> #include "exi.h" #define BBA_IRQ 4 #define IRQ_EXI 4 void gcif_irq_handler(int channel, int event, void *ct); /////////////////////////////////////////////////////////////////////////////////////////////////////// // must be MOVED LATER /////////////////////////////////////////////////////////////////////////////////////////////////////// /* exi_select: enable chip select, set speed */ void exi_select(int channel, int device, int freq) { volatile unsigned long *exi = (volatile unsigned long *)0xCC006800; long d; // exi_select d = exi[channel * 5]; d &= 0x405; d |= ((1<<device)<<7) | (freq << 4); exi[channel*5] = d; } /* disable chipselect */ void exi_deselect(int channel) { volatile unsigned long *exi = (volatile unsigned long *)0xCC006800; exi[channel * 5] &= 0x405; } /* dirty way for asynchronous reads */ static void *exi_last_addr; static int exi_last_len; /* mode?Read:Write len bytes to/from channel */ /* when read, data will be written back in exi_sync */ void exi_imm(int channel, void *data, int len, int mode, int zero) { volatile unsigned long *exi = (volatile unsigned long *)0xCC006800; if (mode == EXI_WRITE) exi[channel * 5 + 4] = *(unsigned long*)data; exi[channel * 5 + 3] = ((len-1)<<4)|(mode<<2)|1; if (mode == EXI_READ) { exi_last_addr = data; exi_last_len = len; } else { exi_last_addr = 0; exi_last_len = 0; } } /* Wait until transfer is done, write back data */ void exi_sync(int channel) { volatile unsigned long *exi = (volatile unsigned long *)0xCC006800; while (exi[channel * 5 + 3] & 1); if (exi_last_addr) { int i; unsigned long d; d = exi[channel * 5 + 4]; for (i=0; i<exi_last_len; ++i) ((unsigned char*)exi_last_addr)[i] = (d >> ((3-i)*8)) & 0xFF; } } /* simple wrapper for transfers > 4bytes */ void exi_imm_ex(int channel, void *data, int len, int mode) { unsigned char *d = (unsigned char*)data; while (len) { int tc = len; if (tc > 4) tc = 4; exi_imm(channel, d, tc, mode, 0); exi_sync(channel); len-=tc; d+=tc; } } static exi_irq_handler_t *exi_handler[3 * 3]; // 3 channels, 3 events static void *exi_handler_context[3 * 3]; static unsigned long exi_enable_mask[3]; void exi_refresh_enable(void) { int channel; for (channel = 0; channel < 3; ++channel) *(unsigned long*)(0xcc006800 + channel*0x14) |= 0x405; // exi_enable_mask[channel]; } static inline int have_irq(int t) { if (exi_handler[t]) { printk("CALL HANDLER\n"); exi_handler[t](t/3, t%3, exi_handler_context[t]); return 1; } else { printk("UNHANDLED EXI\n"); return 0; } } void exi_interrupt_handler(int irq, void *c) { int ch; for (ch = 0; ch < 3; ++ch) { unsigned long v = (*(unsigned long*)(0xcc006800 + ch * 0x14)); // & 0xC0F; v &= v<<1; if (v & 0x800) have_irq(ch * 3 + EXI_EVENT_INSERT); if (v & 8) have_irq(ch * 3 + EXI_EVENT_TC); if (v & 2) have_irq(ch * 3 + EXI_EVENT_IRQ); *(unsigned long*)(0xcc006800 + ch * 0x14) |= v; } } void exi_interrupt_debug_handler(int irq, void *c) { int ch; for (ch = 0; ch < 3; ++ch) { unsigned long v = (*(unsigned long*)(0xcc006800 + ch * 0x14)); // & 0xC0F; v &= v<<1; printk("ch %d c %08x\n", ch, (unsigned int)v); if (v & 0x800) if (!have_irq(ch * 3 + EXI_EVENT_INSERT)) ; // v &= ~0x800; if (v & 8) if (!have_irq(ch * 3 + EXI_EVENT_TC)) ; // v &= ~8; if (v & 2) if (!have_irq(ch * 3 + EXI_EVENT_IRQ)) ; /// v &= ~2; *(unsigned long*)(0xcc006800 + ch * 0x14) |= v; } } void exi_init() { printk("EXI: init interrupts\n"); //request_irq(IRQ_EXI, exi_interrupt_handler, 0); //request_debug_irq(IRQ_EXI, exi_interrupt_debug_handler, 0); *(unsigned long*)(0xcc006814) |= 3<<10; // enable&clear irq for insertion } int exi_request_irq(int channel, int event, exi_irq_handler_t *handler, void *context) { if (exi_handler[channel * 3 + event]) { printk("EXI: irq %d:%d already used!\n", channel, event); return -1; } exi_handler[channel * 3 + event] = handler; exi_handler_context[channel * 3 + event] = context; switch (event) { case EXI_EVENT_TC: *(unsigned long*)(0xcc006800 + channel*0x14) |= 3<<2; // enable&clear irq exi_enable_mask[channel] |= 1 << 2; break; case EXI_EVENT_INSERT: *(unsigned long*)(0xcc006800 + channel*0x14) |= 3<<10; exi_enable_mask[channel] |= 1 << 10; break; case EXI_EVENT_IRQ: *(unsigned long*)(0xcc006800 + channel*0x14) |= 3<<0; exi_enable_mask[channel] |= 1 << 0; break; } return 0; } int exi_free_irq(int channel, int event) { exi_handler[channel * 3 + event] = 0; switch (event) { case EXI_EVENT_TC: *(unsigned long*)(0xcc006800 + channel*0x14) &= ~(3<<2); // enable&clear irq exi_enable_mask[channel] &= ~(1 << 2); break; case EXI_EVENT_INSERT: *(unsigned long*)(0xcc006800 + channel*0x14) &= ~(3<<10); exi_enable_mask[channel] &= ~(1 << 10); break; case EXI_EVENT_IRQ: *(unsigned long*)(0xcc006800 + channel*0x14) &= ~(3<<0); exi_enable_mask[channel] &= ~(1 << 0); break; } return 0; } /////////////////////////////////////////////////////////////////////////////////////////////////////// unsigned char eth_inb(int reg) { unsigned long val; unsigned char res; val = (reg << 8) | 0x80000000; exi_select(0, 2, 5); exi_imm(0, &val, 4, EXI_WRITE, 0); exi_sync(0); exi_imm(0, &res, 1, EXI_READ, 0); exi_sync(0); exi_deselect(0); return res; } unsigned char eth_exi_inb_slow(int reg) { unsigned short val; unsigned char res; val = (reg << 8); exi_select(0, 2, 5); exi_imm(0, &val, 2, EXI_WRITE, 0); exi_sync(0); exi_imm(0, &res, 1, EXI_READ, 0); exi_sync(0); udelay(200); exi_deselect(0); return res; } void eth_outb(int reg, unsigned char byte) { unsigned long val; val = (reg << 8)|0xC0000000; exi_select(0, 2, 5); exi_imm(0, &val, 4, EXI_WRITE, 0); exi_sync(0); exi_imm(0, &byte, 1, EXI_WRITE, 0); exi_sync(0); exi_deselect(0); } void eth_exi_outb(int reg, unsigned char byte) { unsigned short val; val = (reg << 8)|0x4000; exi_select(0, 2, 5); exi_imm(0, &val, 2, EXI_WRITE, 0); exi_sync(0); exi_imm(0, &byte, 1, EXI_WRITE, 0); exi_sync(0); exi_deselect(0); } unsigned char eth_exi_inb(int reg) { unsigned short val; unsigned char res; val = reg << 8; exi_select(0, 2, 5); exi_imm(0, &val, 2, EXI_WRITE, 0); exi_sync(0); exi_imm(0, &res, 1, EXI_READ, 0); exi_sync(0); exi_deselect(0); return res; } void eth_exi_ins(int reg, void *res, int len) { unsigned short val; val = reg << 8; exi_select(0, 2, 5); exi_imm(0, &val, 2, EXI_WRITE, 0); exi_sync(0); exi_imm_ex(0, res, len, EXI_READ); exi_sync(0); exi_deselect(0); } void eth_exi_outs(int reg, void *res, int len) { unsigned short val; val = (reg << 8)|0x4000; exi_select(0, 2, 5); exi_imm(0, &val, 2, EXI_WRITE, 0); exi_sync(0); exi_imm_ex(0, res, len, EXI_WRITE); exi_sync(0); exi_deselect(0); } void eth_ins(int reg, void *res, int len) { unsigned long val; val = (reg << 8)|0x80000000; exi_select(0, 2, 5); exi_imm(0, &val, 4, EXI_WRITE, 0); exi_sync(0); exi_imm_ex(0, res, len, EXI_READ); exi_sync(0); exi_deselect(0); } void eth_outs(int reg, void *res, int len) { unsigned long val; val = (reg << 8)|0xC0000000; exi_select(0, 2, 5); exi_imm(0, &val, 4, EXI_WRITE, 0); exi_sync(0); exi_imm_ex(0, res, len, EXI_WRITE); exi_sync(0); exi_deselect(0); } static spinlock_t gc_bba_lock; #define RUNT 60 /* Too small Ethernet packet */ #define ETH_LEN 6 /* * D-Link driver variables: */ static volatile int rx_page; #define TX_PAGES 2 static volatile int tx_fifo[TX_PAGES]; static volatile int tx_fifo_in; static volatile int tx_fifo_out; static volatile int free_tx_pages = TX_PAGES; static int was_down; static irqreturn_t gc_bba_interrupt(int irq, void *dev_id, struct pt_regs * regs); static int adapter_init(struct net_device *dev); /* static inline u8 de600_read_status(struct net_device *dev) { u8 status; outb_p(STATUS, DATA_PORT); status = inb(STATUS_PORT); outb_p(NULL_COMMAND | HI_NIBBLE, DATA_PORT); return status; } static inline u8 de600_read_byte(unsigned char type, struct net_device *dev) { // dev used by macros u8 lo; outb_p((type), DATA_PORT); lo = ((unsigned char)inb(STATUS_PORT)) >> 4; outb_p((type) | HI_NIBBLE, DATA_PORT); return ((unsigned char)inb(STATUS_PORT) & (unsigned char)0xf0) | lo; } */ /* * Open/initialize the board. This is called (in the current kernel) * after booting when 'ifconfig <dev->name> $IP_ADDR' is run (in rc.inet1). * * This routine should set everything up anew at each open, even * registers that "should" only need to be set once at boot, so that * there is a non-reboot way to recover if something goes wrong. */ static int gc_bba_open(struct net_device *dev) { unsigned long flags; printk("gc_bba_open\n"); int ret = request_irq(BBA_IRQ, gc_bba_interrupt, 0, dev->name, dev); if (ret) { printk(KERN_ERR "%s: unable to get IRQ %d\n", dev->name, BBA_IRQ); return ret; } spin_lock_irqsave(&gc_bba_lock, flags); ret = adapter_init(dev); spin_unlock_irqrestore(&gc_bba_lock, flags); return ret; } /* * The inverse routine to de600_open(). */ static int gc_bba_close(struct net_device *dev) { printk("gc_bba_close\n"); // //select_nic(); rx_page = 0; // de600_put_command(RESET); // de600_put_command(STOP_RESET); // de600_put_command(0); // //select_prn(); free_irq(BBA_IRQ, dev); return 0; } static struct net_device_stats *get_stats(struct net_device *dev) { return (struct net_device_stats *)(dev->priv); } static inline void trigger_interrupt(struct net_device *dev) { // de600_put_command(FLIP_IRQ); // //select_prn(); // DE600_SLOW_DOWN; // //select_nic(); // de600_put_command(0); } /* * Copy a buffer to the adapter transmit page memory. * Start sending. */ static int gc_bba_start_xmit(struct sk_buff *skb, struct net_device *dev) { unsigned long flags; int transmit_from; int len; int tickssofar; u8 *buffer = skb->data; int i; if (free_tx_pages <= 0) { /* Do timeouts, to avoid hangs. */ tickssofar = jiffies - dev->trans_start; if (tickssofar < 5) return 1; /* else */ printk(KERN_WARNING "%s: transmit timed out (%d), %s?\n", dev->name, tickssofar, "network cable problem"); /* Restart the adapter. */ spin_lock_irqsave(&gc_bba_lock, flags); if (adapter_init(dev)) { spin_unlock_irqrestore(&gc_bba_lock, flags); return 1; } spin_unlock_irqrestore(&gc_bba_lock, flags); } /* Start real output */ printk("gc_bba_start_xmit:len=%d, page %d/%d\n", skb->len, tx_fifo_in, free_tx_pages); if ((len = skb->len) < RUNT) len = RUNT; spin_lock_irqsave(&gc_bba_lock, flags); spin_unlock_irqrestore(&gc_bba_lock, flags); dev_kfree_skb(skb); return 0; } char buffer[3500]; static char *gc_input(void *v) { // struct gcif *gcif=(struct gcif*)netif->state; char *p, *q; unsigned short len, p_read, p_write; int i; int ptr; p_write = eth_inb(0x16); p_write |= eth_inb(0x17) << 8; p_read = eth_inb(0x18); p_read |= eth_inb(0x19) << 8; // printk("w %x r %x\n", p_write, p_read); if (p_read == p_write) { printk("nothing left.\n"); return 0; } unsigned char descr[4]; eth_outb(0x3a, 2); if (eth_inb(0x3a) & 2) { printk("NO DATA AVAILABLE!\n"); return 0; } len=0; descr[0] = eth_inb((p_read<<8) + 0); descr[1] = eth_inb((p_read<<8) + 1); descr[2] = eth_inb((p_read<<8) + 2); descr[3] = eth_inb((p_read<<8) + 3); len = (descr[1] >> 4) | (descr[2]<<4); ptr = (p_read << 8) + 4; for (i=0; i<len; ++i) { if (ptr == 0x1000) // wrap around ptr = 0x100; buffer[i]=eth_inb(ptr++); // skip descriptor } eth_outb(0x18, descr[0] & 0xFF); eth_outb(0x19, descr[1] & 0xFF); // i=0; // p = pbuf_alloc(PBUF_LINK, len, PBUF_POOL); // if(p != NULL) { /* We iterate over the pbuf chain until we have read the entire packet into the pbuf. */ // for(q = p; q != NULL; q = q->next) { /* Read enough bytes to fill this pbuf in the chain. The avaliable data in the pbuf is given by the q->len variable. */ /* read data into(q->payload, q->len); */ // memcpy(q->payload, buffer+i, q->len); // i+=q->len; // exi_imm_ex(0, q->payload, q->len, EXI_READ); // } // } return p; } static void inline gcif_service(void *netif) { // struct gcif *gcif; // gcif = netif->state; unsigned short p_read, p_write; int status = eth_inb(9) & eth_inb(8); printk("gcif_service: status %08x\n", status); if (!status) printk("?? GC irq but no irq ??\n"); if (status & 2) { while (1) { p_write = eth_inb(0x16); p_write |= eth_inb(0x17) << 8; p_read = eth_inb(0x18); p_read |= eth_inb(0x19) << 8; if (p_write == p_read) break; gc_input(NULL); printk("Break\n"); break; } eth_outb(9, 2); } if (status & 8) { printk("receive error :(\n"); eth_outb(9, 8); } if (status & ~(8|2)) { printk("status %02x\n", status); eth_outb(9, ~(8|2)); } } /* * The typical workload of the driver: * Handle the network interface interrupts. */ static irqreturn_t gc_bba_interrupt(int irq, void *dev_id, struct pt_regs * regs) { struct net_device *dev = dev_id; u8 irq_status; int retrig = 0; int boguscount = 0; /* This might just as well be deleted now, no crummy drivers present :-) */ if ((dev == NULL) || (BBA_IRQ != irq)) { printk(KERN_ERR "%s: bogus interrupt %d\n", dev?dev->name:"GC_BBA", irq); return IRQ_NONE; } spin_lock(&gc_bba_lock); int ch; for (ch = 0; ch < 3; ++ch) { unsigned long v = (*(unsigned long*)(0xcc006800 + ch * 0x14)); // & 0xC0F; v &= v<<1; if (v & 0x800) have_irq(ch * 3 + EXI_EVENT_INSERT); if (v & 8) have_irq(ch * 3 + EXI_EVENT_TC); if (v & 2) have_irq(ch * 3 + EXI_EVENT_IRQ); *(unsigned long*)(0xcc006800 + ch * 0x14) |= v; } if (retrig) trigger_interrupt(dev); spin_unlock(&gc_bba_lock); return IRQ_HANDLED; // struct netif *netif = (struct netif*)ct; int s; eth_exi_outb(2, 0); s = eth_exi_inb(3); if (s & 0x80) { eth_exi_outb(3, 0x80); gcif_service(NULL); eth_exi_outb(2, 0xF8); return; } if (s & 0x40) { printk("GCIF - EXI - 0x40!\n"); eth_exi_outb(3, 0x40); eth_exi_outb(2, 0xF8); return; } if (s & 0x20) { printk("GCIF - EXI - CMDERR!\n"); eth_exi_outb(3, 0x20); eth_exi_outb(2, 0xF8); return; } if (s & 0x10) { printk("GCIF - EXI - patchtru!\n"); eth_exi_outb(3, 0x10); eth_exi_outb(2, 0xF8); return; } if (s & 0x08) { printk("GCIF - EXI - HASH function\n"); eth_exi_outb(3, 0x08); eth_exi_outb(2, 0xF8); return; } printk("GCIF - EXI - ?? %02x\n", s); eth_exi_outb(2, 0xF8); if (retrig) trigger_interrupt(dev); spin_unlock(&gc_bba_lock); return IRQ_HANDLED; } int __init gc_bba_probe(struct net_device *dev) { int i; static struct net_device_stats gc_bba_netstats; short s=0; long l; /*dev->priv = kmalloc(sizeof(struct net_device_stats), GFP_KERNEL);*/ printk("gc_bba_probe\n"); SET_MODULE_OWNER(dev); printk(KERN_INFO "%s: Nintendo GameCube broadband adapter", dev->name); /* probe for adapter */ rx_page = 0; //select_nic(); exi_select(0, 2, 5); exi_imm_ex(0, &s, 2, EXI_WRITE); exi_imm_ex(0, &l, 4, EXI_READ); exi_deselect(0); printk(": %u\n", l); if (l != 0x4020200) { printk("BBA not found"); return -ENODEV; } printk("initializing BBA...\n"); eth_outb(0x60, 0); // unknown udelay(10000); eth_exi_inb_slow(0xF); udelay(10000); eth_outb(0, 1); // reset udelay(10000); eth_outb(0, 0); // /reset eth_exi_outs(4, "\xd1\x07\x75\x75", 2); eth_exi_outb(5, 0x4e); printk("BBA %02x %02x %02x %02x %02x %02x %02x %02x\n", eth_exi_inb(0), eth_exi_inb(1), eth_exi_inb(2), eth_exi_inb(3), eth_exi_inb(4), eth_exi_inb(5), eth_exi_inb(6), eth_exi_inb(7)); eth_outb(0x5b, eth_inb(0x5b)&~(1<<7)); eth_outb(0x5e, 1); eth_outb(0x5c, eth_inb(0x5c)|4); eth_outb(1, 0x11); // eth_outb(1, 0); eth_outb(0x50, 0x80); udelay(10000); // recvinit eth_outb(0xA, 0x1); eth_outb(0xB, 0x0); eth_outb(0x16, 0x1); eth_outb(0x17, 0x0); eth_outb(0x18, 0x1); eth_outb(0x19, 0x0); eth_outb(0x1a, 0xF); eth_outb(0x1b, 0); eth_outb(1, (eth_inb(1) & 0xFE) | 0x12); eth_outb(0, 8); eth_outb(0x32, 8); eth_ins(0x20, dev->dev_addr, ETH_LEN); printk("MAC ADDRESS %02x:%02x:%02x:%02x:%02x:%02x\n", dev->dev_addr[0], dev->dev_addr[1], dev->dev_addr[2], dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5]); /* Get the adapter ethernet address from the ROM */ for (i = 0; i < ETH_ALEN; i++) { dev->broadcast[i] = 0xff; } eth_exi_outb(0x2, 0xFF); eth_exi_outb(0x3, 0xFF); eth_outb(8, 0xFF); // enable all IRQs eth_outb(9, 0xFF); // clear all irqs printk("after all: irq mask %x %x\n", eth_inb(8), eth_inb(9)); /* Initialize the device structure. */ dev->priv = &gc_bba_netstats; memset(dev->priv, 0, sizeof(struct net_device_stats)); dev->get_stats = get_stats; dev->open = gc_bba_open; dev->stop = gc_bba_close; dev->hard_start_xmit = &gc_bba_start_xmit; ether_setup(dev); dev->flags&=~IFF_MULTICAST; return 0; } static int adapter_init(struct net_device *dev) { int i; //select_nic(); rx_page = 0; /* used by RESET */ printk("initializing BBA...\n"); eth_outb(0x60, 0); // unknown udelay(10000); eth_exi_inb_slow(0xF); udelay(10000); eth_outb(0, 1); // reset udelay(10000); eth_outb(0, 0); // /reset eth_exi_outs(4, "\xd1\x07\x75\x75", 2); eth_exi_outb(5, 0x4e); printk("BBA %02x %02x %02x %02x %02x %02x %02x %02x\n", eth_exi_inb(0), eth_exi_inb(1), eth_exi_inb(2), eth_exi_inb(3), eth_exi_inb(4), eth_exi_inb(5), eth_exi_inb(6), eth_exi_inb(7)); eth_outb(0x5b, eth_inb(0x5b)&~(1<<7)); eth_outb(0x5e, 1); eth_outb(0x5c, eth_inb(0x5c)|4); eth_outb(1, 0x11); // eth_outb(1, 0); eth_outb(0x50, 0x80); udelay(10000); // recvinit eth_outb(0xA, 0x1); eth_outb(0xB, 0x0); eth_outb(0x16, 0x1); eth_outb(0x17, 0x0); eth_outb(0x18, 0x1); eth_outb(0x19, 0x0); eth_outb(0x1a, 0xF); eth_outb(0x1b, 0); eth_outb(1, (eth_inb(1) & 0xFE) | 0x12); eth_outb(0, 8); eth_outb(0x32, 8); eth_ins(0x20, dev->dev_addr, ETH_LEN); printk("MAC ADDRESS %02x:%02x:%02x:%02x:%02x:%02x\n", dev->dev_addr[0], dev->dev_addr[1], dev->dev_addr[2], dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5]); /* Get the adapter ethernet address from the ROM */ for (i = 0; i < ETH_ALEN; i++) { dev->broadcast[i] = 0xff; } // eth_ins(0x20, dev->ethaddr->addr, 6); // printk("MAC ADDRESS %02x:%02x:%02x:%02x:%02x:%02x\n", // gcif->ethaddr->addr[0], gcif->ethaddr->addr[1], gcif->ethaddr->addr[2], // gcif->ethaddr->addr[3], gcif->ethaddr->addr[4], gcif->ethaddr->addr[5]); exi_request_irq(2, EXI_EVENT_IRQ, gcif_irq_handler, NULL); eth_exi_outb(0x2, 0xFF); eth_exi_outb(0x3, 0xFF); eth_outb(8, 0xFF); // enable all IRQs eth_outb(9, 0xFF); // clear all irqs printk("after all: irq mask %x %x\n", eth_inb(8), eth_inb(9)); netif_start_queue(dev); return 0; /* OK */ } static struct net_device gc_bba_dev; static int __init gc_bba_init(void) { printk("gc_bba_init\n"); spin_lock_init(&gc_bba_lock); gc_bba_dev.init = gc_bba_probe; if (register_netdev(&gc_bba_dev) != 0) return -EIO; return 0; } static void __exit gc_bba_exit(void) { printk("gc_bba_exit\n"); unregister_netdev(&gc_bba_dev); } void gcif_irq_handler(int channel, int event, void *ct) { // struct netif *netif = (struct netif*)ct; int s; eth_exi_outb(2, 0); s = eth_exi_inb(3); if (s & 0x80) { eth_exi_outb(3, 0x80); gcif_service(NULL); eth_exi_outb(2, 0xF8); return; } if (s & 0x40) { printk("GCIF - EXI - 0x40!\n"); eth_exi_outb(3, 0x40); eth_exi_outb(2, 0xF8); return; } if (s & 0x20) { printk("GCIF - EXI - CMDERR!\n"); eth_exi_outb(3, 0x20); eth_exi_outb(2, 0xF8); return; } if (s & 0x10) { printk("GCIF - EXI - patchtru!\n"); eth_exi_outb(3, 0x10); eth_exi_outb(2, 0xF8); return; } if (s & 0x08) { printk("GCIF - EXI - HASH function\n"); eth_exi_outb(3, 0x08); eth_exi_outb(2, 0xF8); return; } printk("GCIF - EXI - ?? %02x\n", s); eth_exi_outb(2, 0xF8); } module_init(gc_bba_init); module_exit(gc_bba_exit); MODULE_AUTHOR("Stefan Esser <se...@no...>"); MODULE_DESCRIPTION("Nintendo GameCube BBA Ethernet driver"); MODULE_LICENSE("GPL"); |
From: <mi...@pr...> - 2004-01-31 02:46:24
|
Update of /cvsroot/gc-linux/linux/drivers/net In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20121/drivers/net Log Message: Directory /cvsroot/gc-linux/linux/drivers/net added to the repository |
From: <mi...@pr...> - 2004-01-31 02:31:55
|
Update of /cvsroot/gc-linux/htdocs/xml/en In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16265/xml/en Modified Files: download.xml news.xml yagcd.xml Log Message: ... Index: download.xml =================================================================== RCS file: /cvsroot/gc-linux/htdocs/xml/en/download.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- download.xml 27 Jan 2004 17:52:38 -0000 1.3 +++ download.xml 29 Jan 2004 01:21:11 -0000 1.4 @@ -9,6 +9,11 @@ <p>There is no working Linux for the GameCube yet - but there is the "linuxpreview" application.</p> + <h2>Current kernel</h2> + + <p>This link always points to the latest kernel .DOL. It should at least show the kernel messages on the GameCube screen.</p> + + <p><a href="../down/zImage.dol">zImage.dol</a></p> <h2>Linux prealpha</h2> <p>This Linux 2.6.0 kernel boots up to "Decompressing the kernel...done\nNow booting the kernel", and has screen output. It works on the real GameCube, as well as in the dolwin emulator.</p> Index: news.xml =================================================================== RCS file: /cvsroot/gc-linux/htdocs/xml/en/news.xml,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- news.xml 27 Jan 2004 17:52:38 -0000 1.5 +++ news.xml 29 Jan 2004 01:21:13 -0000 1.6 @@ -2,6 +2,11 @@ <?xml-stylesheet href="news.xsl" type="text/xsl"?> <news> <item> + <date>28 January 2004</date> + <title>Working framebuffer code</title> + <text>The framebuffer code in CVS is now functional. Tux sits on the upper left, and kernel messages are scrolling on the screen. Because of the missing color space conversion, colors are wrong at the moment.</text> + </item> + <item> <date>27 January 2004</date> <title>DOL plugin for IDA</title> <text>Stefan "ionic" Esser contributed a .DOL file format plugin for developers who have a PPC-enabled IDA. (<a href="docs/download.html">Download</a>)</text> Index: yagcd.xml =================================================================== RCS file: /cvsroot/gc-linux/htdocs/xml/en/yagcd.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- yagcd.xml 27 Jan 2004 18:00:00 -0000 1.3 +++ yagcd.xml 29 Jan 2004 01:21:13 -0000 1.4 @@ -9,7 +9,7 @@ <a href="../../down/yet_another_gamecube_doc.pdf.tar.gz">pdf</a> (primary document, recommended for printing)<br /> <hr /> -<small><b>last modified: Tue, 27 Jan 2004 14:25:39 </b></small><br /> +<small><b>last modified: Wed, 28 Jan 2004 18:35:33 </b></small><br /> <h1 align="center">Yet Another Gamecube Documentation<br /> <font size="-1">(but one that's worth printing)</font> </h1> @@ -472,7 +472,7 @@ <tr><td align="center">4</td><td>CLK</td></tr> -<tr><td align="center">5</td><td>12V</td></tr> +<tr><td align="center">5</td><td>1.25V</td></tr> <tr><td align="center">6</td><td>DO</td></tr> @@ -762,7 +762,7 @@ <div class="p"><!----></div> <ul> -<li> General purpose registers (r0-r15) +<li> General purpose registers (r0-r31) <div class="p"><!----></div> @@ -774,9 +774,9 @@ <li> r13 global pointer to _SDA_BASE_</li> </ul></li> -<li> Floating point registers (fp0-fp15)</li> +<li> Floating point registers (fp0-fp31)</li> -<li> Segment registers (sr0-sr15)</li> +<li> Segment registers (sr0-sr15) - unused in regular (SDK/DolphinOS) applications</li> <li> Special purpose registers (spr0-spr1023) @@ -4275,6 +4275,25 @@ <br /> <div class="p"><!----></div> + <h4><a name="tth_sEc5.3.1"> +5.3.1</a>  Video Modes</h4> + +<div class="p"><!----></div> + +<table border="1" cellspacing="0" cellpadding="3"> +<tr><td align="center"><b>TV Norm</b></td><td align="center"></td><td align="center">Columns</td><td align="center">Lines</td></tr> + +<tr><td align="center">NTSC</td><td align="center">60Hz</td><td align="center">640</td><td align="center">480</td></tr> + +<tr><td align="center">PAL</td><td align="center">50Hz</td><td align="center">640</td><td align="center">574</td></tr> + +<tr><td align="center">PAL</td><td align="center">60Hz</td><td align="center">640</td><td align="center">574</td></tr> +</table> +<br /> +<br /> +note: other modes may be possible using VGA output + +<div class="p"><!----></div> <h3><a name="tth_sEc5.4"> 5.4</a>  PI - Processor Interface</h3> @@ -7243,7 +7262,7 @@ <tr><td align="center"><tt>0x32</tt></td><td><tt>0xXX 0xXX 0xXX</tt></td><td>SU_SSIZE1 - texture offset 1</td></tr> -<tr><td align="center"><tt>0x32</tt></td><td></td><td>SU_TSIZE1 -</td></tr> +<tr><td align="center"><tt>0x33</tt></td><td></td><td>SU_TSIZE1 -</td></tr> <tr><td align="center"><tt>0x34</tt></td><td><tt>0xXX 0xXX 0xXX</tt></td><td>SU_SSIZE2 - texture offset 2</td></tr> @@ -7271,27 +7290,41 @@ <tr><td align="center"><tt>0x40</tt></td><td><tt>0x00 0x00 0xXX</tt></td><td>PE_ZMODE_ID set z mode (0x40000017)</td></tr> -<tr><td align="center"><tt>0x41</tt></td><td><tt>00 xx xx</tt></td><td>PE_CMODE0_ID dithering / blend mode blend_mode(0x410004a0)color_update(0x410004a8)alpha_update(0x410004b8)set_dither(0x410004bc)</td></tr> +<tr><td align="center"><tt>0x41</tt></td><td><tt>0x00 0xxx 0xxx</tt></td><td>PE_CMODE0_ID dithering / blend mode blend_mode(0x410004a0)color_update(0x410004a8)alpha_update(0x410004b8)set_dither(0x410004bc)</td></tr> -<tr><td align="center"><tt>0x42</tt></td><td><tt>00 00 00</tt></td><td>PE_CMODE1_ID destination alpha</td></tr> +<tr><td align="center"><tt>0x42</tt></td><td><tt>0x00 0x00 0x00</tt></td><td>PE_CMODE1_ID destination alpha</td></tr> -<tr><td align="center"><tt>0x43</tt></td><td><tt>00 00 xx</tt></td><td>PE_CONTROL_ID comp z location z_comp_loc(0x43000040)pixel_fmt(0x43000041)</td></tr> +<tr><td align="center"><tt>0x43</tt></td><td><tt>0x00 0x00 0xxx</tt></td><td>PE_CONTROL_ID comp z location z_comp_loc(0x43000040)pixel_fmt(0x43000041)</td></tr> <tr><td align="center"><tt>0x44</tt></td><td><tt>0x00 0x00 0x00</tt></td><td>field mask (0x44000003)</td></tr> <tr><td align="center"><tt>0x45</tt></td><td><tt>0x00 0x00 0x02</tt></td><td>draw done (end of list marker) ?</td></tr> +<tr><td align="center"><tt>0x46</tt></td><td></td><td>?</td></tr> + <tr><td align="center"><tt>0x47</tt></td><td><tt>0x00 0x00 0x00</tt></td><td>PE_TOKEN_ID token B (16 bit)</td></tr> <tr><td align="center"><tt>0x48</tt></td><td><tt>0x00 0x00 0x00</tt></td><td>PE_TOKEN_INT_ID token A (16 bit)</td></tr> +<tr><td align="center"><tt>0x49</tt></td><td></td><td>EFB source rectangle top left</td></tr> + +<tr><td align="center"><tt>0x4a</tt></td><td></td><td>EFB source rectangle bottom right</td></tr> + +<tr><td align="center"><tt>0x4b</tt></td><td></td><td>XFB target address</td></tr> + +<tr><td align="center"><tt>0x4c</tt></td><td></td><td>?</td></tr> + +<tr><td align="center"><tt>0x4d</tt></td><td></td><td>stride ?</td></tr> + <tr><td align="center"><tt>0x4e</tt></td><td><tt>0xxx 0xxx 0xxx</tt></td><td>DispCopyYScale</td></tr> -<tr><td align="center"><tt>0x4f</tt></td><td><tt>0x00 0x00 0x00</tt></td><td>PE copy clear AR</td></tr> +<tr><td align="center"><tt>0x4f</tt></td><td><tt>0x00 0xxx 0xyy</tt></td><td>PE copy clear AR - set clear alpha and red components</td></tr> -<tr><td align="center"><tt>0x50</tt></td><td><tt>0x00 0x00 0x00</tt></td><td>PE copy clear GB</td></tr> +<tr><td align="center"><tt>0x50</tt></td><td><tt>0x00 0xxx 0xyy</tt></td><td>PE copy clear GB - green and blue</td></tr> -<tr><td align="center"><tt>0x51</tt></td><td><tt>0x00 0x00 0x00</tt></td><td>PE copy clear Z</td></tr> +<tr><td align="center"><tt>0x51</tt></td><td><tt>0xxx 0xxx 0xxx</tt></td><td>PE copy clear Z - 24-bit Z value</td></tr> + +<tr><td align="center"><tt>0x52</tt></td><td></td><td>pe copy execute?</td></tr> <tr><td align="center"><tt>0x53</tt></td><td></td><td>copy filter</td></tr> @@ -7301,6 +7334,8 @@ <tr><td align="center"><tt>0x56</tt></td><td></td><td>bounding box (0x560003ff)</td></tr> +<tr><td align="center"><tt>0x57</tt></td><td></td><td>?</td></tr> + <tr><td align="center"><tt>0x58</tt></td><td></td><td>? (0x5800000f)</td></tr> <tr><td align="center"><tt>0x59</tt></td><td></td><td>scissor-box offset (0x5902acab)</td></tr> @@ -8022,6 +8057,44 @@ <table> <tr><td> <table border="1" cellspacing="0" cellpadding="3"> +<tr><td align="center"><tt>0x31</tt></td><td align="center">4</td><td align="center">w</td><td align="center">SU_TSIZE0</td></tr> +</table> +</td></tr> + +<tr><td></td></tr> + +<tr><td><tt></tt> +<table border="1" cellspacing="0" cellpadding="3"> +<tr><td><tt>31</tt></td><td align="right"><tt>24</tt></td><td><tt>23</tt></td><td align="right"><tt>16</tt></td><td><tt>15</tt></td><td align="right"><tt>8</tt></td><td><tt>7</tt></td><td align="right"><tt>0</tt></td></tr> + +<tr><td></td><td align="right"></td><td></td><td align="right"></td><td></td><td align="right"></td><td></td><td align="right"></td></tr> +</table> +</td></tr> + +<tr><td></td></tr> + +<tr><td><tt></tt> +<table border="1" cellspacing="0" cellpadding="3"> +<tr><td align="center"><b>bit(s)</b></td><td align="center"></td><td><b>description</b></td></tr> + +<tr><td align="center">24</td><td align="center"></td><td>SU_TS1_RID</td></tr> + +<tr><td align="center">17</td><td align="center"></td><td>SU_TS1_WT</td></tr> + +<tr><td align="center">16</td><td align="center"></td><td>SU_TS1_BT</td></tr> + +<tr><td align="center">0</td><td align="center"></td><td>SU_TS1_TSIZE</td></tr> +</table> +</td></tr> + +<tr><td></td></tr> +</table> +<br /> +<br /> + +<table> +<tr><td> +<table border="1" cellspacing="0" cellpadding="3"> <tr><td align="center"><tt>0x40</tt></td><td align="center">4</td><td align="center">w</td><td align="center">PE_ZMODE</td></tr> </table> </td></tr> @@ -8146,7 +8219,7 @@ <table> <tr><td> <table border="1" cellspacing="0" cellpadding="3"> -<tr><td align="center"><tt>0x31</tt></td><td align="center">4</td><td align="center">w</td><td align="center">SU_TSIZE0</td></tr> +<tr><td align="center"><tt>0x47</tt></td><td align="center">4</td><td align="center">w</td><td align="center">PE_TOKEN</td></tr> </table> </td></tr> @@ -8166,13 +8239,43 @@ <table border="1" cellspacing="0" cellpadding="3"> <tr><td align="center"><b>bit(s)</b></td><td align="center"></td><td><b>description</b></td></tr> -<tr><td align="center">24</td><td align="center"></td><td>SU_TS1_RID</td></tr> +<tr><td align="center">24</td><td align="center"></td><td>RID</td></tr> -<tr><td align="center">17</td><td align="center"></td><td>SU_TS1_WT</td></tr> +<tr><td align="center">0</td><td align="center"></td><td>Token</td></tr> +</table> +</td></tr> -<tr><td align="center">16</td><td align="center"></td><td>SU_TS1_BT</td></tr> +<tr><td></td></tr> +</table> +<br /> +<br /> -<tr><td align="center">0</td><td align="center"></td><td>SU_TS1_TSIZE</td></tr> +<table> +<tr><td> +<table border="1" cellspacing="0" cellpadding="3"> +<tr><td align="center"><tt>0x49</tt></td><td align="center">4</td><td align="center">w</td><td align="center">EFB Address Top Left</td></tr> +</table> +</td></tr> + +<tr><td></td></tr> + +<tr><td><tt></tt> +<table border="1" cellspacing="0" cellpadding="3"> +<tr><td><tt>31</tt></td><td align="right"><tt>24</tt></td><td><tt>23</tt></td><td align="right"><tt>16</tt></td><td><tt>15</tt></td><td align="right"><tt>8</tt></td><td><tt>7</tt></td><td align="right"><tt>0</tt></td></tr> + +<tr><td></td><td align="right"></td><td></td><td align="right"></td><td></td><td align="right"></td><td></td><td align="right"></td></tr> +</table> +</td></tr> + +<tr><td></td></tr> + +<tr><td><tt></tt> +<table border="1" cellspacing="0" cellpadding="3"> +<tr><td align="center"><b>bit(s)</b></td><td align="center"></td><td><b>description</b></td></tr> + +<tr><td align="center">10</td><td align="center"></td><td>Y coordinate</td></tr> + +<tr><td align="center">0</td><td align="center"></td><td>X coordinate</td></tr> </table> </td></tr> @@ -8184,7 +8287,7 @@ <table> <tr><td> <table border="1" cellspacing="0" cellpadding="3"> -<tr><td align="center"><tt>0x47</tt></td><td align="center">4</td><td align="center">w</td><td align="center">PE_TOKEN</td></tr> +<tr><td align="center"><tt>0x4a</tt></td><td align="center">4</td><td align="center">w</td><td align="center">EFB Address Bottom Right</td></tr> </table> </td></tr> @@ -8204,9 +8307,43 @@ <table border="1" cellspacing="0" cellpadding="3"> <tr><td align="center"><b>bit(s)</b></td><td align="center"></td><td><b>description</b></td></tr> -<tr><td align="center">24</td><td align="center"></td><td>RID</td></tr> +<tr><td align="center">10</td><td align="center"></td><td>Y coordinate</td></tr> -<tr><td align="center">0</td><td align="center"></td><td>Token</td></tr> +<tr><td align="center">0</td><td align="center"></td><td>X coordinate</td></tr> +</table> +</td></tr> + +<tr><td></td></tr> +</table> +<br /> +<br /> + +<table> +<tr><td> +<table border="1" cellspacing="0" cellpadding="3"> +<tr><td align="center"><tt>0x4b</tt></td><td align="center">4</td><td align="center">w</td><td align="center">XFB Address</td></tr> +</table> +</td></tr> + +<tr><td></td></tr> + +<tr><td><tt></tt> +<table border="1" cellspacing="0" cellpadding="3"> +<tr><td><tt>31</tt></td><td align="right"><tt>24</tt></td><td><tt>23</tt></td><td align="right"><tt>16</tt></td><td><tt>15</tt></td><td align="right"><tt>8</tt></td><td><tt>7</tt></td><td align="right"><tt>0</tt></td></tr> + +<tr><td></td><td align="right"></td><td></td><td align="right"></td><td></td><td align="right"></td><td></td><td align="right"></td></tr> +</table> +</td></tr> + +<tr><td></td></tr> + +<tr><td><tt></tt> +<table border="1" cellspacing="0" cellpadding="3"> +<tr><td align="center"><b>bit(s)</b></td><td align="center"></td><td><b>description</b></td></tr> + +<tr><td align="center"></td><td align="center"></td><td></td></tr> + +<tr><td align="center"></td><td align="center"></td><td>physical XFB Address > > 5</td></tr> </table> </td></tr> @@ -10990,7 +11127,8 @@ <tr><td align="center">6-7</td><td align="center"></td><td>unused</td></tr> -<tr><td align="center">0</td><td align="center"></td><td><tt>DUALMTX - base row of the dual transform matrix for regular texture coordinate0</tt></td></tr> +<tr><td align="center">0-5</td><td align="center"></td><td><tt>DUALMTX - base row of the dual transform matrix for regular texture coordinate0 +(63 max, simelar to 0x1018/0x1019)</tt></td></tr> </table> </td></tr> @@ -11060,9 +11198,7 @@ <tr><td align="center"><tt>0x48</tt></td><td>Invalidate Vertex Cache</td></tr> -<tr><td align="center"><tt>0x6.</tt></td><td>SU_ByPassCmd</td></tr> - -<tr><td align="center"><tt>0x61</tt></td><td>Load BP REG</td></tr> +<tr><td align="center"><tt>0x61</tt></td><td>Load BP REG (SU_ByPassCmd)</td></tr> <tr><td align="center"><tt>0x80</tt></td><td>Draw Quads (*)</td></tr> @@ -11173,7 +11309,7 @@ <div class="p"><!----></div> <b>5.11.7.6<a name="tth_sEc5.11.7.6"> -   BP command (Raster State Registers)</a> +   BP command (Bypass Raster State Registers)</a>  </b> <div class="p"><!----></div> @@ -11820,7 +11956,7 @@ PI[5] = 0x100000; <div class="p"><!----></div> -mtwpar(0xC008000); +mtwpar(0xC008000); // GXFIFO physical address <div class="p"><!----></div> mtspr(920, mfspr(920) - 0x40000000); @@ -11854,22 +11990,27 @@  </b> <div class="p"><!----></div> -GX_LOAD_BP_REG(0x4000001f); +#define XY(x, y) (((y) < < 10) - (x)) <div class="p"><!----></div> -GX_LOAD_BP_REG(0x410004bc); +GX_LOAD_BP_REG(0x4000001f); // set z mode <div class="p"><!----></div> -GX_LOAD_BP_REG(0x49000000 - XY(0, 0)); // set source top +GX_LOAD_BP_REG(0x410004bc); // set color mode 0 <div class="p"><!----></div> -GX_LOAD_BP_REG(0x4a000000 - XY(639, 479)); +GX_LOAD_BP_REG(0x49000000 - XY(0, 0)); // set source top left <div class="p"><!----></div> -GX_LOAD_BP_REG(0x4d000028); +GX_LOAD_BP_REG(0x4a000000 - XY(639, 479)); // set source bottom right <div class="p"><!----></div> -GX_LOAD_BP_REG(0x4b000000 - (0xC00000 > > 5)); +GX_LOAD_BP_REG(0x4d000028); // stride? (0x1280> >5) ... 640*2 +; 320*YuYv + +<div class="p"><!----></div> +GX_LOAD_BP_REG(0x4b000000 - (0xC00000 > > 5)); // xfb target +address <div class="p"><!----></div> GX_LOAD_BP_REG(PE_COPY_CLEAR_AR - 0x0000); @@ -11881,7 +12022,7 @@ GX_LOAD_BP_REG(PE_COPY_CLEAR_Z - 0xFFFFFF); <div class="p"><!----></div> -GX_LOAD_BP_REG(0x52004803); +GX_LOAD_BP_REG(0x52004803); // do it (efb copy execution command?) <div class="p"><!----></div> <h4><a name="tth_sEc7.2.5"> |
From: <mi...@pr...> - 2004-01-31 01:51:49
|
Update of /cvsroot/gc-linux/linux/arch/ppc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31820/arch/ppc Modified Files: Kconfig Log Message: fixed symbol, added .config Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/ppc/Kconfig,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- Kconfig 30 Jan 2004 02:09:35 -0000 1.3 +++ Kconfig 30 Jan 2004 02:15:15 -0000 1.4 @@ -563,7 +563,7 @@ endchoice -config GC_RESETSWITCH +config GAMECUBE_RESET_SWITCH bool "RESETSWITCH" default n ---help--- |
From: <mi...@pr...> - 2004-01-31 01:06:00
|
Update of /cvsroot/gc-linux/linux/arch/ppc/platforms In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29995/arch/ppc/platforms Modified Files: gamecube.c gc-rsw.c Log Message: interrupts seem to work now (reset code is tray-close code now :-)) Index: gamecube.c =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/ppc/platforms/gamecube.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- gamecube.c 30 Jan 2004 12:35:07 -0000 1.7 +++ gamecube.c 30 Jan 2004 14:03:07 -0000 1.8 @@ -29,25 +29,17 @@ static void gamecube_unmask_irq(unsigned int irq) { -printk("U%x",irq); - if (irq == 3) { - printk("X"); - while(1); - } - printk("\n"); - printk("GAMECUBE_PIIM = %x\n", GAMECUBE_IN(GAMECUBE_PIIM)); - printk("GAMECUBE_PIIC = %x\n", GAMECUBE_IN(GAMECUBE_PIIC)); - printk("out |= %x\n", (1 << irq)); + //printk("unmask(): %x, %x\n", GAMECUBE_IN(GAMECUBE_PIIM), GAMECUBE_IN(GAMECUBE_PIIC)); if (irq < GAMECUBE_IRQS) { GAMECUBE_OUT(GAMECUBE_PIIM, GAMECUBE_IN(GAMECUBE_PIIM) | (1 << irq)); - printk("GAMECUBE_PIIM = %x\n", GAMECUBE_IN(GAMECUBE_PIIM)); - printk("GAMECUBE_PIIC = %x\n", GAMECUBE_IN(GAMECUBE_PIIC)); } + //printk("after unmask(): %x, %x\n", GAMECUBE_IN(GAMECUBE_PIIM), GAMECUBE_IN(GAMECUBE_PIIC)); } static void gamecube_mask_irq(unsigned int irq) { + //printk("mask(): %x, %x\n", GAMECUBE_IN(GAMECUBE_PIIM), GAMECUBE_IN(GAMECUBE_PIIC)); if (irq < GAMECUBE_IRQS) { GAMECUBE_OUT(GAMECUBE_PIIM, GAMECUBE_IN(GAMECUBE_PIIM) & ~(1 << irq)); /* mask */ } @@ -56,11 +48,12 @@ static void gamecube_mask_and_ack_irq(unsigned int irq) { -printk("A%x\n", irq); + //printk("mask_and_ack(): %x, %x\n", GAMECUBE_IN(GAMECUBE_PIIM), GAMECUBE_IN(GAMECUBE_PIIC)); if (irq < GAMECUBE_IRQS) { GAMECUBE_OUT(GAMECUBE_PIIM, GAMECUBE_IN(GAMECUBE_PIIM) & ~(1 << irq)); /* mask */ GAMECUBE_OUT(GAMECUBE_PIIC, 1 << irq); /* ack */ } + //printk("after mask_and_ack(): %x, %x\n", GAMECUBE_IN(GAMECUBE_PIIM), GAMECUBE_IN(GAMECUBE_PIIC)); } static struct hw_interrupt_type gamecube_pic = { @@ -96,14 +89,13 @@ int irq = 0; u_int irq_status, irq_test = 1; - printk("GAMECUBE_PIIM = %x\n", GAMECUBE_IN(GAMECUBE_PIIM)); - printk("GAMECUBE_PIIC = %x\n", GAMECUBE_IN(GAMECUBE_PIIC)); + //printk("get_irq(): %x, %x\n", GAMECUBE_IN(GAMECUBE_PIIM), GAMECUBE_IN(GAMECUBE_PIIC)); irq_status = GAMECUBE_IN(GAMECUBE_PIIC) & GAMECUBE_IN(GAMECUBE_PIIM); - printk("irq_status = %x\n", irq_status); if(irq_status==0) { - printk("\nPanic: IRQ for no reason!\n\n\n\n\n\n"); - while(1); + return -1; + //printk("\nPanic: IRQ for no reason!\n\n\n\n\n\n"); + //while(1); } do { @@ -113,7 +105,6 @@ irq_test <<= 1; } while (irq < GAMECUBE_IRQS); -printk("f%x: \"%x\"",irq,irq_status); return irq; } Index: gc-rsw.c =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/ppc/platforms/gc-rsw.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- gc-rsw.c 30 Jan 2004 11:08:53 -0000 1.3 +++ gc-rsw.c 30 Jan 2004 14:03:07 -0000 1.4 @@ -29,11 +29,13 @@ #include <asm/irq.h> -#define RSW_IRQ 1 +#define RSW_IRQ 2 static irqreturn_t gc_rsw_handler(int this_irq, void *dev_id, struct pt_regs *regs) { - printk(KERN_ERR "gc_rsw: reset switch pressed\n"); + *(volatile int *)0xCC006004 |= 4; + printk(KERN_ERR "D"); + //printk(KERN_ERR "gc_rsw: reset switch pressed\n"); return IRQ_HANDLED; } @@ -45,6 +47,7 @@ } else { enable_irq(RSW_IRQ); } + *(volatile int *)0xCC006004 |= 2; return 0; } |
From: <mi...@pr...> - 2004-01-31 01:02:31
|
Update of /cvsroot/gc-linux/linux/arch/ppc/configs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14248/arch/ppc/configs Modified Files: gamecube_defconfig Log Message: added initrd suport (by Anders "kirin" Haugen) You need to make zImage.initrd now, and it creates zImage.initrd.elf Index: gamecube_defconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/ppc/configs/gamecube_defconfig,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- gamecube_defconfig 29 Jan 2004 01:07:07 -0000 1.3 +++ gamecube_defconfig 29 Jan 2004 23:08:15 -0000 1.4 @@ -101,7 +101,7 @@ CONFIG_BINFMT_ELF=y CONFIG_BINFMT_MISC=m CONFIG_CMDLINE_BOOL=y -CONFIG_CMDLINE="root=/dev/sda2 video=gamecubefb" +CONFIG_CMDLINE="root=/dev/ram0 video=gamecubefb" # # Bus options @@ -390,7 +390,8 @@ # # File systems # -# CONFIG_EXT2_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_EXT2_FS_XATTR is not set # CONFIG_EXT3_FS is not set # CONFIG_JBD is not set # CONFIG_REISERFS_FS is not set |
From: <mi...@pr...> - 2004-01-30 23:56:46
|
Update of /cvsroot/gc-linux/linux/arch/ppc/platforms In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18848/arch/ppc/platforms Modified Files: gamecube.c Log Message: RESET works now and interrupts don't crash any longer Index: gamecube.c =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/ppc/platforms/gamecube.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- gamecube.c 29 Jan 2004 23:08:15 -0000 1.4 +++ gamecube.c 30 Jan 2004 00:40:34 -0000 1.5 @@ -23,13 +23,13 @@ gamecube_map_io(void) { io_block_mapping(0xd0000000, 0, 0x02000000, _PAGE_IO); - io_block_mapping(0x0c000000, 0xcc000000, 0x00100000, _PAGE_IO); /* GC IO */ + io_block_mapping(0xcc000000, 0x0c000000, 0x00100000, _PAGE_IO); /* GC IO */ } static void gamecube_unmask_irq(unsigned int irq) { - return; + //return; if (irq < GAMECUBE_IRQS) { GAMECUBE_OUT(GAMECUBE_PIIM, GAMECUBE_IN(GAMECUBE_PIIM) | (1 << irq)); } @@ -38,7 +38,7 @@ static void gamecube_mask_irq(unsigned int irq) { - return; + //return; if (irq < GAMECUBE_IRQS) { GAMECUBE_OUT(GAMECUBE_PIIM, GAMECUBE_IN(GAMECUBE_PIIM) & ~(1 << irq)); /* mask */ } @@ -47,7 +47,7 @@ static void gamecube_mask_and_ack_irq(unsigned int irq) { - return; + //return; if (irq < GAMECUBE_IRQS) { GAMECUBE_OUT(GAMECUBE_PIIM, GAMECUBE_IN(GAMECUBE_PIIM) & ~(1 << irq)); /* mask */ GAMECUBE_OUT(GAMECUBE_PIIC, 1 << irq); /* ack */ @@ -70,7 +70,7 @@ { int i; - return; + //return; GAMECUBE_OUT(GAMECUBE_PIIM,0); /* disable all irqs */ GAMECUBE_OUT(GAMECUBE_PIIC,0xffffffff); /* ack all irqs */ @@ -88,7 +88,7 @@ int irq = 0; u_int irq_status, irq_test = 1; - return; + //return; irq_status = GAMECUBE_IN(GAMECUBE_PIIC); do |
From: <mi...@pr...> - 2004-01-30 22:54:37
|
Update of /cvsroot/gc-linux/linux/arch/ppc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13104/arch/ppc Modified Files: Kconfig Log Message: framebuffer code now functional. thanks to tmbinc and PhREAksTe. still greenish though. tmbinc's console driver is now a compile time option. better don't compile both the console driver and the framebuffer driver in, or else both will continuously scroll the screen... Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/ppc/Kconfig,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- Kconfig 23 Jan 2004 03:26:19 -0000 1.1.1.1 +++ Kconfig 29 Jan 2004 01:02:35 -0000 1.2 @@ -689,6 +689,12 @@ depends on SMP default "4" +config GAMECUBE_CONSOLE + bool "GameCube Minimal Screen Console" + depends on GAMECUBE + ---help--- + ... + config PREEMPT bool "Preemptible Kernel" depends on !SMP |
From: <mi...@pr...> - 2004-01-30 21:33:36
|
Update of /cvsroot/gc-linux/linux/arch/ppc/configs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31820/arch/ppc/configs Modified Files: gamecube_defconfig Log Message: fixed symbol, added .config Index: gamecube_defconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/ppc/configs/gamecube_defconfig,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- gamecube_defconfig 29 Jan 2004 23:08:15 -0000 1.4 +++ gamecube_defconfig 30 Jan 2004 02:15:15 -0000 1.5 @@ -93,6 +93,7 @@ # CONFIG_RPX6 is not set # CONFIG_TQM8260 is not set CONFIG_GAMECUBE=y +CONFIG_GAMECUBE_RESET_SWITCH=y # CONFIG_SMP is not set # CONFIG_GAMECUBE_CONSOLE is not set # CONFIG_PREEMPT is not set |
From: <mi...@pr...> - 2004-01-30 20:39:34
|
Update of /cvsroot/gc-linux/htdocs/xml/es In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23376/xml/es Modified Files: download.xml Added Files: faq.xml Log Message: ... --- NEW FILE: faq.xml --- <?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet type="text/xsl" href="faq.xsl"?> <xfaq> <!-- ***** 1 General ***** --> <faq> <category>1 General</category> <question>¿Ya puedo usar Linux en la GameCube?</question> <answer>No.</answer> </faq> <faq> <category>1 General</category> <question>¿Por qué Linux? ¿Por qué no Windows? ¿Por qué no MacOS?</question> <answer> No hay Windows para la arquitectura de la PowerPC, y no tenemos tiene el código fuente de Windows. Tenemos el código fuente de algunos de Mac OS X, y lo usa la PowerPC, pero la GameCube no tiene mucho memoria. Linux es Open Source, y hay una versión para la arquitectura de la PowerPC. </answer> </faq> <faq> <category>1 General</category> <question>¿Es la GameCube una Mac?</question> <answer> No. Aunque la computadoras de Apple Macintosh y la GameCube compartien la arquitectura de la PowerPC, sus arquitecturas son muy diferente. </answer> </faq> <faq> <category>1 General</category> <question>¿Por qué no hace desarrollar con la GameCube SDK?</question> <answer> La GameCube SDK no es software licenciado para cualquier persona que no es una desarrollado para la GameCube. Hay un reemplazo excelente de Open Source: <a href="http://sourceforge.net/projects/gclib/">GCLIB</a>. El ambiente runtime de Linux tiene la ventaja que usandolo es más fácil convertir software para la GameCube. </answer> </faq> <faq> <category>1 General</category> <question>La GameCube ha existido por más de 2 años -- ¿Por qué empiezas tan tarde?</question> <answer>El <a href="http://www.xbox-linux.org/">Xbox</a> tenía que venir primer</answer> </faq> <faq> <category>1 General</category> <question>Estoy nuevo a Linux. ¿Donde busco informacion sobre Linux y cómo usarlo?</question> <answer>Un buen lugar empezar es el proyecto de documentación Linux<a href="http://www.tldp.org/">http://www.tldp.org/</a></answer> </faq> <!-- ***** 2 Ejecutando software aficionado ***** --> <faq> <category>2 Ejecutando software aficionado</category> <question>¿Puedo usar un disco compacto quemado de los 8cm en la GameCube?</question> <answer> No. La GameCube no lee discos compactos o discos digital video. No es posible que producir medios ópticos compatibles usando un escritor de disco compacto. </answer> </faq> <faq> <category>2 Ejecutando software aficionado</category> <question>¿Cómo puedo ejecutar software aficionado en la GameCube?</question> <answer> La método <a href="http://www.gcdev.com/">PSOload</a> es el sólo manera. </answer> </faq> <faq> <category>2 Ejecutando software aficionado</category> <question>¿Qué necesito para ejecutar software aficionado?</question> <answer> Una GameCube, una version de Phantasy Star Online, adaptador de la red, tarjeta de memoria, y <a href="http://www.gcdev.com/">PSOload</a>. </answer> </faq> <faq> <category>2 Ejecutando software aficionado</category> <question>¿Necesito un modchip?</question> <answer> No hay un modchip. </answer> </faq> <faq> <category>2 Ejecutando software aficionado</category> <question>¿Cualquiera de esto me inhabilitaré de jugar juegos?</question> <answer> No. </answer> </faq> <!-- ***** 3 Ayudando ***** --> <faq> <category>3 Ayudando</category> <question>Tengo acceso a datos Nintendo confidencial o la GameCube SDK. ¿Puedo ayudar?</question> <answer>Usando este informacion o la SDK arriesgaría la legalidad de nuestro proyecto.</answer> </faq> <faq> <category>3 Ayudando</category> <question>¿Cómo puedo ayudar?</question> <answer>La <a href="/">página primer</a> explica cómo tú puedas contribuir.</answer> </faq> <faq> <category>3 Ayudando</category> <question>Quiero ensamblar este proyecto. ¿Puedas enviarme GameCube SDK de Nintendo?</question> <answer>No. No lo tenemos, no sabemos donde a obtenerlo, y si lo tenemos no lo usaríamos. No hay manera legal para que un aficionado usar el SDK. No lo necesitamos: el sólo parte del proyecto que depende en el formato del fichero ejecutable de GameCube y la IPL es el bootloader de DOL, pero su estructura es trivial.</answer> </faq> <!-- ***** 4 La Ley ***** --> <faq> <category>4 La Ley</category> <question>¿Es su proyecto ilegal? ¿pensé que el DMCA prohíbe todo el esto?</question> <answer> <p>El DMCA prohíbe evitar la protección de copia, pero no es nuestro objetivo. Desarrollamos un sistema operativo alternativo para la GameCube consola jugando sistema. Sin embargo, si vives en los EEUU o otras país con legislación similar, y trabajas en hackeando GameCube en vez de en desarrollando Linux, puedes ensamblar el proyecto anónimo.</p> <p>Si eres un abogado o un representante de Nintendo, por supuesto eres agradable a hablarnos sobre cualquiera cambia.</p> </answer> </faq> <faq> <category>4 La Ley</category> <question>¿Perdería mi garantía cuando haciendo cualquier cosa como demostrado en este página de red?</question> <answer> Si no abres tu GameCube, no hay evidencia. </answer> </faq> </xfaq> Index: download.xml =================================================================== RCS file: /cvsroot/gc-linux/htdocs/xml/es/download.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- download.xml 26 Jan 2004 18:04:02 -0000 1.1 +++ download.xml 30 Jan 2004 20:37:59 -0000 1.2 @@ -4,11 +4,17 @@ <info> <title>Descargas</title> <author>Michael Steil (translated by Pezezin)</author> - <date>22 de enero del 2004</date> + <date>27 de enero del 2004</date> </info> <p>Linux aún no funciona en la GameCube - pero existe una aplicación llamada "linuxpreview".</p> - + + <h2>Kernel actual</h2> + + <p>Este enlace siempre apunta al último kernel en formato DOL. Debería mostrar los mensajes del kernel en la pantalla de la GameCube.</p> + + <p><a href="../down/zImage.dol">zImage.dol</a></p> + <h2>Linux pre-alfa</h2> <p>El kernel 2.6.0 arranca hasta el punto "Decompressing the kernel...done\nNow booting the kernel", y muestra la salida por la pantalla. Funciona tanto en la GameCube real, como en el emulador dolwin.</p> @@ -16,10 +22,18 @@ <p><a href="http://prdownloads.sourceforge.net/gc-linux/zImage-prealpha.dol?download">Binario (.DOL)</a> (436 KB)</p> <h2>Linuxpreview</h2> - + <p><a href="download.html">Linuxpreview</a> es una pequeña aplicación que muestra a Tux el pingüino y la URL de GameCube Linux en la pantalla. Es un símbolo de que dentro de poco Linux funcionará en la GameCube.</p> <p>Linuxpreview puede ser ejecutado mediante <a href="http://www.gcdev.com/">PSOload</a>.</p> - + <p><a href="http://prdownloads.sourceforge.net/gc-linux/gc-linuxpreview.zip?download">Código fuente y binarios de Linuxpreview</a> (20KB)</p> + + <h2>Plugin DOL para IDA</h2> + + <p>Este plugin requiere una versión de IDA que soporte CPUs PowerPC, y te proporcionará la posibilidad de cargar ejecutables en formato DOL. Ha sido desarrollado por Stefan Esser.</p> + + <p><a href="http://prdownloads.sourceforge.net/gc-linux/dol-plugin-0.1-ida46.zip?download">Plugin DOL para IDA 4.6</a> (17KB)</p> + <p><a href="http://prdownloads.sourceforge.net/gc-linux/dol-plugin-0.1-src.zip?download">Código fuente del plugin DOL</a> (12KB)</p> + </iparticle> |
From: <mi...@pr...> - 2004-01-30 18:09:37
|
Update of /cvsroot/gc-linux/linux/init In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13104/init Modified Files: main.c Log Message: framebuffer code now functional. thanks to tmbinc and PhREAksTe. still greenish though. tmbinc's console driver is now a compile time option. better don't compile both the console driver and the framebuffer driver in, or else both will continuously scroll the screen... Index: main.c =================================================================== RCS file: /cvsroot/gc-linux/linux/init/main.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- main.c 23 Jan 2004 03:26:19 -0000 1.1.1.1 +++ main.c 29 Jan 2004 01:02:50 -0000 1.2 @@ -391,7 +391,9 @@ * Interrupts are still disabled. Do necessary setups, then * enable them */ +#ifdef CONFIG_GAMECUBE_CONSOLE con_puts(""); +#endif lock_kernel(); printk(linux_banner); setup_arch(&command_line); |
From: <mi...@pr...> - 2004-01-30 17:36:30
|
Update of /cvsroot/gc-linux/linux/drivers/video In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13104/drivers/video Modified Files: gamecubefb.c Log Message: framebuffer code now functional. thanks to tmbinc and PhREAksTe. still greenish though. tmbinc's console driver is now a compile time option. better don't compile both the console driver and the framebuffer driver in, or else both will continuously scroll the screen... Index: gamecubefb.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/video/gamecubefb.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- gamecubefb.c 26 Jan 2004 20:07:01 -0000 1.1 +++ gamecubefb.c 29 Jan 2004 01:02:49 -0000 1.2 @@ -114,14 +114,28 @@ return 0; } +void gc_blit() { + printk("BLIT\n\n\n"); +} + static struct fb_ops gamecubefb_ops = { .owner = THIS_MODULE, +#if 0 + .fb_setcolreg = gc_blit, + .fb_pan_display = gc_blit, + .fb_fillrect = gc_blit, + .fb_copyarea = gc_blit, + .fb_imageblit = gc_blit, + .fb_cursor = gc_blit, +#endif +#if 1 .fb_setcolreg = gamecubefb_setcolreg, .fb_pan_display = gamecubefb_pan_display, .fb_fillrect = cfb_fillrect, .fb_copyarea = cfb_copyarea, .fb_imageblit = cfb_imageblit, .fb_cursor = soft_cursor, +#endif }; int __init gamecubefb_setup(char *options) @@ -175,6 +189,9 @@ return -EIO; } + //MISTFIX + fb_info.screen_base = gamecubefb_fix.smem_start; + printk(KERN_INFO "gamecubefb: framebuffer at 0x%lx, mapped to 0x%p, size %dk\n", gamecubefb_fix.smem_start, fb_info.screen_base, gamecubefb_fix.smem_len/1024); printk(KERN_INFO "gamecubefb: mode is %dx%dx%d, linelength=%d, pages=%d\n", @@ -210,6 +227,7 @@ gamecubefb_fix.ywrapstep = (ypan>1) ? 1 : 0; fb_info.fbops = &gamecubefb_ops; + printk("ops set\n"); fb_info.var = gamecubefb_defined; fb_info.fix = gamecubefb_fix; fb_info.pseudo_palette = pseudo_palette; @@ -220,14 +238,18 @@ if (register_framebuffer(&fb_info)<0) return -EINVAL; +#if 0 /* clear screen */ int c = 640*576/2; + //unsigned long *p = (unsigned long*)fb_info.screen_base; unsigned long *p = (unsigned long*)gamecubefb_fix.smem_start; while (c--) *p++ = 0x00800080; +#endif printk(KERN_INFO "fb%d: %s frame buffer device\n", fb_info.node, fb_info.fix.id); + return 0; } |
From: <mi...@pr...> - 2004-01-30 16:48:45
|
Update of /cvsroot/gc-linux/linux/include/linux In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6902/include/linux Added Files: fb.h Log Message: Framebuffer colors are correct now. Thanks to Costis for his fixpoint conversion code. The framebuffer console text is still yellow - is that normal? Because Tux' colors are perfect... --- NEW FILE: fb.h --- #ifndef _LINUX_FB_H #define _LINUX_FB_H #include <linux/tty.h> #include <linux/workqueue.h> #include <asm/types.h> #include <asm/io.h> /* Definitions of frame buffers */ #define FB_MAJOR 29 #define FB_MAX 32 /* sufficient for now */ /* ioctls 0x46 is 'F' */ #define FBIOGET_VSCREENINFO 0x4600 #define FBIOPUT_VSCREENINFO 0x4601 #define FBIOGET_FSCREENINFO 0x4602 #define FBIOGETCMAP 0x4604 #define FBIOPUTCMAP 0x4605 #define FBIOPAN_DISPLAY 0x4606 #define FBIO_CURSOR _IOWR('F', 0x08, struct fb_cursor) /* 0x4607-0x460B are defined below */ /* #define FBIOGET_MONITORSPEC 0x460C */ /* #define FBIOPUT_MONITORSPEC 0x460D */ /* #define FBIOSWITCH_MONIBIT 0x460E */ #define FBIOGET_CON2FBMAP 0x460F #define FBIOPUT_CON2FBMAP 0x4610 #define FBIOBLANK 0x4611 /* arg: 0 or vesa level + 1 */ #define FBIOGET_VBLANK _IOR('F', 0x12, struct fb_vblank) #define FBIO_ALLOC 0x4613 #define FBIO_FREE 0x4614 #define FBIOGET_GLYPH 0x4615 #define FBIOGET_HWCINFO 0x4616 #define FBIOPUT_MODEINFO 0x4617 #define FBIOGET_DISPINFO 0x4618 #define FB_TYPE_PACKED_PIXELS 0 /* Packed Pixels */ #define FB_TYPE_PLANES 1 /* Non interleaved planes */ #define FB_TYPE_INTERLEAVED_PLANES 2 /* Interleaved planes */ #define FB_TYPE_TEXT 3 /* Text/attributes */ #define FB_TYPE_VGA_PLANES 4 /* EGA/VGA planes */ #define FB_AUX_TEXT_MDA 0 /* Monochrome text */ #define FB_AUX_TEXT_CGA 1 /* CGA/EGA/VGA Color text */ #define FB_AUX_TEXT_S3_MMIO 2 /* S3 MMIO fasttext */ #define FB_AUX_TEXT_MGA_STEP16 3 /* MGA Millenium I: text, attr, 14 reserved bytes */ #define FB_AUX_TEXT_MGA_STEP8 4 /* other MGAs: text, attr, 6 reserved bytes */ #define FB_AUX_VGA_PLANES_VGA4 0 /* 16 color planes (EGA/VGA) */ #define FB_AUX_VGA_PLANES_CFB4 1 /* CFB4 in planes (VGA) */ #define FB_AUX_VGA_PLANES_CFB8 2 /* CFB8 in planes (VGA) */ #define FB_VISUAL_MONO01 0 /* Monochr. 1=Black 0=White */ #define FB_VISUAL_MONO10 1 /* Monochr. 1=White 0=Black */ #define FB_VISUAL_TRUECOLOR 2 /* True color */ #define FB_VISUAL_PSEUDOCOLOR 3 /* Pseudo color (like atari) */ #define FB_VISUAL_DIRECTCOLOR 4 /* Direct color */ #define FB_VISUAL_STATIC_PSEUDOCOLOR 5 /* Pseudo color readonly */ #define FB_ACCEL_NONE 0 /* no hardware accelerator */ #define FB_ACCEL_ATARIBLITT 1 /* Atari Blitter */ #define FB_ACCEL_AMIGABLITT 2 /* Amiga Blitter */ #define FB_ACCEL_S3_TRIO64 3 /* Cybervision64 (S3 Trio64) */ #define FB_ACCEL_NCR_77C32BLT 4 /* RetinaZ3 (NCR 77C32BLT) */ #define FB_ACCEL_S3_VIRGE 5 /* Cybervision64/3D (S3 ViRGE) */ #define FB_ACCEL_ATI_MACH64GX 6 /* ATI Mach 64GX family */ #define FB_ACCEL_DEC_TGA 7 /* DEC 21030 TGA */ #define FB_ACCEL_ATI_MACH64CT 8 /* ATI Mach 64CT family */ #define FB_ACCEL_ATI_MACH64VT 9 /* ATI Mach 64CT family VT class */ #define FB_ACCEL_ATI_MACH64GT 10 /* ATI Mach 64CT family GT class */ #define FB_ACCEL_SUN_CREATOR 11 /* Sun Creator/Creator3D */ #define FB_ACCEL_SUN_CGSIX 12 /* Sun cg6 */ #define FB_ACCEL_SUN_LEO 13 /* Sun leo/zx */ #define FB_ACCEL_IMS_TWINTURBO 14 /* IMS Twin Turbo */ #define FB_ACCEL_3DLABS_PERMEDIA2 15 /* 3Dlabs Permedia 2 */ #define FB_ACCEL_MATROX_MGA2064W 16 /* Matrox MGA2064W (Millenium) */ #define FB_ACCEL_MATROX_MGA1064SG 17 /* Matrox MGA1064SG (Mystique) */ #define FB_ACCEL_MATROX_MGA2164W 18 /* Matrox MGA2164W (Millenium II) */ #define FB_ACCEL_MATROX_MGA2164W_AGP 19 /* Matrox MGA2164W (Millenium II) */ #define FB_ACCEL_MATROX_MGAG100 20 /* Matrox G100 (Productiva G100) */ #define FB_ACCEL_MATROX_MGAG200 21 /* Matrox G200 (Myst, Mill, ...) */ #define FB_ACCEL_SUN_CG14 22 /* Sun cgfourteen */ #define FB_ACCEL_SUN_BWTWO 23 /* Sun bwtwo */ #define FB_ACCEL_SUN_CGTHREE 24 /* Sun cgthree */ #define FB_ACCEL_SUN_TCX 25 /* Sun tcx */ #define FB_ACCEL_MATROX_MGAG400 26 /* Matrox G400 */ #define FB_ACCEL_NV3 27 /* nVidia RIVA 128 */ #define FB_ACCEL_NV4 28 /* nVidia RIVA TNT */ #define FB_ACCEL_NV5 29 /* nVidia RIVA TNT2 */ #define FB_ACCEL_CT_6555x 30 /* C&T 6555x */ #define FB_ACCEL_3DFX_BANSHEE 31 /* 3Dfx Banshee */ #define FB_ACCEL_ATI_RAGE128 32 /* ATI Rage128 family */ #define FB_ACCEL_IGS_CYBER2000 33 /* CyberPro 2000 */ #define FB_ACCEL_IGS_CYBER2010 34 /* CyberPro 2010 */ #define FB_ACCEL_IGS_CYBER5000 35 /* CyberPro 5000 */ #define FB_ACCEL_SIS_GLAMOUR 36 /* SiS 300/630/540 */ #define FB_ACCEL_3DLABS_PERMEDIA3 37 /* 3Dlabs Permedia 3 */ #define FB_ACCEL_ATI_RADEON 38 /* ATI Radeon family */ #define FB_ACCEL_I810 39 /* Intel 810/815 */ #define FB_ACCEL_SIS_GLAMOUR_2 40 /* SiS 315, 650, 740 */ #define FB_ACCEL_SIS_XABRE 41 /* SiS 330 ("Xabre") */ #define FB_ACCEL_NEOMAGIC_NM2070 90 /* NeoMagic NM2070 */ #define FB_ACCEL_NEOMAGIC_NM2090 91 /* NeoMagic NM2090 */ #define FB_ACCEL_NEOMAGIC_NM2093 92 /* NeoMagic NM2093 */ #define FB_ACCEL_NEOMAGIC_NM2097 93 /* NeoMagic NM2097 */ #define FB_ACCEL_NEOMAGIC_NM2160 94 /* NeoMagic NM2160 */ #define FB_ACCEL_NEOMAGIC_NM2200 95 /* NeoMagic NM2200 */ #define FB_ACCEL_NEOMAGIC_NM2230 96 /* NeoMagic NM2230 */ #define FB_ACCEL_NEOMAGIC_NM2360 97 /* NeoMagic NM2360 */ #define FB_ACCEL_NEOMAGIC_NM2380 98 /* NeoMagic NM2380 */ struct fb_fix_screeninfo { char id[16]; /* identification string eg "TT Builtin" */ unsigned long smem_start; /* Start of frame buffer mem */ /* (physical address) */ __u32 smem_len; /* Length of frame buffer mem */ __u32 type; /* see FB_TYPE_* */ __u32 type_aux; /* Interleave for interleaved Planes */ __u32 visual; /* see FB_VISUAL_* */ __u16 xpanstep; /* zero if no hardware panning */ __u16 ypanstep; /* zero if no hardware panning */ __u16 ywrapstep; /* zero if no hardware ywrap */ __u32 line_length; /* length of a line in bytes */ unsigned long mmio_start; /* Start of Memory Mapped I/O */ /* (physical address) */ __u32 mmio_len; /* Length of Memory Mapped I/O */ __u32 accel; /* Type of acceleration available */ __u16 reserved[3]; /* Reserved for future compatibility */ }; /* Interpretation of offset for color fields: All offsets are from the right, * inside a "pixel" value, which is exactly 'bits_per_pixel' wide (means: you * can use the offset as right argument to <<). A pixel afterwards is a bit * stream and is written to video memory as that unmodified. This implies * big-endian byte order if bits_per_pixel is greater than 8. */ struct fb_bitfield { __u32 offset; /* beginning of bitfield */ __u32 length; /* length of bitfield */ __u32 msb_right; /* != 0 : Most significant bit is */ /* right */ }; #define FB_NONSTD_HAM 1 /* Hold-And-Modify (HAM) */ #define FB_ACTIVATE_NOW 0 /* set values immediately (or vbl)*/ #define FB_ACTIVATE_NXTOPEN 1 /* activate on next open */ #define FB_ACTIVATE_TEST 2 /* don't set, round up impossible */ #define FB_ACTIVATE_MASK 15 /* values */ #define FB_ACTIVATE_VBL 16 /* activate values on next vbl */ #define FB_CHANGE_CMAP_VBL 32 /* change colormap on vbl */ #define FB_ACTIVATE_ALL 64 /* change all VCs on this fb */ #define FB_ACCELF_TEXT 1 /* text mode acceleration */ #define FB_SYNC_HOR_HIGH_ACT 1 /* horizontal sync high active */ #define FB_SYNC_VERT_HIGH_ACT 2 /* vertical sync high active */ #define FB_SYNC_EXT 4 /* external sync */ #define FB_SYNC_COMP_HIGH_ACT 8 /* composite sync high active */ #define FB_SYNC_BROADCAST 16 /* broadcast video timings */ /* vtotal = 144d/288n/576i => PAL */ /* vtotal = 121d/242n/484i => NTSC */ #define FB_SYNC_ON_GREEN 32 /* sync on green */ #define FB_VMODE_NONINTERLACED 0 /* non interlaced */ #define FB_VMODE_INTERLACED 1 /* interlaced */ #define FB_VMODE_DOUBLE 2 /* double scan */ #define FB_VMODE_MASK 255 #define FB_VMODE_YWRAP 256 /* ywrap instead of panning */ #define FB_VMODE_SMOOTH_XPAN 512 /* smooth xpan possible (internally used) */ #define FB_VMODE_CONUPDATE 512 /* don't update x/yoffset */ #define PICOS2KHZ(a) (1000000000UL/(a)) #define KHZ2PICOS(a) (1000000000UL/(a)) struct fb_var_screeninfo { __u32 xres; /* visible resolution */ __u32 yres; __u32 xres_virtual; /* virtual resolution */ __u32 yres_virtual; __u32 xoffset; /* offset from virtual to visible */ __u32 yoffset; /* resolution */ __u32 bits_per_pixel; /* guess what */ __u32 grayscale; /* != 0 Graylevels instead of colors */ struct fb_bitfield red; /* bitfield in fb mem if true color, */ struct fb_bitfield green; /* else only length is significant */ struct fb_bitfield blue; struct fb_bitfield transp; /* transparency */ __u32 nonstd; /* != 0 Non standard pixel format */ __u32 activate; /* see FB_ACTIVATE_* */ __u32 height; /* height of picture in mm */ __u32 width; /* width of picture in mm */ __u32 accel_flags; /* acceleration flags (hints) */ /* Timing: All values in pixclocks, except pixclock (of course) */ __u32 pixclock; /* pixel clock in ps (pico seconds) */ __u32 left_margin; /* time from sync to picture */ __u32 right_margin; /* time from picture to sync */ __u32 upper_margin; /* time from sync to picture */ __u32 lower_margin; __u32 hsync_len; /* length of horizontal sync */ __u32 vsync_len; /* length of vertical sync */ __u32 sync; /* see FB_SYNC_* */ __u32 vmode; /* see FB_VMODE_* */ __u32 rotate; /* angle we rotate counter clockwise */ __u32 reserved[5]; /* Reserved for future compatibility */ }; struct fb_cmap { __u32 start; /* First entry */ __u32 len; /* Number of entries */ __u16 *red; /* Red values */ __u16 *green; __u16 *blue; __u16 *transp; /* transparency, can be NULL */ }; struct fb_con2fbmap { __u32 console; __u32 framebuffer; }; /* VESA Blanking Levels */ #define VESA_NO_BLANKING 0 #define VESA_VSYNC_SUSPEND 1 #define VESA_HSYNC_SUSPEND 2 #define VESA_POWERDOWN 3 struct fb_monspecs { __u32 hfmin; /* hfreq lower limit (Hz) */ __u32 hfmax; /* hfreq upper limit (Hz) */ __u16 vfmin; /* vfreq lower limit (Hz) */ __u16 vfmax; /* vfreq upper limit (Hz) */ __u32 dclkmin; /* pixelclock lower limit (Hz) */ __u32 dclkmax; /* pixelclock upper limit (Hz) */ unsigned gtf : 1; /* supports GTF */ unsigned dpms : 1; /* supports DPMS */ }; #define FB_VBLANK_VBLANKING 0x001 /* currently in a vertical blank */ #define FB_VBLANK_HBLANKING 0x002 /* currently in a horizontal blank */ #define FB_VBLANK_HAVE_VBLANK 0x004 /* vertical blanks can be detected */ #define FB_VBLANK_HAVE_HBLANK 0x008 /* horizontal blanks can be detected */ #define FB_VBLANK_HAVE_COUNT 0x010 /* global retrace counter is available */ #define FB_VBLANK_HAVE_VCOUNT 0x020 /* the vcount field is valid */ #define FB_VBLANK_HAVE_HCOUNT 0x040 /* the hcount field is valid */ #define FB_VBLANK_VSYNCING 0x080 /* currently in a vsync */ #define FB_VBLANK_HAVE_VSYNC 0x100 /* verical syncs can be detected */ struct fb_vblank { __u32 flags; /* FB_VBLANK flags */ __u32 count; /* counter of retraces since boot */ __u32 vcount; /* current scanline position */ __u32 hcount; /* current scandot position */ __u32 reserved[4]; /* reserved for future compatibility */ }; /* Internal HW accel */ #define ROP_COPY 0 #define ROP_XOR 1 struct fb_copyarea { __u32 dx; __u32 dy; __u32 width; __u32 height; __u32 sx; __u32 sy; }; struct fb_fillrect { __u32 dx; /* screen-relative */ __u32 dy; __u32 width; __u32 height; __u32 color; __u32 rop; }; struct fb_image { __u32 dx; /* Where to place image */ __u32 dy; __u32 width; /* Size of image */ __u32 height; __u32 fg_color; /* Only used when a mono bitmap */ __u32 bg_color; __u8 depth; /* Depth of the image */ const char *data; /* Pointer to image data */ struct fb_cmap cmap; /* color map info */ }; /* * hardware cursor control */ #define FB_CUR_SETCUR 0x01 #define FB_CUR_SETPOS 0x02 #define FB_CUR_SETHOT 0x04 #define FB_CUR_SETCMAP 0x08 #define FB_CUR_SETSHAPE 0x10 #define FB_CUR_SETSIZE 0x20 #define FB_CUR_SETALL 0xFF struct fbcurpos { __u16 x, y; }; struct fb_cursor { __u16 set; /* what to set */ __u16 enable; /* cursor on/off */ __u16 rop; /* bitop operation */ char *mask; /* cursor mask bits */ struct fbcurpos hot; /* cursor hot spot */ struct fb_image image; /* Cursor image */ }; #define FB_PIXMAP_DEFAULT 1 /* used internally by fbcon */ #define FB_PIXMAP_SYSTEM 2 /* memory is in system RAM */ #define FB_PIXMAP_IO 4 /* memory is iomapped */ #define FB_PIXMAP_SYNC 256 /* set if GPU can DMA */ struct fb_pixmap { __u8 *addr; /* pointer to memory */ __u32 size; /* size of buffer in bytes */ __u32 offset; /* current offset to buffer */ __u32 buf_align; /* byte alignment of each bitmap */ __u32 scan_align; /* alignment per scanline */ __u32 flags; /* see FB_PIXMAP_* */ /* access methods */ void (*outbuf)(u8 *dst, u8 *addr, unsigned int size); u8 (*inbuf) (u8 *addr); spinlock_t lock; /* spinlock */ atomic_t count; }; #ifdef __KERNEL__ #include <linux/fs.h> #include <linux/init.h> struct fb_info; struct vm_area_struct; struct file; /* * Frame buffer operations */ struct fb_ops { /* open/release and usage marking */ struct module *owner; int (*fb_open)(struct fb_info *info, int user); int (*fb_release)(struct fb_info *info, int user); /* For framebuffers with strange non linear layouts */ ssize_t (*fb_read)(struct file *file, char *buf, size_t count, loff_t *ppos); ssize_t (*fb_write)(struct file *file, const char *buf, size_t count, loff_t *ppos); /* checks var and creates a par based on it */ int (*fb_check_var)(struct fb_var_screeninfo *var, struct fb_info *info); /* set the video mode according to par */ int (*fb_set_par)(struct fb_info *info); /* set color register */ int (*fb_setcolreg)(unsigned regno, unsigned red, unsigned green, unsigned blue, unsigned transp, struct fb_info *info); /* blank display */ int (*fb_blank)(int blank, struct fb_info *info); /* pan display */ int (*fb_pan_display)(struct fb_var_screeninfo *var, struct fb_info *info); /* draws a rectangle */ void (*fb_fillrect)(struct fb_info *info, const struct fb_fillrect *rect); /* Copy data from area to another */ void (*fb_copyarea)(struct fb_info *info,const struct fb_copyarea *region); /* Draws a image to the display */ void (*fb_imageblit)(struct fb_info *info, const struct fb_image *image); /* Draws cursor */ int (*fb_cursor)(struct fb_info *info, struct fb_cursor *cursor); /* Rotates the display */ void (*fb_rotate)(struct fb_info *info, int angle); /* wait for blit idle, optional */ int (*fb_sync)(struct fb_info *info); /* perform fb specific ioctl (optional) */ int (*fb_ioctl)(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg, struct fb_info *info); /* perform fb specific mmap */ int (*fb_mmap)(struct fb_info *info, struct file *file, struct vm_area_struct *vma); }; struct fb_info { int node; int flags; int open; /* Has this been open already ? */ #define FBINFO_FLAG_MODULE 1 /* Low-level driver is a module */ struct fb_var_screeninfo var; /* Current var */ struct fb_fix_screeninfo fix; /* Current fix */ struct fb_monspecs monspecs; /* Current Monitor specs */ struct fb_cursor cursor; /* Current cursor */ struct work_struct queue; /* Framebuffer event queue */ struct fb_pixmap pixmap; /* Current pixmap */ struct fb_cmap cmap; /* Current cmap */ struct fb_ops *fbops; char *screen_base; /* Virtual address */ struct vc_data *display_fg; /* Console visible on this display */ int currcon; /* Current VC. */ void *pseudo_palette; /* Fake palette of 16 colors */ /* From here on everything is device dependent */ void *par; }; #ifdef MODULE #define FBINFO_FLAG_DEFAULT FBINFO_FLAG_MODULE #else #define FBINFO_FLAG_DEFAULT 0 #endif #if defined(__sparc__) /* We map all of our framebuffers such that big-endian accesses * are what we want, so the following is sufficient. */ #define fb_readb sbus_readb #define fb_readw sbus_readw #define fb_readl sbus_readl #define fb_readq sbus_readq #define fb_writeb sbus_writeb #define fb_writew sbus_writew #define fb_writel sbus_writel #define fb_writeq sbus_writeq #define fb_memset sbus_memset_io #elif defined(__i386__) || defined(__alpha__) || defined(__x86_64__) || defined(__hppa__) #define fb_readb __raw_readb #define fb_readw __raw_readw #define fb_readl __raw_readl #define fb_readq __raw_readq #define fb_writeb __raw_writeb #define fb_writew __raw_writew #define fb_writel __raw_writel #define fb_writeq __raw_writeq #define fb_memset memset_io #else #define fb_readb(addr) (*(volatile u8 *) (addr)) #define fb_readw(addr) (*(volatile u16 *) (addr)) #define fb_readl(addr) (*(volatile u32 *) (addr)) #define fb_readq(addr) (*(volatile u64 *) (addr)) #define fb_writeb(b,addr) (*(volatile u8 *) (addr) = (b)) #define fb_writew(b,addr) (*(volatile u16 *) (addr) = (b)) #ifndef CONFIG_FB_GAMECUBE # define fb_writel(b,addr) (*(volatile u32 *) (addr) = (b)) #else # define fb_writel(b,addr) gamecubefb_writel(b,addr) # define fb_writel_real(b,addr) (*(volatile u32 *) (addr) = (b)) #endif #define fb_writeq(b,addr) (*(volatile u64 *) (addr) = (b)) #define fb_memset memset #endif /* * `Generic' versions of the frame buffer device operations */ extern int fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var); extern int fb_pan_display(struct fb_info *info, struct fb_var_screeninfo *var); extern int fb_blank(struct fb_info *info, int blank); extern int soft_cursor(struct fb_info *info, struct fb_cursor *cursor); extern void cfb_fillrect(struct fb_info *info, const struct fb_fillrect *rect); extern void cfb_copyarea(struct fb_info *info, const struct fb_copyarea *area); extern void cfb_imageblit(struct fb_info *info, const struct fb_image *image); /* drivers/video/fbmem.c */ extern int register_framebuffer(struct fb_info *fb_info); extern int unregister_framebuffer(struct fb_info *fb_info); extern int fb_prepare_logo(struct fb_info *fb_info); extern int fb_show_logo(struct fb_info *fb_info); extern u32 fb_get_buffer_offset(struct fb_info *info, u32 size); extern void move_buf_unaligned(struct fb_info *info, u8 *dst, u8 *src, u32 d_pitch, u32 height, u32 mask, u32 shift_high, u32 shift_low, u32 mod, u32 idx); extern void move_buf_aligned(struct fb_info *info, u8 *dst, u8 *src, u32 d_pitch, u32 s_pitch, u32 height); extern struct fb_info *registered_fb[FB_MAX]; extern int num_registered_fb; /* drivers/video/fbmon.c */ #define FB_MAXTIMINGS 0 #define FB_VSYNCTIMINGS 1 #define FB_HSYNCTIMINGS 2 #define FB_DCLKTIMINGS 3 #define FB_IGNOREMON 0x100 extern int fbmon_valid_timings(u_int pixclock, u_int htotal, u_int vtotal, const struct fb_info *fb_info); extern int fbmon_dpms(const struct fb_info *fb_info); extern int fb_get_mode(int flags, u32 val, struct fb_var_screeninfo *var, struct fb_info *info); extern int fb_validate_mode(struct fb_var_screeninfo *var, struct fb_info *info); extern int parse_edid(unsigned char *edid, struct fb_var_screeninfo *var); extern int fb_get_monitor_limits(unsigned char *edid, struct fb_monspecs *specs); extern struct fb_videomode *fb_create_modedb(unsigned char *edid, int *dbsize); extern void fb_destroy_modedb(struct fb_videomode *modedb); extern void show_edid(unsigned char *edid); /* drivers/video/modedb.c */ #define VESA_MODEDB_SIZE 34 extern const struct fb_videomode vesa_modes[]; /* drivers/video/fbcmap.c */ extern int fb_alloc_cmap(struct fb_cmap *cmap, int len, int transp); extern void fb_dealloc_cmap(struct fb_cmap *cmap); extern int fb_copy_cmap(struct fb_cmap *from, struct fb_cmap *to, int fsfromto); extern int fb_set_cmap(struct fb_cmap *cmap, int kspc, struct fb_info *fb_info); extern struct fb_cmap *fb_default_cmap(int len); extern void fb_invert_cmaps(void); struct fb_videomode { const char *name; /* optional */ u32 refresh; /* optional */ u32 xres; u32 yres; u32 pixclock; u32 left_margin; u32 right_margin; u32 upper_margin; u32 lower_margin; u32 hsync_len; u32 vsync_len; u32 sync; u32 vmode; }; #ifdef MODULE static inline int fb_find_mode(struct fb_var_screeninfo *var, struct fb_info *info, const char *mode_option, const struct fb_videomode *db, unsigned int dbsize, const struct fb_videomode *default_mode, unsigned int default_bpp) { extern int __fb_try_mode(struct fb_var_screeninfo *var, struct fb_info *info, const struct fb_videomode *mode, unsigned int bpp); /* * FIXME: How to make the compiler optimize vga640x400 away if * default_mode is non-NULL? */ static const struct fb_videomode vga640x400 = { /* 640x400 @ 70 Hz, 31.5 kHz hsync */ NULL, 70, 640, 400, 39721, 40, 24, 39, 9, 96, 2, 0, FB_VMODE_NONINTERLACED }; if (!default_mode) default_mode = &vga640x400; if (!default_bpp) default_bpp = 8; return __fb_try_mode(var, info, default_mode, default_bpp); } #else extern int __init fb_find_mode(struct fb_var_screeninfo *var, struct fb_info *info, const char *mode_option, const struct fb_videomode *db, unsigned int dbsize, const struct fb_videomode *default_mode, unsigned int default_bpp); #endif #endif /* __KERNEL__ */ #endif /* _LINUX_FB_H */ |
From: <mi...@pr...> - 2004-01-30 15:55:22
|
Update of /cvsroot/gc-linux/linux/arch/ppc/platforms In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13104/arch/ppc/platforms Modified Files: Makefile gamecube.c Log Message: framebuffer code now functional. thanks to tmbinc and PhREAksTe. still greenish though. tmbinc's console driver is now a compile time option. better don't compile both the console driver and the framebuffer driver in, or else both will continuously scroll the screen... Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/ppc/platforms/Makefile,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- Makefile 23 Jan 2004 03:26:19 -0000 1.1.1.1 +++ Makefile 29 Jan 2004 01:02:46 -0000 1.2 @@ -45,7 +45,8 @@ obj-$(CONFIG_PRPMC800) += prpmc800_setup.o prpmc800_pci.o obj-$(CONFIG_SANDPOINT) += sandpoint.o obj-$(CONFIG_SPRUCE) += spruce_setup.o spruce_pci.o -obj-$(CONFIG_GAMECUBE) += gamecube.o console.o +obj-$(CONFIG_GAMECUBE) += gamecube.o +obj-$(CONFIG_GAMECUBE_CONSOLE) += console.o ifeq ($(CONFIG_SMP),y) obj-$(CONFIG_PPC_PMAC) += pmac_smp.o Index: gamecube.c =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/ppc/platforms/gamecube.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- gamecube.c 25 Jan 2004 16:10:44 -0000 1.2 +++ gamecube.c 29 Jan 2004 01:02:48 -0000 1.3 @@ -2,6 +2,7 @@ #include <linux/init.h> #include <linux/pagemap.h> #include <linux/irq.h> +#include <linux/console.h> #include <asm/time.h> #include <asm/io.h> #include <asm/machdep.h> @@ -21,12 +22,13 @@ gamecube_map_io(void) { io_block_mapping(0xd0000000, 0, 0x02000000, _PAGE_IO); - io_block_mapping(0xcc000000, 0xcc000000, 0x00100000, _PAGE_IO); /* GC IO */ + io_block_mapping(0x0c000000, 0xcc000000, 0x00100000, _PAGE_IO); /* GC IO */ } static void gamecube_unmask_irq(unsigned int irq) { + return; if (irq < GAMECUBE_IRQS) { GAMECUBE_OUT(GAMECUBE_PIIM, GAMECUBE_IN(GAMECUBE_PIIM) | (1 << irq)); } @@ -35,6 +37,7 @@ static void gamecube_mask_irq(unsigned int irq) { + return; if (irq < GAMECUBE_IRQS) { GAMECUBE_OUT(GAMECUBE_PIIM, GAMECUBE_IN(GAMECUBE_PIIM) & ~(1 << irq)); /* mask */ } @@ -43,6 +46,7 @@ static void gamecube_mask_and_ack_irq(unsigned int irq) { + return; if (irq < GAMECUBE_IRQS) { GAMECUBE_OUT(GAMECUBE_PIIM, GAMECUBE_IN(GAMECUBE_PIIM) & ~(1 << irq)); /* mask */ GAMECUBE_OUT(GAMECUBE_PIIC, 1 << irq); /* ack */ @@ -65,6 +69,7 @@ { int i; + return; GAMECUBE_OUT(GAMECUBE_PIIM,0); /* disable all irqs */ GAMECUBE_OUT(GAMECUBE_PIIC,0xffffffff); /* ack all irqs */ @@ -82,6 +87,7 @@ int irq = 0; u_int irq_status, irq_test = 1; + return; irq_status = GAMECUBE_IN(GAMECUBE_PIIC); do @@ -98,6 +104,7 @@ static void gamecube_restart(char *cmd) { + printk("gamecube_restart()\n"); GAMECUBE_OUT(GAMECUBE_RESET, 0); } @@ -139,5 +146,7 @@ ppc_md.calibrate_decr = gamecube_calibrate_decr; -// console_do_init(); +#ifdef CONFIG_DUMMY_CONSOLE + conswitchp = &dummy_con; +#endif } |
From: <aot...@pr...> - 2004-01-30 15:07:33
|
Update of /cvsroot/gc-linux/CVSROOT In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23167 Modified Files: syncmail Log Message: MAILHOST should be `localhost' Index: syncmail =================================================================== RCS file: /cvsroot/gc-linux/CVSROOT/syncmail,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- syncmail 26 Jan 2004 00:32:11 -0000 1.2 +++ syncmail 30 Jan 2004 15:05:58 -0000 1.3 @@ -101,8 +101,8 @@ from cStringIO import StringIO -# Which SMTP server to do we connect to? Empty string means localhost. -MAILHOST = 'mail' +# Which SMTP server to do we connect to? Should be hard-coded to localhost. +MAILHOST = 'localhost' MAILPORT = 25 # Diff trimming stuff |
From: <se...@pr...> - 2004-01-30 15:00:48
|
Update of /cvsroot/gc-linux/linux/arch/ppc/platforms In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16537/arch/ppc/platforms Modified Files: Makefile gamecube.h Added Files: gc-dvdcover.c Log Message: Adding DVD Cover Message Driver Changed name of GameCube Reset Switch option --- NEW FILE: gc-dvdcover.c --- /* ------------------------------------------------------------------------- */ /* gc-dvdcover.c GameCube DVD Cover Close Message Driver */ /* ------------------------------------------------------------------------- */ /* Copyright (C) 2004 Stefan Esser This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* ------------------------------------------------------------------------- */ #include <linux/kernel.h> #include <linux/ioport.h> #include <linux/module.h> #include <linux/delay.h> #include <linux/slab.h> #include <linux/init.h> #include <linux/interrupt.h> #include <linux/wait.h> #include <asm/irq.h> #include "gamecube.h" #define DVD_IRQ 2 static irqreturn_t gc_dvdcover_handler(int this_irq, void *dev_id, struct pt_regs *regs) { unsigned long reason = GAMECUBE_IN(GAMECUBE_DICVR); // really a DVD cover interrupt? if (reason & 4) { GAMECUBE_OUT(GAMECUBE_DICVR, reason | 4); printk(KERN_ERR "gc_dvdcover: DVD cover was closed\n"); } return IRQ_HANDLED; } static int gc_dvdcover_init(void) { if (request_irq(DVD_IRQ, gc_dvdcover_handler, 0, "GameCube DVD Cover", 0) < 0) { printk(KERN_ERR "gc_dvdcover: Request irq%d failed\n", DVD_IRQ); } else { enable_irq(DVD_IRQ); } GAMECUBE_OUT(GAMECUBE_DICVR, GAMECUBE_IN(GAMECUBE_DICVR) | 2); return 0; } static void gc_dvdcover_exit(void) { disable_irq(DVD_IRQ); free_irq(DVD_IRQ, 0); } MODULE_AUTHOR("Stefan Esser <se...@no...>"); MODULE_DESCRIPTION("GameCube DVD cover close message driver"); MODULE_LICENSE("GPL"); module_init(gc_dvdcover_init); module_exit(gc_dvdcover_exit); Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/ppc/platforms/Makefile,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- Makefile 30 Jan 2004 02:09:35 -0000 1.3 +++ Makefile 30 Jan 2004 14:59:15 -0000 1.4 @@ -48,6 +48,7 @@ obj-$(CONFIG_GAMECUBE) += gamecube.o obj-$(CONFIG_GAMECUBE_CONSOLE) += console.o obj-$(CONFIG_GAMECUBE_RESET_SWITCH) += gc-rsw.o +obj-$(CONFIG_GAMECUBE_DVD_COVER) += gc-dvdcover.o ifeq ($(CONFIG_SMP),y) obj-$(CONFIG_PPC_PMAC) += pmac_smp.o Index: gamecube.h =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/ppc/platforms/gamecube.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- gamecube.h 25 Jan 2004 16:10:44 -0000 1.2 +++ gamecube.h 30 Jan 2004 14:59:16 -0000 1.3 @@ -37,6 +37,7 @@ #define GAMECUBE_PIIC 0xcc003000 /* PI interrupt cause */ #define GAMECUBE_PIIM 0xcc003004 /* PI interrupt mask */ #define GAMECUBE_RESET 0xcc003024 /* RESET */ +#define GAMECUBE_DICVR 0xcc006004 /* DI Cover Register */ #define GAMECUBE_IN(a) (*(u_int *)a) #define GAMECUBE_OUT(a,d) (*(u_int *)a = d) |
From: <se...@pr...> - 2004-01-30 15:00:47
|
Update of /cvsroot/gc-linux/linux/arch/ppc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16537/arch/ppc Modified Files: Kconfig Log Message: Adding DVD Cover Message Driver Changed name of GameCube Reset Switch option Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/ppc/Kconfig,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- Kconfig 30 Jan 2004 02:15:15 -0000 1.4 +++ Kconfig 30 Jan 2004 14:59:14 -0000 1.5 @@ -564,7 +564,7 @@ endchoice config GAMECUBE_RESET_SWITCH - bool "RESETSWITCH" + bool "GameCube Reset button" default n ---help--- If you say yes to this option, support will be included for the @@ -573,6 +573,16 @@ This driver can also be built as a module. If so, the module will be called gc-rsw. +config GAMECUBE_DVD_COVER + bool "GameCube DVD Cover" + default n + ---help--- + If you say yes to this option, support will be included for the + reset switch of the GameCube. + + This driver can also be built as a module. If so, the module + will be called gc-dvdcover. + config TQM8xxL bool depends on 8xx && (TQM823L || TQM850L || FPS850L || TQM855L || TQM860L || SM850) |
From: <mi...@pr...> - 2004-01-30 14:14:48
|
Update of /cvsroot/gc-linux/linux/arch/ppc/platforms In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6394/arch/ppc/platforms Modified Files: gc-rsw.c Log Message: reset switch driver works perfectly now. (ionic & mist, with help from groepaz, Steve_- and tmbinc) Index: gc-rsw.c =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/ppc/platforms/gc-rsw.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- gc-rsw.c 30 Jan 2004 14:03:07 -0000 1.4 +++ gc-rsw.c 30 Jan 2004 14:13:16 -0000 1.5 @@ -29,13 +29,11 @@ #include <asm/irq.h> -#define RSW_IRQ 2 +#define RSW_IRQ 1 static irqreturn_t gc_rsw_handler(int this_irq, void *dev_id, struct pt_regs *regs) { - *(volatile int *)0xCC006004 |= 4; - printk(KERN_ERR "D"); - //printk(KERN_ERR "gc_rsw: reset switch pressed\n"); + printk(KERN_ERR "gc_rsw: reset switch pressed\n"); return IRQ_HANDLED; } @@ -47,7 +45,6 @@ } else { enable_irq(RSW_IRQ); } - *(volatile int *)0xCC006004 |= 2; return 0; } |
From: <mi...@pr...> - 2004-01-29 15:06:30
|
Update of /cvsroot/gc-linux/linux/arch/ppc/configs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14228/arch/ppc/configs Modified Files: gamecube_defconfig Log Message: new config for working framebuffer Index: gamecube_defconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/ppc/configs/gamecube_defconfig,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- gamecube_defconfig 27 Jan 2004 11:33:19 -0000 1.2 +++ gamecube_defconfig 29 Jan 2004 01:07:07 -0000 1.3 @@ -94,6 +94,7 @@ # CONFIG_TQM8260 is not set CONFIG_GAMECUBE=y # CONFIG_SMP is not set +# CONFIG_GAMECUBE_CONSOLE is not set # CONFIG_PREEMPT is not set # CONFIG_HIGHMEM is not set CONFIG_KERNEL_ELF=y @@ -233,15 +234,9 @@ CONFIG_DUMMY_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE=y CONFIG_PCI_CONSOLE=y -CONFIG_FONTS=y -# CONFIG_FONT_8x8 is not set +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y CONFIG_FONT_8x16=y -# CONFIG_FONT_6x11 is not set -# CONFIG_FONT_PEARL_8x8 is not set -# CONFIG_FONT_ACORN_8x8 is not set -# CONFIG_FONT_MINI_4x6 is not set -# CONFIG_FONT_SUN8x16 is not set -# CONFIG_FONT_SUN12x22 is not set # # Logo configuration |
From: <mi...@pr...> - 2004-01-27 18:01:05
|
Update of /cvsroot/gc-linux/htdocs/xml/en In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11216/xml/en Modified Files: yagcd.xml Log Message: ... Index: yagcd.xml =================================================================== RCS file: /cvsroot/gc-linux/htdocs/xml/en/yagcd.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- yagcd.xml 26 Jan 2004 20:44:14 -0000 1.2 +++ yagcd.xml 27 Jan 2004 18:00:00 -0000 1.3 @@ -9,7 +9,7 @@ <a href="../../down/yet_another_gamecube_doc.pdf.tar.gz">pdf</a> (primary document, recommended for printing)<br /> <hr /> - +<small><b>last modified: Tue, 27 Jan 2004 14:25:39 </b></small><br /> <h1 align="center">Yet Another Gamecube Documentation<br /> <font size="-1">(but one that's worth printing)</font> </h1> @@ -14019,11 +14019,11 @@ <tr><td align="center"><tt>0x001C</tt></td><td align="center"><tt>0x0047</tt></td><td align="center"></td><td>Data[0..10] sections File Positions</td></tr> -<tr><td align="center"><tt>0x0048</tt></td><td align="center"><tt>0x0063</tt></td><td align="center"></td><td>Text[0..7] sections Mem Address</td></tr> +<tr><td align="center"><tt>0x0048</tt></td><td align="center"><tt>0x0063</tt></td><td align="center"></td><td>Text[0..6] sections Mem Address</td></tr> <tr><td align="center"><tt>0x0064</tt></td><td align="center"><tt>0x008F</tt></td><td align="center"></td><td>Data[0..10] sections Mem Address</td></tr> -<tr><td align="center"><tt>0x0090</tt></td><td align="center"><tt>0x00AB</tt></td><td align="center"></td><td>Text[0..7] sections Sizes</td></tr> +<tr><td align="center"><tt>0x0090</tt></td><td align="center"><tt>0x00AB</tt></td><td align="center"></td><td>Text[0..6] sections Sizes</td></tr> <tr><td align="center"><tt>0x00AC</tt></td><td align="center"><tt>0x00D7</tt></td><td align="center"></td><td>Data[0..10] sections Sizes</td></tr> @@ -16326,7 +16326,8 @@ <div class="p"><!----></div> <br /><br />moreover, many thanks must go to everyone who helped making this document more consistant and error free by proofreading and pointing out mistakes, in particular tmbinc, -org, hubb, Aaron Kaluszka, Skywalker, Jihad, xor37h, costis, CrowTrobo, mist ...<br /> +org, hubb, Aaron Kaluszka, Skywalker, Jihad, xor37h, costis, CrowTrobo, mist, ionic +...<br /> <br /> <br /> <tt><b>EOT</b></tt> |
From: <mi...@pr...> - 2004-01-27 17:53:41
|
Update of /cvsroot/gc-linux/htdocs/xml/en In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9637/xml/en Modified Files: news.xml download.xml Log Message: DOL plugin Index: news.xml =================================================================== RCS file: /cvsroot/gc-linux/htdocs/xml/en/news.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- news.xml 26 Jan 2004 20:44:13 -0000 1.4 +++ news.xml 27 Jan 2004 17:52:38 -0000 1.5 @@ -2,6 +2,11 @@ <?xml-stylesheet href="news.xsl" type="text/xsl"?> <news> <item> + <date>27 January 2004</date> + <title>DOL plugin for IDA</title> + <text>Stefan "ionic" Esser contributed a .DOL file format plugin for developers who have a PPC-enabled IDA. (<a href="docs/download.html">Download</a>)</text> + </item> + <item> <date>26 January 2004</date> <title>Preliminary framebuffer code in CVS</title> <text>drivers/video/gamecube.c can clear the screen and hopefully soon display text.</text> Index: download.xml =================================================================== RCS file: /cvsroot/gc-linux/htdocs/xml/en/download.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- download.xml 23 Jan 2004 12:25:43 -0000 1.2 +++ download.xml 27 Jan 2004 17:52:38 -0000 1.3 @@ -4,7 +4,7 @@ <info> <title>Download</title> <author>Michael Steil</author> - <date>22 January 2004</date> + <date>27 January 2004</date> </info> <p>There is no working Linux for the GameCube yet - but there is the "linuxpreview" application.</p> @@ -22,4 +22,12 @@ <p><a href="http://prdownloads.sourceforge.net/gc-linux/gc-linuxpreview.zip?download">Linuxpreview source and binary</a> (20KB)</p> + + <h2>DOL plugin for IDA</h2> + + <p>This plugin requires a version of IDA that supports PowerPC CPUs, and will give you the possibility to load executables in .DOL format. It has been contributed by Stefan Esser.</p> + + <p><a href="http://prdownloads.sourceforge.net/gc-linux/dol-plugin-0.1-ida46.zip?download">DOL Plugin for IDA 4.6</a> (17KB)</p> + <p><a href="http://prdownloads.sourceforge.net/gc-linux/dol-plugin-0.1-src.zip?download">DOL Plugin source</a> (12KB)</p> + </iparticle> |
From: <mi...@pr...> - 2004-01-27 11:34:19
|
Update of /cvsroot/gc-linux/linux/arch/ppc/configs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14588/arch/ppc/configs Modified Files: gamecube_defconfig Log Message: forgot new .config Index: gamecube_defconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/ppc/configs/gamecube_defconfig,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- gamecube_defconfig 23 Jan 2004 03:32:41 -0000 1.1 +++ gamecube_defconfig 27 Jan 2004 11:33:19 -0000 1.2 @@ -100,7 +100,7 @@ CONFIG_BINFMT_ELF=y CONFIG_BINFMT_MISC=m CONFIG_CMDLINE_BOOL=y -CONFIG_CMDLINE="console=ttyS0,9600 console=tty0 root=/dev/sda2" +CONFIG_CMDLINE="root=/dev/sda2 video=gamecubefb" # # Bus options @@ -193,7 +193,6 @@ # Networking support # # CONFIG_NET is not set -CONFIG_CRC32=y # # Amateur Radio support @@ -223,19 +222,26 @@ # CONFIG_FB_3DFX is not set # CONFIG_FB_VOODOO1 is not set # CONFIG_FB_TRIDENT is not set +CONFIG_FB_GAMECUBE=y # CONFIG_FB_VIRTUAL is not set # # Console display driver support # -CONFIG_VGA_CONSOLE=y +# CONFIG_VGA_CONSOLE is not set # CONFIG_MDA_CONSOLE is not set CONFIG_DUMMY_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE=y CONFIG_PCI_CONSOLE=y -# CONFIG_FONTS is not set -CONFIG_FONT_8x8=y +CONFIG_FONTS=y +# CONFIG_FONT_8x8 is not set CONFIG_FONT_8x16=y +# CONFIG_FONT_6x11 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set +# CONFIG_FONT_MINI_4x6 is not set +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_SUN12x22 is not set # # Logo configuration @@ -525,6 +531,7 @@ # # Library routines # +CONFIG_CRC32=y # # Kernel hacking |
From: <mi...@pr...> - 2004-01-26 20:45:24
|
Update of /cvsroot/gc-linux/htdocs/xml/en In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18104/xml/en Modified Files: news.xml yagcd.xml Log Message: ... Index: news.xml =================================================================== RCS file: /cvsroot/gc-linux/htdocs/xml/en/news.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- news.xml 26 Jan 2004 00:47:56 -0000 1.3 +++ news.xml 26 Jan 2004 20:44:13 -0000 1.4 @@ -2,6 +2,11 @@ <?xml-stylesheet href="news.xsl" type="text/xsl"?> <news> <item> + <date>26 January 2004</date> + <title>Preliminary framebuffer code in CVS</title> + <text>drivers/video/gamecube.c can clear the screen and hopefully soon display text.</text> + </item> + <item> <date>25 January 2004</date> <title>Yet Another GameCube Documentation</title> <text>Groepaz has contributed 140 pages of compiled technical information on the GameCube. Read it <a href="docs/yagcd.html">here</a>.</text> Index: yagcd.xml =================================================================== RCS file: /cvsroot/gc-linux/htdocs/xml/en/yagcd.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- yagcd.xml 26 Jan 2004 00:38:51 -0000 1.1 +++ yagcd.xml 26 Jan 2004 20:44:14 -0000 1.2 @@ -2359,11 +2359,14 @@ <tr><td align="center"><tt>0x80003100</tt></td><td align="center"></td><td align="center"></td><td>Start of code (usually)</td></tr> -<tr><td align="center"><tt>0x80003140</tt></td><td align="center"></td><td align="center"></td><td>Entry point (sometimes;)</td></tr> +<tr><td align="center"><tt>0x80003140</tt></td><td align="center"></td><td align="center"></td><td>Entry point (early SDK v1.0 applications)</td></tr> <tr><td align="center"><tt>0x81200000</tt></td><td align="center"></td><td align="center"></td><td>Load Address of the Apploader</td></tr> </table> - +<br /> +<br /> +note: of course the entrypoint of an application can be anything, those listed here +are just some typical examples. <div class="p"><!----></div> @@ -2397,7 +2400,11 @@ <tr><td align="center"><tt>0x817fe8c0</tt></td><td align="center"></td><td align="center"></td><td>ArenaHi - Top of Heap</td></tr> </table> - +<br /> +<br /> +note: the address of ArenaHi is not a constant, but should be set to the bottom +of the FST which is read from the DVD so its size depends on the application. the +value given here is just an example. <div class="p"><!----></div> @@ -12225,8 +12232,8 @@ 9.6</a>  AD16</h3> <div class="p"><!----></div> -AD16 is in the 2nd channel, as 0 device. Probably its used for debugging purposes. -AD16 is the 32-bit register, keeping bootrom "trace-step". +AD16 is on channel 2, as device 0. Probably its used for debugging purposes. AD16 +is the 32-bit register, keeping bootrom "trace-step". <div class="p"><!----></div> <h4><a name="tth_sEc9.6.1"> @@ -14329,6 +14336,9 @@ 13.10</a>  S3TC</h3> <div class="p"><!----></div> +WARNING: this section is screwed! any advice/corrections/help/etcblabla welcomed! +(thanx to <b>Aaron Kaluszka</b> for pointing this out) <br /> +<br /> S3TC is a compression method for textures. It basically gives you one more MIP level for free, with relatively small quality loss and a simple implementation in hardware. You basically store 2 colour values and then you have a few bits per pixel to interpolate @@ -14352,19 +14362,19 @@ 0 1 <br /> 2 3<br /> <br /> -Each block is made up of 8 words:<br /> +Each block is made up of 8 words. These 8 words represent 16 pixels using S3TC +compression.<br /> <br /> -RRRRRGGG - GGBBBBB? - rrrrrggg - ggbbbbb? - XXXXXXXX - XXXXXXXX - XXXXXXXX - XXXXXXXX<br /> +RRRRRGGG - GGGBBBBB - rrrrrggg - gggbbbbb - 00112233 - 44556677 - 8899UUVV- WWXXYYZZ<br /> <br /> -R = Primary Red<br /> -G = Primary Green<br /> -B = Primary Blue<br /> -r = Secondary Red<br /> -g = Secondary Green<br /> -b = Secondary Blue<br /> -? = Unknown (some kind of transparency?)<br /> -X = It appears the way that the two colors interact has something to do with the -last four bytes. It's almost like these bytes "shape" the block.<br /> +R = Color 0 Red<br /> +G = Color 0 Green<br /> +B = Color 0 Blue<br /> +r = Color 3 Red<br /> +g = Color 3 Green<br /> +b = Color 3 Blue<br /> +0 - 9, U - Z = Pixel color (2-bits each)<br /> +Colors 1 and 2 are interpolated from colors 0 and 3<br /> <br /> The tiles are 32 bytes each. Depending on the image format the width and height of the tiles will differ. A 16bit format (ie RGB5 or RGB4A3) will have a 4x4 pixel @@ -16307,8 +16317,18 @@ <tr><td align="center"></td><td align="right">cross-checking against the Source helped to make sure no bad errors sneaked in</td></tr> +<tr><td align="center"><b>Aaron Kaluszka</b></td><td align="right"><tt>meg...@ko...</tt></td></tr> + +<tr><td align="center"></td><td align="right">some image format info</td></tr> + <tr><td align="center"></td></tr></table> </center> <div class="p"><!----></div> +<br /><br />moreover, many thanks must go to everyone who helped making this document more consistant +and error free by proofreading and pointing out mistakes, in particular tmbinc, +org, hubb, Aaron Kaluszka, Skywalker, Jihad, xor37h, costis, CrowTrobo, mist ...<br /> +<br /> +<br /> +<tt><b>EOT</b></tt> <br /><br /><hr /></iparticle> |