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: <aot...@us...> - 2005-07-17 00:15:03
|
Update of /cvsroot/gc-linux/binutils/include/opcode In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4543/include/opcode Modified Files: ppc.h Log Message: From: Anders M Montonen <amm...@cc...> To: gc-...@li... Subject: [Gc-linux-devel] Gekko binutils patch Date: Sun, 2 May 2004 19:11:02 +0300 (EET DST) Hi, this is a in-progress patch for adding support for the Gekko instructions to binutils (as and objdump). It's not well-tested at all, and it's incomplete because the load and store instructions are still missing because I don't really understand their encoding (eg. what do the W and I fields represent?) The patch is against current CVS, and any help testing/fixing/whatever is appreciated. To assemble Gekko instructions, pass "-mgekko" to as, and to disassemble them pass "-Mgekko" to objdump. -Anders Index: ppc.h =================================================================== RCS file: /cvsroot/gc-linux/binutils/include/opcode/ppc.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- ppc.h 16 Jul 2005 22:54:04 -0000 1.1.1.1 +++ ppc.h 17 Jul 2005 00:14:51 -0000 1.2 @@ -134,6 +134,9 @@ /* Opcode is supported by machine check APU. */ #define PPC_OPCODE_RFMCI 0x800000 +/* Opcode is only supported by PowerPC Gekko processor */ +#define PPC_OPCODE_GEKKO 0x1000000 + /* A macro to extract the major opcode from an instruction. */ #define PPC_OP(i) (((i) >> 26) & 0x3f) |
From: <aot...@us...> - 2005-07-17 00:15:02
|
Update of /cvsroot/gc-linux/binutils/opcodes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4543/opcodes Modified Files: ppc-dis.c ppc-opc.c Log Message: From: Anders M Montonen <amm...@cc...> To: gc-...@li... Subject: [Gc-linux-devel] Gekko binutils patch Date: Sun, 2 May 2004 19:11:02 +0300 (EET DST) Hi, this is a in-progress patch for adding support for the Gekko instructions to binutils (as and objdump). It's not well-tested at all, and it's incomplete because the load and store instructions are still missing because I don't really understand their encoding (eg. what do the W and I fields represent?) The patch is against current CVS, and any help testing/fixing/whatever is appreciated. To assemble Gekko instructions, pass "-mgekko" to as, and to disassemble them pass "-Mgekko" to objdump. -Anders Index: ppc-dis.c =================================================================== RCS file: /cvsroot/gc-linux/binutils/opcodes/ppc-dis.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- ppc-dis.c 16 Jul 2005 23:02:52 -0000 1.1.1.1 +++ ppc-dis.c 17 Jul 2005 00:14:51 -0000 1.2 @@ -83,6 +83,15 @@ dialect |= PPC_OPCODE_64; } + if (info->disassembler_options) + { + if (strstr (info->disassembler_options, "gekko") != NULL) + { + dialect &= ~(PPC_OPCODE_ALTIVEC | PPC_OPCODE_403); + dialect |= PPC_OPCODE_GEKKO; + } + } + ((struct dis_private *) &info->private_data)->dialect = dialect; return dialect; } @@ -304,4 +313,5 @@ fprintf (stream, " power4 Disassemble the Power4 instructions\n"); fprintf (stream, " 32 Do not disassemble 64-bit instructions\n"); fprintf (stream, " 64 Allow disassembly of 64-bit instructions\n"); + fprintf (stream, " gekko Disassemble the Gamecube Gekko instructions\n"); } Index: ppc-opc.c =================================================================== RCS file: /cvsroot/gc-linux/binutils/opcodes/ppc-opc.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- ppc-opc.c 16 Jul 2005 23:03:08 -0000 1.1.1.1 +++ ppc-opc.c 17 Jul 2005 00:14:51 -0000 1.2 @@ -1805,6 +1805,7 @@ #define PPCCHLK PPC_OPCODE_CACHELCK #define PPCCHLK64 PPC_OPCODE_CACHELCK | PPC_OPCODE_BOOKE64 #define PPCRFMCI PPC_OPCODE_RFMCI +#define PPCGEKKO PPC_OPCODE_GEKKO /* The opcode table. @@ -2398,6 +2399,61 @@ { "evdivws", VX(4, 1222), VX_MASK, PPCSPE, { RS, RA, RB } }, { "evdivwu", VX(4, 1223), VX_MASK, PPCSPE, { RS, RA, RB } }, +{ "ps_abs", XRC(4,264,0),XRA_MASK, PPCGEKKO, { FRT, FRB } }, +{ "ps_abs.", XRC(4,264,1),XRA_MASK, PPCGEKKO, { FRT, FRB } }, +{ "ps_add", A(4,21,0), AFRC_MASK, PPCGEKKO, { FRT, FRA, FRB } }, +{ "ps_add.", A(4,21,1), AFRC_MASK, PPCGEKKO, { FRT, FRA, FRB } }, +{ "ps_cmpo0", X(4,32),X_MASK|(3<<21), PPCGEKKO, { BF, FRA, FRB } }, +{ "ps_cmpo1", X(4,96),X_MASK|(3<<21), PPCGEKKO, { BF, FRA, FRB } }, +{ "ps_cmpu0", X(4,0), X_MASK|(3<<21), PPCGEKKO, { BF, FRA, FRB } }, +{ "ps_cmpu1", X(4,64),X_MASK|(3<<21), PPCGEKKO, { BF, FRA, FRB } }, +{ "ps_div", A(4,18,0), AFRC_MASK, PPCGEKKO, { FRT, FRA, FRB } }, +{ "ps_div.", A(4,18,1), AFRC_MASK, PPCGEKKO, { FRT, FRA, FRB } }, +{ "ps_merge00", A(4,528,0), AFRC_MASK, PPCGEKKO, { FRT, FRA, FRB } }, +{ "ps_merge00.",A(4,528,1), AFRC_MASK, PPCGEKKO, { FRT, FRA, FRB } }, +{ "ps_merge01", A(4,560,0), AFRC_MASK, PPCGEKKO, { FRT, FRA, FRB } }, +{ "ps_merge01.",A(4,560,1), AFRC_MASK, PPCGEKKO, { FRT, FRA, FRB } }, +{ "ps_merge10", A(4,597,0), AFRC_MASK, PPCGEKKO, { FRT, FRA, FRB } }, +{ "ps_merge10.",A(4,597,1), AFRC_MASK, PPCGEKKO, { FRT, FRA, FRB } }, +{ "ps_merge11", A(4,624,0), AFRC_MASK, PPCGEKKO, { FRT, FRA, FRB } }, +{ "ps_merge11.",A(4,624,1), AFRC_MASK, PPCGEKKO, { FRT, FRA, FRB } }, +{ "ps_mr", XRC(4,72,0), XRA_MASK, PPCGEKKO, { FRT, FRB } }, +{ "ps_mr.", XRC(4,72,1), XRA_MASK, PPCGEKKO, { FRT, FRB } }, +{ "ps_nabs", XRC(4,136,0),XRA_MASK, PPCGEKKO, { FRT, FRB } }, +{ "ps_nabs.", XRC(4,136,1),XRA_MASK, PPCGEKKO, { FRT, FRB } }, +{ "ps_neg", XRC(4,40,0), XRA_MASK, PPCGEKKO, { FRT, FRB } }, +{ "ps_neg.", XRC(4,40,1), XRA_MASK, PPCGEKKO, { FRT, FRB } }, +{ "ps_res", A(4,24,0), AFRAFRC_MASK,PPCGEKKO, { FRT, FRB } }, +{ "ps_res.", A(4,24,1), AFRAFRC_MASK,PPCGEKKO, { FRT, FRB } }, +{ "ps_rsqrte", A(4,26,0), AFRAFRC_MASK,PPCGEKKO, { FRT, FRB } }, +{ "ps_rsqrte.", A(4,26,1), AFRAFRC_MASK,PPCGEKKO, { FRT, FRB } }, +{ "ps_sub", A(4,20,0), AFRC_MASK, PPCGEKKO, { FRT, FRB } }, +{ "ps_sub.", A(4,20,1), AFRC_MASK, PPCGEKKO, { FRT, FRB } }, +{ "ps_madd", A(4,29,0), A_MASK, PPCGEKKO, { FRT,FRA,FRC,FRB } }, +{ "ps_madd.", A(4,29,1), A_MASK, PPCGEKKO, { FRT,FRA,FRC,FRB } }, +{ "ps_madds0", A(4,14,0), A_MASK, PPCGEKKO, { FRT,FRA,FRC,FRB } }, +{ "ps_madds0.", A(4,14,1), A_MASK, PPCGEKKO, { FRT,FRA,FRC,FRB } }, +{ "ps_madds1", A(4,15,0), A_MASK, PPCGEKKO, { FRT,FRA,FRC,FRB } }, +{ "ps_madds1.", A(4,15,1), A_MASK, PPCGEKKO, { FRT,FRA,FRC,FRB } }, +{ "ps_msub", A(4,28,0), A_MASK, PPCGEKKO, { FRT,FRA,FRC,FRB } }, +{ "ps_msub.", A(4,28,1), A_MASK, PPCGEKKO, { FRT,FRA,FRC,FRB } }, +{ "ps_mul", A(4,25,0), AFRB_MASK, PPCGEKKO, { FRT, FRA, FRC } }, +{ "ps_mul.", A(4,25,1), AFRB_MASK, PPCGEKKO, { FRT, FRA, FRC } }, +{ "ps_muls0", A(4,12,0), AFRB_MASK, PPCGEKKO, { FRT, FRA, FRC } }, +{ "ps_muls0.", A(4,12,1), AFRB_MASK, PPCGEKKO, { FRT, FRA, FRC } }, +{ "ps_muls1", A(4,13,0), AFRB_MASK, PPCGEKKO, { FRT, FRA, FRC } }, +{ "ps_muls1.", A(4,13,1), AFRB_MASK, PPCGEKKO, { FRT, FRA, FRC } }, +{ "ps_nmadd", A(4,31,0), A_MASK, PPCGEKKO, { FRT,FRA,FRC,FRB } }, +{ "ps_nmadd.", A(4,31,1), A_MASK, PPCGEKKO, { FRT,FRA,FRC,FRB } }, +{ "ps_nmsub", A(4,30,0), A_MASK, PPCGEKKO, { FRT,FRA,FRC,FRB } }, +{ "ps_nmsub.", A(4,30,1), A_MASK, PPCGEKKO, { FRT,FRA,FRC,FRB } }, +{ "ps_sel", A(4,23,0), A_MASK, PPCGEKKO, { FRT,FRA,FRC,FRB } }, +{ "ps_sel.", A(4,23,1), A_MASK, PPCGEKKO, { FRT,FRA,FRC,FRB } }, +{ "ps_sum0", A(4,10,0), A_MASK, PPCGEKKO, { FRT,FRA,FRC,FRB } }, +{ "ps_sum0.", A(4,10,1), A_MASK, PPCGEKKO, { FRT,FRA,FRC,FRB } }, +{ "ps_sum1", A(4,11,0), A_MASK, PPCGEKKO, { FRT,FRA,FRC,FRB } }, +{ "ps_sum1.", A(4,11,1), A_MASK, PPCGEKKO, { FRT,FRA,FRC,FRB } }, + { "mulli", OP(7), OP_MASK, PPCCOM, { RT, RA, SI } }, { "muli", OP(7), OP_MASK, PWRCOM, { RT, RA, SI } }, |
From: <aot...@us...> - 2005-07-17 00:15:00
|
Update of /cvsroot/gc-linux/binutils/gas/config In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4543/gas/config Modified Files: tc-ppc.c Log Message: From: Anders M Montonen <amm...@cc...> To: gc-...@li... Subject: [Gc-linux-devel] Gekko binutils patch Date: Sun, 2 May 2004 19:11:02 +0300 (EET DST) Hi, this is a in-progress patch for adding support for the Gekko instructions to binutils (as and objdump). It's not well-tested at all, and it's incomplete because the load and store instructions are still missing because I don't really understand their encoding (eg. what do the W and I fields represent?) The patch is against current CVS, and any help testing/fixing/whatever is appreciated. To assemble Gekko instructions, pass "-mgekko" to as, and to disassemble them pass "-Mgekko" to objdump. -Anders Index: tc-ppc.c =================================================================== RCS file: /cvsroot/gc-linux/binutils/gas/config/tc-ppc.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- tc-ppc.c 16 Jul 2005 22:22:01 -0000 1.1.1.1 +++ tc-ppc.c 17 Jul 2005 00:14:50 -0000 1.2 @@ -914,6 +914,9 @@ /* -many means to assemble for any architecture (PWR/PWRX/PPC). */ else if (strcmp (arg, "any") == 0) ppc_cpu |= PPC_OPCODE_ANY; + else if (strcmp (arg, "gekko") == 0) + ppc_cpu = (PPC_OPCODE_CLASSIC | PPC_OPCODE_PPC + | PPC_OPCODE_32 | PPC_OPCODE_GEKKO); else return 0; @@ -1106,6 +1109,7 @@ -maltivec generate code for AltiVec\n\ -me500, -me500x2 generate code for Motorola e500 core complex\n\ -mspe generate code for Motorola SPE instructions\n\ +-mgekko generate code for Gamecube Gekko\n\ -mregnames Allow symbolic names for registers\n\ -mno-regnames Do not allow symbolic names for registers\n")); #ifdef OBJ_ELF @@ -1150,6 +1154,9 @@ else ppc_cpu |= PPC_OPCODE_PPC | PPC_OPCODE_CLASSIC | PPC_OPCODE_32; } + else if (strcmp (default_cpu, "gekko") == 0) + ppc_cpu |= (PPC_OPCODE_PPC | PPC_OPCODE_CLASSIC | PPC_OPCODE_32 + | PPC_OPCODE_GEKKO); else as_fatal (_("Unknown default cpu = %s, os = %s"), default_cpu, default_os); |
From: <he...@us...> - 2005-07-11 16:02:06
|
Update of /cvsroot/gc-linux/linux/drivers/block/gcn-di In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24410 Modified Files: drive_20010608.h drive_20010831.h drive_20020402.h drive_20020823.h drive_all.S Log Message: Fixed a typo. Thanks to Costis for pointing it. Index: drive_20010608.h =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/block/gcn-di/drive_20010608.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- drive_20010608.h 12 Jun 2005 00:49:49 -0000 1.3 +++ drive_20010608.h 11 Jul 2005 16:01:55 -0000 1.4 @@ -1,7 +1,7 @@ static const char drive_20010608_firmware[] = "\xf4\xe1\xa5\x38\xc7\xdc\x00\x80\xf4\x71\xc8\xe9\x08\x80\x6e\xf4" - "\xe1\x1a\x5f\xc7\xdc\x6e\x80\xa0\xf8\xac\x01\xf4\xe1\x30\x5f\xc7" + "\xe1\x1a\x5f\xc7\xdc\x6e\x80\xa0\xf9\xac\x01\xf4\xe1\x30\x5f\xc7" "\xf4\x74\x47\xd0\x40\xf7\x20\x4c\x80\xf4\x74\x42\x9d\x08\xf7\x20" "\xd6\xfc\xf4\x74\x45\xb1\x08\xf7\x20\xd2\xfc\x80\x04\xc4\xda\xfc" "\xf4\x74\x1e\xd4\x08\xf0\x00\xc8\xda\xfc\xf5\x00\x01\xe9\x73\xc8" Index: drive_20010831.h =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/block/gcn-di/drive_20010831.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- drive_20010831.h 10 Jul 2005 15:14:36 -0000 1.1 +++ drive_20010831.h 11 Jul 2005 16:01:55 -0000 1.2 @@ -1,7 +1,7 @@ static const char drive_20010831_firmware[] = "\xf4\xe1\xa5\x38\xc7\xdc\x00\x80\xf4\x71\xf6\xeb\x08\x80\x6e\xf4" - "\xe1\x66\x5f\xc7\xdc\x6e\x80\xa0\xf8\xae\x01\xf4\xe1\x7c\x5f\xc7" + "\xe1\x66\x5f\xc7\xdc\x6e\x80\xa0\xf9\xae\x01\xf4\xe1\x7c\x5f\xc7" "\xf4\x74\x47\xd0\x40\xf7\x20\x4c\x80\xf4\x74\x39\x9e\x08\xf7\x20" "\xd6\xfc\xf4\x74\x02\xb3\x08\xf7\x20\xd2\xfc\x80\x04\xc4\xda\xfc" "\xf4\x74\x40\xd6\x08\xf0\x00\xc8\xda\xfc\xf5\x00\x01\xe9\x73\xc8" Index: drive_20020402.h =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/block/gcn-di/drive_20020402.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- drive_20020402.h 12 Jun 2005 00:49:49 -0000 1.4 +++ drive_20020402.h 11 Jul 2005 16:01:55 -0000 1.5 @@ -1,7 +1,7 @@ static const char drive_20020402_firmware[] = "\xf4\xe1\xa5\x38\xc7\xdc\x00\x80\xf4\x71\x2a\xea\x08\x80\x6e\xf4" - "\xe1\x13\x5f\xc7\xdc\x6e\x80\xa0\xf8\xb8\x01\xf4\xe1\x29\x5f\xc7" + "\xe1\x13\x5f\xc7\xdc\x6e\x80\xa0\xf9\xb8\x01\xf4\xe1\x29\x5f\xc7" "\xf4\x74\x47\xd0\x40\xf7\x20\x4c\x80\xf4\x74\xd6\x9c\x08\xf7\x20" "\xd6\xfc\xf4\x74\x28\xae\x08\xf7\x20\xd2\xfc\x80\x04\xc4\xda\xfc" "\xf4\x74\x7e\xd4\x08\xf0\x00\xc8\xda\xfc\xf5\x00\x01\xe9\x73\xc8" Index: drive_20020823.h =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/block/gcn-di/drive_20020823.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- drive_20020823.h 12 Jun 2005 00:49:49 -0000 1.3 +++ drive_20020823.h 11 Jul 2005 16:01:55 -0000 1.4 @@ -1,7 +1,7 @@ static const char drive_20020823_firmware[] = "\xf4\xe1\xa5\x38\xc7\xdc\x00\x80\xf4\x71\x7c\xea\x08\x80\x6e\xf4" - "\xe1\x13\x5f\xc7\xdc\x6e\x80\xa0\xf8\xb6\x01\xf4\xe1\x29\x5f\xc7" + "\xe1\x13\x5f\xc7\xdc\x6e\x80\xa0\xf9\xb6\x01\xf4\xe1\x29\x5f\xc7" "\xf4\x74\x47\xd0\x40\xf7\x20\x4c\x80\xf4\x74\x32\x9d\x08\xf7\x20" "\xd6\xfc\xf4\x74\x75\xae\x08\xf7\x20\xd2\xfc\x80\x04\xc4\xda\xfc" "\xf4\x74\xd9\xd4\x08\xf0\x00\xc8\xda\xfc\xf5\x00\x01\xe9\x73\xc8" Index: drive_all.S =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/block/gcn-di/drive_all.S,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- drive_all.S 10 Jul 2005 15:14:36 -0000 1.4 +++ drive_all.S 11 Jul 2005 16:01:55 -0000 1.5 @@ -231,7 +231,7 @@ /* zero out the bss */ mov bss, a0 sub d0, d0 - mov bss_size, d0 + mov bss_size, d1 jsr memset /* replace the current irq handler with ours */ |
From: <he...@us...> - 2005-07-10 15:14:48
|
Update of /cvsroot/gc-linux/linux/drivers/block/gcn-di In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31264 Modified Files: Makefile drive_all.S gcn-di.c Added Files: drive_20010831.h Log Message: Added support for the Panasonic Q drive. --- NEW FILE: drive_20010831.h --- static const char drive_20010831_firmware[] = "\xf4\xe1\xa5\x38\xc7\xdc\x00\x80\xf4\x71\xf6\xeb\x08\x80\x6e\xf4" "\xe1\x66\x5f\xc7\xdc\x6e\x80\xa0\xf8\xae\x01\xf4\xe1\x7c\x5f\xc7" "\xf4\x74\x47\xd0\x40\xf7\x20\x4c\x80\xf4\x74\x39\x9e\x08\xf7\x20" "\xd6\xfc\xf4\x74\x02\xb3\x08\xf7\x20\xd2\xfc\x80\x04\xc4\xda\xfc" "\xf4\x74\x40\xd6\x08\xf0\x00\xc8\xda\xfc\xf5\x00\x01\xe9\x73\xc8" "\xda\xfc\xf5\x00\x02\xe8\x03\xfc\xec\x00\xf4\x74\x02\xed\x40\x80" "\x02\xf0\x20\xc8\x78\x80\xc0\x92\x81\xdc\xaa\x80\xf5\x30\x00\xf4" "\x44\x79\xd1\x40\xf8\xaa\x00\x10\xf4\xd0\x74\xd1\x40\xf0\x01\xdc" "\xaa\x80\xf5\x30\x00\xf7\x48\xaa\x00\xe9\x07\xf4\xc4\x79\xd1\x40" "\x10\xfe\xf7\x48\xee\x00\xe8\x0c\xd8\x55\xe9\x25\xcc\xab\x80\xfd" "\x53\x00\xea\x0c\xcc\xab\x80\xc4\xa6\x81\xcc\xac\x80\xc4\x8a\x81" "\xdc\xaa\x80\xf8\xe0\x00\x10\xa0\xf5\x10\x01\xf5\x10\x02\xf5\x10" "\x03\xfe\xcc\xda\xfc\xf7\x00\xfe\xff\xc4\xda\xfc\xcc\x44\xfc\xf7" "\x00\xfe\xff\xc4\x44\xfc\xf2\x7c\xd0\x04\xcc\x5b\x80\xd8\x01\xe9" "\x02\x7c\x04\xf4\x75\x13\xd1\x40\x51\x20\x71\x34\xf4\x7d\x7f\x86" "\x08\xe9\x1b\x80\x00\xcd\xda\xfc\xd8\x00\xe9\x06\xf7\x01\xf7\xff" "\xea\x03\xf5\x09\x08\xc5\xda\xfc\xf4\x75\x78\xd1\x40\x14\xfe\x80" "\x01\xea\xe2\xf7\x10\xff\xf7\x21\xf4\x79\x00\xf0\x00\xe9\x0e\x80" "\x00\xf4\xc9\x78\xd1\x40\xd9\x00\xe8\x03\xf5\x10\x09\x21\xd9\x06" "\xe9\x0f\x61\x06\xf4\xc8\x78\xd1\x40\xd8\x00\xe8\x02\xd5\x06\x41" "\x06\xf4\xe0\xc7\xe1\xc7\xcc\xda\xfc\xf7\x00\xfd\xff\xc4\xda\xfc" "\xcc\x44\xfc\xf7\x00\xfe\xff\xc4\x44\xfc\xf2\x7c\xd0\x04\xcc\x5b" "\x80\xd8\x01\xe9\x02\x7c\x04\xf4\x75\x6f\xd1\x40\x51\x20\xfe\xf4" "\xe0\x10\xce\xc7\xa4\x0a\x08\x00\x01\x00\x00\x00" ; const int drive_20010831_firmware_size = 380; Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/block/gcn-di/Makefile,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- Makefile 17 May 2005 20:59:19 -0000 1.3 +++ Makefile 10 Jul 2005 15:14:36 -0000 1.4 @@ -1,7 +1,8 @@ obj-$(CONFIG_GAMECUBE_DI) += gcn-di.o -$(obj)/gcn-di.o: $(obj)/drive_20020402.h \ - $(obj)/drive_20010608.h \ +$(obj)/gcn-di.o: $(obj)/drive_20010608.h \ + $(obj)/drive_20010831.h \ + $(obj)/drive_20020402.h \ $(obj)/drive_20020823.h #CONFIG_GAMECUBE_DI_BUILD_FIRMWARE=y @@ -24,16 +25,21 @@ rm -f $(obj)/$(@F).o $(obj)/$(@F).elf $(obj)/$(@F).bin $(obj)/$(@F).s -targets += drive_20020402.h -$(obj)/drive_20020402.h: DRIVE_MODEL := 0x20020402 -$(obj)/drive_20020402.h: $(src)/drive_all.S FORCE - $(call if_changed,build_difw) - targets += drive_20010608.h $(obj)/drive_20010608.h: DRIVE_MODEL := 0x20010608 $(obj)/drive_20010608.h: $(src)/drive_all.S FORCE $(call if_changed,build_difw) +targets += drive_20010831.h +$(obj)/drive_20010831.h: DRIVE_MODEL := 0x20010831 +$(obj)/drive_20010831.h: $(src)/drive_all.S FORCE + $(call if_changed,build_difw) + +targets += drive_20020402.h +$(obj)/drive_20020402.h: DRIVE_MODEL := 0x20020402 +$(obj)/drive_20020402.h: $(src)/drive_all.S FORCE + $(call if_changed,build_difw) + targets += drive_20020823.h $(obj)/drive_20020823.h: DRIVE_MODEL := 0x20020823 $(obj)/drive_20020823.h: $(src)/drive_all.S FORCE Index: drive_all.S =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/block/gcn-di/drive_all.S,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- drive_all.S 11 Jun 2005 22:51:16 -0000 1.3 +++ drive_all.S 10 Jul 2005 15:14:36 -0000 1.4 @@ -30,8 +30,8 @@ .equ ADB1ON, (1<<3) -.equ irq_handler_vector, 0x804c /* 04, 06, 08 */ -.equ irq_depth, 0x805b /* 04, 06, 08 */ +.equ irq_handler_vector, 0x804c /* 04, 06, 08, Panasonic Q */ +.equ irq_depth, 0x805b /* 04, 06, 08, Panasonic Q */ .equ fake_command, 0xaa .equ set_drive_status_command, 0xee /* same as in gcn-di.c */ @@ -61,7 +61,7 @@ .section absolute - .org 0x0808aa /* 04, 06, 08 */ + .org 0x0808aa /* 04, 06, 08, Panasonic Q */ initialize_drive: .org 0x082f27 /* 04, 08 */ @@ -80,7 +80,6 @@ .equ disable_extensions_when_called_from, 0x0885c1 /* 04, 08 */ - #elif DRIVE_MODEL == 0x20010608 /* 06 */ .equ cmdbuf0, 0x80a8 @@ -102,7 +101,7 @@ .section absolute - .org 0x0808aa /* 04, 06, 08 */ + .org 0x0808aa /* 04, 06, 08, Panasonic Q */ initialize_drive: .org 0x082f2e @@ -143,7 +142,7 @@ .section absolute - .org 0x0808aa /* 04, 06, 08 */ + .org 0x0808aa /* 04, 06, 08, Panasonic Q */ initialize_drive: .org 0x082f27 /* 04, 08 */ @@ -162,6 +161,46 @@ .equ disable_extensions_when_called_from, 0x0885c1 /* 04, 08 */ +#elif DRIVE_MODEL == 0x20010831 /* Panasonic Q */ + + .equ cmdbuf0, 0x80aa + .equ drive_status, 0x81a6 + .equ drive_status2, 0x818a + + .equ bert, 0x8078 + .equ ernie, 0x8192 + .equ cactus, 0x40ed02 + + .equ entry_return_address, 0x08d640 + + .equ data1, 0x008000 + .equ data1_size, 0x6e + .equ data1_copy_from, 0x08ebf6 + + .equ bss, 0x00806e + .equ bss_size, 0x1ae + + .section absolute + + .org 0x0808aa /* 04, 06, 08, Panasonic Q */ + initialize_drive: + + .org 0x082f7a + memcpy: + + .org 0x082f9c + memset: + + .equ adb1_break_address, 0x089e39 + .org 0x089f84 + adb1_fixup_exit: + + .equ adb0_break_address, 0x08b302 + .org 0x08b30d + adb0_fixup_exit: + + .equ disable_extensions_when_called_from, 0x08867f + #else #error Sorry, unsupported drive. #endif @@ -462,7 +501,11 @@ .align 2 saved_irq_handler: +#if DRIVE_MODEL != 0x20010831 .long 0x00080A74 /* 04, 06, 08 */ +#else + .long 0x00080AA4 /* Panasonic Q */ +#endif enable_extensions: .byte 0x01 saved_cmdbuf0: Index: gcn-di.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/block/gcn-di/gcn-di.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- gcn-di.c 6 Jul 2005 22:58:52 -0000 1.9 +++ gcn-di.c 10 Jul 2005 15:14:36 -0000 1.10 @@ -347,6 +347,20 @@ }, }; +/* + * Panasonic Q (20010831) firmware extensions. + */ + +#include "drive_20010831.h" + +static struct di_drive_code drive_20010831[] = { + [0] = { + .address = DI_DRIVE_CODE_BASE, + .len = sizeof(drive_20010831_firmware), + .code = (u8 *)drive_20010831_firmware, + }, +}; + /* * Drive operations table, incomplete. @@ -1326,6 +1340,10 @@ di_patch(ddev, drive_20020823, ARRAY_SIZE(drive_20020823)); break; + case 0x20010831: + di_patch(ddev, drive_20010831, + ARRAY_SIZE(drive_20010831)); + break; default: di_printk(KERN_ERR, "sorry, drive %x is not yet" " supported\n", |
From: <he...@us...> - 2005-07-07 00:16:41
|
Update of /cvsroot/gc-linux/htdocs/xml/en In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17147 Modified Files: news.xml Log Message: 7 Jul 2005, mfe-distro is out! Index: news.xml =================================================================== RCS file: /cvsroot/gc-linux/htdocs/xml/en/news.xml,v retrieving revision 1.37 retrieving revision 1.38 diff -u -d -r1.37 -r1.38 --- news.xml 31 May 2005 19:41:37 -0000 1.37 +++ news.xml 7 Jul 2005 00:16:30 -0000 1.38 @@ -2,6 +2,11 @@ <?xml-stylesheet href="news.xsl" type="text/xsl"?> <news> <item> + <date>7 Jul 2005</date> + <title>mfe-distro is out!</title> + <text>The Mini (MPlayer) Front-End Distro proof of concept is a small gc-linux distribution designed to play your media files directly from the GameCube DVD drive. It doesn't require a BroadBand Adapter, and is completely joypad driven. It makes use of the <a href="down/isobel/mfe/README">"mfe"</a> front-end and includes an enhanced Simple Directmedia Layer with kirin's latest YUV acceleration code. <a href="http://sourceforge.net/project/shownotes.php?release_id=339700">Read</a> a bit more about it and <a href="http://sourceforge.net/project/showfiles.php?group_id=98581&package_id=156977">download</a> it. NOTE: modchip users may need to use an updated <a href="down/isobel/mfe-distro/mfe-bo11.dol">mfe-boot.dol</a>.</text> + </item> + <item> <date>31 May 2005</date> <title>Improved DVD Interface driver</title> <text>We managed to reduce to a minimum the drive spin-ups needed (thanks cheqmate!), media is now successfully mounted faster, and errors are retried several times to help recover from possible temporary failures. Want to check this? Visit the <a href="docs/download.html">Latest Kernel Build</a> page.</text> |
From: <he...@us...> - 2005-07-06 22:59:01
|
Update of /cvsroot/gc-linux/linux/drivers/block/gcn-di In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5358 Modified Files: gcn-di.c Log Message: Force use of parenthesi in conditional. Index: gcn-di.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/block/gcn-di/gcn-di.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- gcn-di.c 6 Jul 2005 22:56:15 -0000 1.8 +++ gcn-di.c 6 Jul 2005 22:58:52 -0000 1.9 @@ -810,7 +810,7 @@ unsigned long timeout = jiffies + secs*HZ; /* busy-wait for transfer complete */ - while(readl(cr_reg) & DI_CR_TSTART && time_before(jiffies, timeout)) { + while((readl(cr_reg) & DI_CR_TSTART) && time_before(jiffies, timeout)) { cpu_relax(); } |
From: <he...@us...> - 2005-07-06 22:56:53
|
Update of /cvsroot/gc-linux/linux/drivers/block/gcn-di In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3223 Modified Files: gcn-di.c Log Message: Calm down the hardware a bit before anything. Hard reset the drive if the privileged commands are set to fail. Fix a kernel panic when a custom command fails and debug output is print. Index: gcn-di.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/block/gcn-di/gcn-di.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- gcn-di.c 3 Jul 2005 10:20:54 -0000 1.7 +++ gcn-di.c 6 Jul 2005 22:56:15 -0000 1.8 @@ -224,7 +224,8 @@ struct di_device *ddev; }; -#define di_command_ok(cmd) ((cmd)->result == DI_SR_TCINT) +#define di_result_ok(result) ((result) == DI_SR_TCINT) +#define di_command_ok(cmd) (di_result_ok((cmd)->result)) enum { __DI_INTEROPERABLE = 0, @@ -1174,6 +1175,7 @@ { u32 __iomem *reset_reg = (u32 __iomem *)0xcc003024; u32 reset; + #define FLIPPER_RESET_DVD 0x00000004 ddev->flags = DI_RESETTING|DI_MEDIA_CHANGED; @@ -1205,7 +1207,7 @@ /* * Enables the "privileged" command set. */ -static void di_enable_privileged_commands(struct di_device *ddev) +static int di_enable_privileged_commands(struct di_device *ddev) { struct di_command cmd; @@ -1213,7 +1215,7 @@ di_op_enable1(&cmd, ddev); di_run_command_and_wait(&cmd); di_op_enable2(&cmd, ddev); - di_run_command_and_wait(&cmd); + return di_run_command_and_wait(&cmd); } /* @@ -1242,6 +1244,7 @@ /* ... and actually write to it */ opcode.op = DI_OP(DI_OP_CUSTOM, DI_DIR_READ | DI_MODE_IMMED); + opcode.name = "custom write"; di_op_custom(&cmd, ddev, &opcode); memcpy(&cmd.cmdbuf0, data, chunk_size); di_run_command(&cmd); @@ -1283,6 +1286,17 @@ static struct di_drive_info drive_info __attribute__ ((aligned (DI_DMA_ALIGN+1))); struct di_command cmd; + int result; + + /* check that no one is banning access to the privileged command set */ + result = di_enable_privileged_commands(ddev); + if (!di_result_ok(result)) { + DBG("Uhmm, looks like a bad-mannered drive code is" + " already in place\n"); + DBG("Let's hard reset the drive then...\n"); + + di_reset(ddev); + } /* we'll use the drive model to select the appropiate firmware */ memset(&drive_info, 0, sizeof(drive_info)); @@ -1816,6 +1830,9 @@ set_bit(__DI_MEDIA_CHANGED, &ddev->flags); + /* calm down things a bit first */ + di_quiesce(ddev); + /* request interrupt */ retval = request_irq(ddev->irq, di_irq_handler, 0, DRV_MODULE_NAME, ddev); |
From: <aot...@us...> - 2005-07-06 18:28:52
|
Update of /cvsroot/gc-linux/linux/drivers/block In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25896/drivers/block Modified Files: Kconfig gcn-sd.c Log Message: - Rename CONFIG_EXI to CONFIG_GAMECUBE_EXI - Add drivers/exi/Kconfig - Relocate CONFIG_GAMECUBE_RTC to drivers/exi/Kconfig - Update default config accordingly Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/block/Kconfig,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -r1.16 -r1.17 --- Kconfig 23 Jun 2005 23:16:30 -0000 1.16 +++ Kconfig 6 Jul 2005 18:28:01 -0000 1.17 @@ -96,7 +96,7 @@ config GAMECUBE_MEMCARD tristate "Nintendo GameCube memory card (EXPERIMENTAL)" - depends on GAMECUBE && EXI && EXPERIMENTAL && BROKEN + depends on GAMECUBE && GAMECUBE_EXI && EXPERIMENTAL && BROKEN help This enables support for using memory cards compatible with the Nintendo GameCube. @@ -107,7 +107,7 @@ config GAMECUBE_SD tristate "Nintendo GameCube SD and MMC memory card (EXPERIMENTAL)" - depends on GAMECUBE && EXI && EXPERIMENTAL && BROKEN + depends on GAMECUBE && GAMECUBE_EXI && EXPERIMENTAL && BROKEN help This enables support for SD and MMC cards WARNING: driver is in alpha stage. Only reading supported. Card Index: gcn-sd.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/block/gcn-sd.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- gcn-sd.c 6 Jan 2005 20:08:21 -0000 1.2 +++ gcn-sd.c 6 Jul 2005 18:28:02 -0000 1.3 @@ -82,7 +82,7 @@ * # add the following lines to /drivers/block/Kconfig: * config GAMECUBE_SD * tristate "Nintendo GameCube SD and MMC memory card (EXPERIMENTAL)" - * depends on GAMECUBE && EXI && EXPERIMENTAL + * depends on GAMECUBE && GAMECUBE_EXI && EXPERIMENTAL * help * This enables support for SD and MMC memory cards * |
From: <aot...@us...> - 2005-07-06 18:28:51
|
Update of /cvsroot/gc-linux/linux/arch/ppc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25896/arch/ppc Modified Files: Kconfig Log Message: - Rename CONFIG_EXI to CONFIG_GAMECUBE_EXI - Add drivers/exi/Kconfig - Relocate CONFIG_GAMECUBE_RTC to drivers/exi/Kconfig - Update default config accordingly Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/ppc/Kconfig,v retrieving revision 1.27 retrieving revision 1.28 diff -u -d -r1.27 -r1.28 --- Kconfig 23 Jun 2005 23:16:21 -0000 1.27 +++ Kconfig 6 Jul 2005 18:27:59 -0000 1.28 @@ -682,16 +682,6 @@ depends on ADS8272 default y -config GAMECUBE_RTC - bool "Nintendo GameCube Real Time Clock and SRAM" - depends on GAMECUBE && EXI - default y - help - If you say yes to this option, support will be included for the - Real Time Clock and SRAM of the Nintendo GameCube. - - If in doubt, say Y here. - config GAMECUBE_CONSOLE bool "Nintendo GameCube debug console" depends on GAMECUBE @@ -1211,20 +1201,10 @@ source "drivers/pci/Kconfig" -config EXI - bool "EXI support (EXPERIMENTAL)" - depends on GAMECUBE && EXPERIMENTAL - default y - help - This adds support for the Expansion Interface as found in - the Nintendo GameCube. On the Expansion Interface sit the - memory card slots, serial ports I & II, the Mask ROM, RTC, - SRAM and UART. - - Say Y. - source "drivers/pcmcia/Kconfig" +source "drivers/exi/Kconfig" + endmenu menu "Advanced setup" |
From: <aot...@us...> - 2005-07-06 18:28:50
|
Update of /cvsroot/gc-linux/linux/arch/ppc/configs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25896/arch/ppc/configs Modified Files: gamecube_defconfig Log Message: - Rename CONFIG_EXI to CONFIG_GAMECUBE_EXI - Add drivers/exi/Kconfig - Relocate CONFIG_GAMECUBE_RTC to drivers/exi/Kconfig - Update default config accordingly Index: gamecube_defconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/ppc/configs/gamecube_defconfig,v retrieving revision 1.30 retrieving revision 1.31 diff -u -d -r1.30 -r1.31 --- gamecube_defconfig 6 Jul 2005 15:29:55 -0000 1.30 +++ gamecube_defconfig 6 Jul 2005 18:28:01 -0000 1.31 @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.12 -# Wed Jul 6 11:04:28 2005 +# Wed Jul 6 14:13:35 2005 # CONFIG_MMU=y CONFIG_GENERIC_HARDIRQS=y @@ -116,7 +116,6 @@ # CONFIG_PQ2FADS is not set # CONFIG_LITE5200 is not set # CONFIG_MPC834x_SYS is not set -CONFIG_GAMECUBE_RTC=y # CONFIG_GAMECUBE_CONSOLE is not set CONFIG_GAMECUBE_RESET=y # CONFIG_SMP is not set @@ -133,7 +132,6 @@ # CONFIG_GENERIC_ISA_DMA=y # CONFIG_PCI_DOMAINS is not set -CONFIG_EXI=y # # PCCARD (PCMCIA/CardBus) support @@ -141,6 +139,12 @@ # CONFIG_PCCARD is not set # +# Expansion Interface (EXI) support +# +CONFIG_GAMECUBE_EXI=y +CONFIG_GAMECUBE_RTC=y + +# # Advanced setup # # CONFIG_ADVANCED_OPTIONS is not set |
From: <aot...@us...> - 2005-07-06 18:28:48
|
Update of /cvsroot/gc-linux/linux/drivers In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25896/drivers Modified Files: Makefile Log Message: - Rename CONFIG_EXI to CONFIG_GAMECUBE_EXI - Add drivers/exi/Kconfig - Relocate CONFIG_GAMECUBE_RTC to drivers/exi/Kconfig - Update default config accordingly Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/Makefile,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- Makefile 6 Jul 2005 16:48:35 -0000 1.9 +++ Makefile 6 Jul 2005 18:28:01 -0000 1.10 @@ -64,5 +64,5 @@ obj-$(CONFIG_BLK_DEV_SGIIOC4) += sn/ obj-y += firmware/ obj-$(CONFIG_CRYPTO) += crypto/ -obj-$(CONFIG_EXI) += exi/ obj-$(CONFIG_GAMECUBE_SI) += input/si/ +obj-$(CONFIG_GAMECUBE_EXI) += exi/ |
From: <aot...@us...> - 2005-07-06 18:28:17
|
Update of /cvsroot/gc-linux/linux/drivers/net In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25896/drivers/net Modified Files: Kconfig Log Message: - Rename CONFIG_EXI to CONFIG_GAMECUBE_EXI - Add drivers/exi/Kconfig - Relocate CONFIG_GAMECUBE_RTC to drivers/exi/Kconfig - Update default config accordingly Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/net/Kconfig,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- Kconfig 23 Jun 2005 20:02:19 -0000 1.13 +++ Kconfig 6 Jul 2005 18:28:08 -0000 1.14 @@ -176,7 +176,7 @@ config GAMECUBE_BBA bool "Nintendo GameCube BroadBand Adapter network driver" - depends on NET_ETHERNET && GAMECUBE && EXI + depends on NET_ETHERNET && GAMECUBE && GAMECUBE_EXI help Nintendo GameCube Broadband Adapter 10/100 Ethernet support. |
From: <aot...@us...> - 2005-07-06 18:28:17
|
Update of /cvsroot/gc-linux/linux/drivers/exi In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25896/drivers/exi Modified Files: Makefile Added Files: Kconfig Log Message: - Rename CONFIG_EXI to CONFIG_GAMECUBE_EXI - Add drivers/exi/Kconfig - Relocate CONFIG_GAMECUBE_RTC to drivers/exi/Kconfig - Update default config accordingly --- NEW FILE: Kconfig --- # # Nintendo GameCube Expansion Interface (EXI) support. # menu "Expansion Interface (EXI) support" config GAMECUBE_EXI bool "Expansion Interface (EXI) support (EXPERIMENTAL)" depends on GAMECUBE && EXPERIMENTAL default y help This adds support for the Expansion Interface as found in the Nintendo GameCube. On the Expansion Interface sit the memory card slots, serial ports I & II, the Mask ROM, RTC, SRAM and UART. Say Y. config GAMECUBE_RTC bool "Real Time Clock and SRAM support" depends on GAMECUBE && GAMECUBE_EXI default y help If you say yes to this option, support will be included for the Real Time Clock and SRAM of the Nintendo GameCube. If in doubt, say Y here. endmenu Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/exi/Makefile,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- Makefile 13 Mar 2005 21:49:16 -0000 1.4 +++ Makefile 6 Jul 2005 18:28:07 -0000 1.5 @@ -2,4 +2,4 @@ # Makefile for the EXI bus core. # -obj-$(CONFIG_EXI) += exi-driver.o exi-hw.o +obj-$(CONFIG_GAMECUBE_EXI) += exi-driver.o exi-hw.o |
From: <aot...@us...> - 2005-07-06 16:48:44
|
Update of /cvsroot/gc-linux/linux/drivers/input In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8158/drivers/input Modified Files: Kconfig Log Message: - Consolidate SI code into drivers/input/si/ Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/input/Kconfig,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- Kconfig 23 Jun 2005 20:02:18 -0000 1.5 +++ Kconfig 6 Jul 2005 16:48:35 -0000 1.6 @@ -151,16 +151,7 @@ source "drivers/input/gameport/Kconfig" -config GAMECUBE_SI - tristate "Nintendo GameCube Serial Interface" - depends on GAMECUBE - ---help--- - Say Y here if you want to use the standard pads as joysticks or - want to use a keyboard. Everything is autodetected. - - NOTE: Keyboard detection doesn't work 100%. Building this as a - module is recommended, this way you can unload/load the driver - to re-detect. +source "drivers/input/si/Kconfig" endmenu |
From: <aot...@us...> - 2005-07-06 16:48:43
|
Update of /cvsroot/gc-linux/linux/drivers In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8158/drivers Modified Files: Makefile Log Message: - Consolidate SI code into drivers/input/si/ Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/Makefile,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- Makefile 23 Jun 2005 20:02:17 -0000 1.8 +++ Makefile 6 Jul 2005 16:48:35 -0000 1.9 @@ -65,3 +65,4 @@ obj-y += firmware/ obj-$(CONFIG_CRYPTO) += crypto/ obj-$(CONFIG_EXI) += exi/ +obj-$(CONFIG_GAMECUBE_SI) += input/si/ |
From: <aot...@us...> - 2005-07-06 16:47:08
|
Update of /cvsroot/gc-linux/linux/drivers/input/si In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7244/drivers/input/si Added Files: Kconfig Makefile Log Message: - Consolidate SI code into drivers/input/si/ --- NEW FILE: Kconfig --- # # Nintendo GameCube Serial Interface (SI) support # config GAMECUBE_SI tristate "Serial Interface (SI) support" depends on GAMECUBE ---help--- Say Y here if you want to use the standard pads as joysticks or want to use a keyboard. Everything is autodetected. NOTE: Keyboard detection doesn't work 100%. Building this as a module is recommended, this way you can unload/load the driver to re-detect. --- NEW FILE: Makefile --- # # Makefile for the Nintendo GameCube Serial Interface. # obj-$(CONFIG_GAMECUBE_SI) += gcn-si.o |
From: <aot...@us...> - 2005-07-06 16:44:48
|
Update of /cvsroot/gc-linux/linux/drivers/input In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6291 Removed Files: Makefile Log Message: - Consolidate SI code into drivers/input/si/ --- Makefile DELETED --- |
From: <aot...@us...> - 2005-07-06 16:41:17
|
Update of /cvsroot/gc-linux/linux/drivers/input/si In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4511/si Added Files: gcn-keymap.h Log Message: - Consolidate SI code into drivers/input/si/ - Renamed drivers/input/gcn-keypad.h to drivers/input/si/gcn-keypad.h --- NEW FILE: gcn-keymap.h --- /* * keymap for a Datel adapater + US keyboard (not the normal keyboard) * not mapped: * printscreen / sysreq * scroll lcok * pause / break * numlock * windows key 1 * windows key 2 * windows menu key */ static unsigned char gamecube_keymap[] = { /* 00 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_HOME, KEY_END, /* 08 */ KEY_PAGEUP, KEY_PAGEDOWN, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, /* 10 */ KEY_A, KEY_B, KEY_C, KEY_D, KEY_E, KEY_F, KEY_G, KEY_H, /* 18 */ KEY_I, KEY_J, KEY_K, KEY_L, KEY_M, KEY_N, KEY_O, KEY_P, /* 20 */ KEY_Q, KEY_R, KEY_S, KEY_T, KEY_U, KEY_V, KEY_W, KEY_X, /* 28 */ KEY_Y, KEY_Z, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, /* 30 */ KEY_7, KEY_8, KEY_9, KEY_0, KEY_MINUS, KEY_EQUAL, KEY_BACKSLASH, KEY_APOSTROPHE, /* 38 */ KEY_LEFTBRACE, KEY_EQUAL, KEY_KPASTERISK, KEY_RIGHTBRACE, KEY_COMMA, KEY_DOT, KEY_SLASH, KEY_RESERVED, /* 40 */ KEY_F1, KEY_F2, KEY_F3, KEY_F4, KEY_F5, KEY_F6, KEY_F7, KEY_F8, /* 48 */ KEY_F9, KEY_F10, KEY_F11, KEY_F12, KEY_ESC, KEY_INSERT, KEY_DELETE, KEY_GRAVE, /* 50 */ KEY_BACKSPACE, KEY_TAB, KEY_RESERVED, KEY_CAPSLOCK, KEY_LEFTSHIFT, KEY_RIGHTSHIFT, KEY_LEFTCTRL, KEY_LEFTALT, /* 58 */ KEY_RESERVED, KEY_SPACE, KEY_RESERVED, KEY_RESERVED, KEY_LEFT, KEY_DOWN, KEY_UP, KEY_RIGHT, /* 60 */ KEY_RESERVED, KEY_ENTER, KEY_RESERVED, KEY_RESERVED, KEY_SEMICOLON, KEY_KPPLUS, KEY_RESERVED, KEY_RESERVED, /* 68 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, /* 70 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, /* 78 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, /* 80 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, /* 88 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, /* 90 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, /* 98 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, /* a0 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, /* a8 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, /* b0 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, /* b8 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, /* c0 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, /* c8 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, /* d0 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, /* d8 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, /* e0 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, /* e8 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, /* f0 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, /* f8 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED }; |
From: <aot...@us...> - 2005-07-06 16:41:17
|
Update of /cvsroot/gc-linux/linux/drivers/input In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4511 Removed Files: gcn-keymap.h Log Message: - Consolidate SI code into drivers/input/si/ - Renamed drivers/input/gcn-keypad.h to drivers/input/si/gcn-keypad.h --- gcn-keymap.h DELETED --- |
From: <aot...@us...> - 2005-07-06 16:39:26
|
Update of /cvsroot/gc-linux/linux/drivers/input In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3124 Removed Files: gcn-si.c Log Message: - Consolidate SI code into drivers/input/si/ - Renamed drivers/input/gcn-si.c to drivers/input/si/gcn-si.c --- gcn-si.c DELETED --- |
From: <aot...@us...> - 2005-07-06 16:39:23
|
Update of /cvsroot/gc-linux/linux/drivers/input/si In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3124/si Added Files: gcn-si.c Log Message: - Consolidate SI code into drivers/input/si/ - Renamed drivers/input/gcn-si.c to drivers/input/si/gcn-si.c --- NEW FILE: gcn-si.c --- /* * drivers/input/gcn-si.c * * Nintendo GameCube Serial Interface driver * Copyright (C) 2004 The GameCube Linux Team * Copyright (C) 2004 Steven Looman * * 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. * */ /* #define SI_DEBUG */ #include <linux/module.h> #include <linux/init.h> #include <linux/input.h> #include <linux/ioport.h> #include <linux/timer.h> #include <linux/delay.h> #include <asm/io.h> #ifdef SI_DEBUG # define DPRINTK(fmt, args...) \ printk(KERN_ERR "%s: " fmt, __FUNCTION__ , ## args) #else # define DPRINTK(fmt, args...) #endif /* * Defining HACK_FORCE_KEYBOARD_PORT allows one to specify a port that * will be identified as a keyboard port in case the port gets incorrectly * identified. */ #define HACK_FORCE_KEYBOARD_PORT #define DRV_MODULE_NAME "gcn-si" #define DRV_DESCRIPTION "Nintendo GameCube Serial Interface driver" #define DRV_AUTHOR "Steven Looman <st...@kr...>" MODULE_DESCRIPTION(DRV_DESCRIPTION); MODULE_AUTHOR(DRV_AUTHOR); MODULE_LICENSE("GPL"); #define PFX DRV_MODULE_NAME ": " #define si_printk(level, format, arg...) \ printk(level PFX format , ## arg) /* * This keymap is for a datel adapter + normal US keyboard. */ #include "gcn-keymap.h" #define REFRESH_TIME HZ/100 #define SICOUTBUF(x) ((void __iomem *)(0xcc006400 + (x)*12)) #define SICINBUFH(x) ((void __iomem *)(0xcc006404 + (x)*12)) #define SICINBUFL(x) ((void __iomem *)(0xcc006408 + (x)*12)) #define SIPOLL ((void __iomem *)0xcc006430) #define SICOMCSR ((void __iomem *)0xcc006434) #define SISR ((void __iomem *)0xcc006438) #define SIEXILK ((void __iomem *)0xcc00643c) #define ID_PAD 0x0900 #define ID_KEYBOARD 0x0820 #define ID_WIRELESS_BIT (1 << 15) #define ID_WAVEBIRD_BIT (1 << 8) #define PAD_START (1 << 28) #define PAD_Y (1 << 27) #define PAD_X (1 << 26) #define PAD_B (1 << 25) #define PAD_A (1 << 24) #define PAD_LT (1 << 22) #define PAD_RT (1 << 21) #define PAD_Z (1 << 20) #define PAD_UP (1 << 19) #define PAD_DOWN (1 << 18) #define PAD_RIGHT (1 << 17) #define PAD_LEFT (1 << 16) static struct resource gcn_si_resources = { DRV_MODULE_NAME, 0xcc006400, 0xcc006500, IORESOURCE_MEM | IORESOURCE_BUSY }; typedef struct { unsigned char old[3]; } keyboard_status; typedef enum {CTL_PAD,CTL_KEYBOARD,CTL_UNKNOWN} control_type; struct { control_type id; int si_id; unsigned int raw[2]; #if 0 unsigned char errStat:1; unsigned char errLatch:1; #endif struct input_dev idev; struct timer_list timer; union { keyboard_status keyboard; }; char name[32]; /* char phys[32]; */ } port[4]; #ifdef HACK_FORCE_KEYBOARD_PORT static int gcn_si_force_keyboard_port = -1; #ifdef MODULE module_param_named(force_keyboard_port, gcn_si_force_keyboard_port, int, 0644); MODULE_PARM_DESC(force_keyboard_port, "port n becomes a keyboard port if" " automatic identification fails"); #else static int __init gcn_si_force_keyboard_port_setup(char *line) { if (sscanf(line, "%d", &gcn_si_force_keyboard_port) != 1) { gcn_si_force_keyboard_port = -1; } return 1; } __setup("force_keyboard_port=", gcn_si_force_keyboard_port_setup); #endif /* MODULE */ #endif /* HACK_FORCE_KEYBOARD_PORT */ /** * */ static void gcn_si_reset(void) { int i; /* clear si registers */ /* SICOUTBUF */ for (i = 0; i < 4; ++i) writel(0, SICOUTBUF(i)); /* SICINBUFH */ for (i = 0; i < 4; ++i) writel(0, SICINBUFH(i)); /* SICINBUFL */ for (i = 0; i < 4; ++i) writel(0, SICINBUFL(i)); writel(0, SIPOLL); writel(0, SICOMCSR); writel(0, SISR); writel(0, (void __iomem *)0xcc006480); writel(0, (void __iomem *)0xcc006484); writel(0, (void __iomem *)0xcc006488); writel(0, (void __iomem *)0xcc00648c); writel(0, (void __iomem *)0xcc006490); writel(0, (void __iomem *)0xcc006494); writel(0, (void __iomem *)0xcc006498); writel(0, (void __iomem *)0xcc00649c); writel(0, (void __iomem *)0xcc0064a0); writel(0, (void __iomem *)0xcc0064a4); writel(0, (void __iomem *)0xcc0064a8); writel(0, (void __iomem *)0xcc0064ac); } /** * */ static void gcn_si_wait_transfer_done(void) { unsigned long transfer_done; do { transfer_done = readl(SICOMCSR) & (1 << 31); } while (!transfer_done); writel(readl(SICOMCSR) | (1 << 31), SICOMCSR); /* ack IRQ */ } /** * */ static unsigned long gcn_si_get_controller_id(int port) { gcn_si_reset(); writel(0, SIPOLL); writel(0, SICOUTBUF(port)); writel(0x80000000, SISR); writel(0xd0010001 | port << 1, SICOMCSR); gcn_si_wait_transfer_done(); return readl((void __iomem *)0xcc006480); } /** * */ static void gcn_si_set_polling(void) { unsigned long pad_bits = 0; int i; for (i = 0; i < 4; ++i) { switch (port[i].id) { case CTL_PAD: writel(0x00400300, SICOUTBUF(i)); break; case CTL_KEYBOARD: writel(0x00540000, SICOUTBUF(i)); break; default: continue; } pad_bits |= 1 << (7 - i); } writel(0x00F70200 | pad_bits, SIPOLL); writel(0x80000000, SISR); writel(0xC0010801, SICOMCSR); gcn_si_wait_transfer_done(); } /** * */ static void gcn_si_set_rumbling(int portno, int rumble) { if (rumble) { writel(0x00400001, SICOUTBUF(portno)); writel(0x80000000, SISR); } else { writel(0x00400000, SICOUTBUF(portno)); writel(0x80000000, SISR); } } /** * */ static void gcn_si_timer(unsigned long portno) { unsigned long raw[2]; unsigned char key[3]; unsigned char oldkey; int i; raw[0] = readl(SICINBUFH(portno)); raw[1] = readl(SICINBUFL(portno)); switch (port[portno].id) { case CTL_PAD: /* buttons */ input_report_key(&port[portno].idev, BTN_A, raw[0] & PAD_A); input_report_key(&port[portno].idev, BTN_B, raw[0] & PAD_B); input_report_key(&port[portno].idev, BTN_X, raw[0] & PAD_X); input_report_key(&port[portno].idev, BTN_Y, raw[0] & PAD_Y); input_report_key(&port[portno].idev, BTN_Z, raw[0] & PAD_Z); input_report_key(&port[portno].idev, BTN_TL, raw[0] & PAD_LT); input_report_key(&port[portno].idev, BTN_TR, raw[0] & PAD_RT); input_report_key(&port[portno].idev, BTN_START, raw[0] & PAD_START); /* axis */ /* a stick */ input_report_abs(&port[portno].idev, ABS_X, raw[0] >> 8 & 0xFF); input_report_abs(&port[portno].idev, ABS_Y, 0xFF - (raw[0] >> 0 & 0xFF)); /* b pad */ if (raw[0] & PAD_RIGHT) input_report_abs(&port[portno].idev, ABS_HAT0X, 1); else if (raw[0] & PAD_LEFT) input_report_abs(&port[portno].idev, ABS_HAT0X, -1); else input_report_abs(&port[portno].idev, ABS_HAT0X, 0); if (raw[0] & PAD_UP) input_report_abs(&port[portno].idev, ABS_HAT0Y, 1); else if (raw[0] & PAD_DOWN) input_report_abs(&port[portno].idev, ABS_HAT0Y, -1); else input_report_abs(&port[portno].idev, ABS_HAT0Y, 0); /* c stick */ input_report_abs(&port[portno].idev, ABS_RX, raw[1] >> 24 & 0xFF); input_report_abs(&port[portno].idev, ABS_RY, raw[1] >> 16 & 0xFF); /* triggers */ input_report_abs(&port[portno].idev, ABS_BRAKE, raw[1] >> 8 & 0xFF); input_report_abs(&port[portno].idev, ABS_GAS, raw[1] >> 0 & 0xFF); break; case CTL_KEYBOARD: key[0] = (raw[0] >> 12) & 0xFF; key[1] = (raw[0] >> 4) & 0xFF; key[2] = (raw[0] << 4) & 0xFF; key[2] |= (raw[1] << 28) & 0xFF; /* check if anything was released */ for (i = 0; i < 3; ++i) { oldkey = port[portno].keyboard.old[i]; if (oldkey != key[0] && oldkey != key[1] && oldkey != key[2]) input_report_key(&port[portno].idev, gamecube_keymap[oldkey], 0); } /* report keys */ for (i = 0; i < 3; ++i) { if (key[i]) input_report_key(&port[portno].idev, gamecube_keymap[key[i]], 1); port[portno].keyboard.old[i] = key[i]; } break; default: break; } input_sync(&port[portno].idev); mod_timer(&port[portno].timer, jiffies + REFRESH_TIME); } /** * */ static int gcn_si_open(struct input_dev *idev) { int portno = (int)idev->private; init_timer(&port[portno].timer); port[portno].timer.function = gcn_si_timer; port[portno].timer.data = (int)idev->private; port[portno].timer.expires = jiffies + REFRESH_TIME; add_timer(&port[portno].timer); return 0; } /** * */ static void gcn_si_close(struct input_dev *idev) { int portno = (int)idev->private; del_timer(&port[portno].timer); } /** * */ static int gcn_si_event(struct input_dev *dev, unsigned int type, unsigned int code, int value) { int portno = (int)dev->private; if (type == EV_FF) { if (code == FF_RUMBLE) { gcn_si_set_rumbling(portno, value); } } return value; } /** * */ static int __init gcn_si_init(void) { int i; int j; si_printk(KERN_INFO, "%s\n", DRV_DESCRIPTION); if (request_resource(&iomem_resource, &gcn_si_resources) < 0) { printk(KERN_WARNING PFX "resource busy\n"); return -EBUSY; } for (i = 0; i < 4; ++i) { memset(&port[i], 0, sizeof(port[i])); /* probe ports */ port[i].si_id = gcn_si_get_controller_id(i) >> 16; /* convert si_id to id */ if (port[i].si_id == ID_PAD) { port[i].id = CTL_PAD; strcpy(port[i].name,"Standard Pad"); } else if (port[i].si_id & ID_WIRELESS_BIT) { port[i].id = CTL_PAD; strcpy(port[i].name,(port[i].si_id & ID_WAVEBIRD_BIT) ? "Nintendo Wavebird" : "Wireless Pad"); } else if (port[i].si_id == ID_KEYBOARD) { port[i].id = CTL_KEYBOARD; strcpy(port[i].name, "Keyboard"); } else { port[i].id = CTL_UNKNOWN; if (port[i].si_id) { sprintf(port[i].name, "Unknown (%x)", port[i].si_id); #ifdef HACK_FORCE_KEYBOARD_PORT if (i+1 == gcn_si_force_keyboard_port) { si_printk(KERN_WARNING, "port %d forced to" " keyboard mode\n", i+1); port[i].si_id = ID_KEYBOARD; port[i].id = CTL_KEYBOARD; strcpy(port[i].name, "Keyboard" " (forced)"); } #endif /* HACK_FORCE_KEYBOARD_PORT */ } else { strcpy(port[i].name, "Not Present"); } } init_input_dev(&port[i].idev); port[i].idev.open = gcn_si_open; port[i].idev.close = gcn_si_close; port[i].idev.private = (unsigned int *)i; port[i].idev.name = port[i].name; switch (port[i].id) { case CTL_PAD: set_bit(EV_KEY, port[i].idev.evbit); set_bit(EV_ABS, port[i].idev.evbit); set_bit(EV_FF, port[i].idev.evbit); set_bit(BTN_A, port[i].idev.keybit); set_bit(BTN_B, port[i].idev.keybit); set_bit(BTN_X, port[i].idev.keybit); set_bit(BTN_Y, port[i].idev.keybit); set_bit(BTN_Z, port[i].idev.keybit); set_bit(BTN_TL, port[i].idev.keybit); set_bit(BTN_TR, port[i].idev.keybit); set_bit(BTN_START, port[i].idev.keybit); /* a stick */ set_bit(ABS_X, port[i].idev.absbit); port[i].idev.absmin[ABS_X] = 0; port[i].idev.absmax[ABS_X] = 255; port[i].idev.absfuzz[ABS_X] = 8; port[i].idev.absflat[ABS_X] = 8; set_bit(ABS_Y, port[i].idev.absbit); port[i].idev.absmin[ABS_Y] = 0; port[i].idev.absmax[ABS_Y] = 255; port[i].idev.absfuzz[ABS_Y] = 8; port[i].idev.absflat[ABS_Y] = 8; /* b pad */ set_bit(ABS_HAT0X, port[i].idev.absbit); port[i].idev.absmin[ABS_HAT0X] = -1; port[i].idev.absmax[ABS_HAT0X] = 1; set_bit(ABS_HAT0Y, port[i].idev.absbit); port[i].idev.absmin[ABS_HAT0Y] = -1; port[i].idev.absmax[ABS_HAT0Y] = 1; /* c stick */ set_bit(ABS_RX, port[i].idev.absbit); port[i].idev.absmin[ABS_RX] = 0; port[i].idev.absmax[ABS_RX] = 255; port[i].idev.absfuzz[ABS_RX] = 8; port[i].idev.absflat[ABS_RX] = 8; set_bit(ABS_RY, port[i].idev.absbit); port[i].idev.absmin[ABS_RY] = 0; port[i].idev.absmax[ABS_RY] = 255; port[i].idev.absfuzz[ABS_RY] = 8; port[i].idev.absflat[ABS_RY] = 8; /* triggers */ set_bit(ABS_GAS, port[i].idev.absbit); port[i].idev.absmin[ABS_GAS] = -255; port[i].idev.absmax[ABS_GAS] = 255; port[i].idev.absfuzz[ABS_GAS] = 16; port[i].idev.absflat[ABS_GAS] = 16; set_bit(ABS_BRAKE, port[i].idev.absbit); port[i].idev.absmin[ABS_BRAKE] = -255; port[i].idev.absmax[ABS_BRAKE] = 255; port[i].idev.absfuzz[ABS_BRAKE] = 16; port[i].idev.absflat[ABS_BRAKE] = 16; /* rumbling */ set_bit(FF_RUMBLE, port[i].idev.ffbit); port[i].idev.event = gcn_si_event; port[i].idev.ff_effects_max = 1; input_register_device(&port[i].idev); break; case CTL_KEYBOARD: set_bit(EV_KEY, port[i].idev.evbit); set_bit(EV_REP, port[i].idev.evbit); for (j = 0; j < 255; ++j) set_bit(gamecube_keymap[j], port[i].idev.keybit); input_register_device(&port[i].idev); break; default: /* this is here to avoid compiler warnings */ break; } si_printk(KERN_INFO, "Port %d: %s\n", i+1, port[i].name); } gcn_si_set_polling(); return 0; } /** * */ static void __exit gcn_si_exit(void) { int i; si_printk(KERN_INFO, "exit\n"); for (i = 0; i < 4; ++i) { if (port[i].id != CTL_UNKNOWN) { input_unregister_device(&port[i].idev); } } release_resource(&gcn_si_resources); } module_init(gcn_si_init); module_exit(gcn_si_exit); |
From: <aot...@us...> - 2005-07-06 15:30:32
|
Update of /cvsroot/gc-linux/linux/drivers/input/si In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4654/si Log Message: Directory /cvsroot/gc-linux/linux/drivers/input/si added to the repository |
From: <aot...@us...> - 2005-07-06 15:30:05
|
Update of /cvsroot/gc-linux/linux/arch/ppc/configs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4175/arch/ppc/configs Modified Files: gamecube_defconfig Log Message: Update default configuration with platform-specific drivers. Index: gamecube_defconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/ppc/configs/gamecube_defconfig,v retrieving revision 1.29 retrieving revision 1.30 diff -u -d -r1.29 -r1.30 --- gamecube_defconfig 23 Jun 2005 23:16:23 -0000 1.29 +++ gamecube_defconfig 6 Jul 2005 15:29:55 -0000 1.30 @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.12 -# Thu Jun 23 18:46:14 2005 +# Wed Jul 6 11:04:28 2005 # CONFIG_MMU=y CONFIG_GENERIC_HARDIRQS=y @@ -187,7 +187,7 @@ # CONFIG_BLK_DEV_FD is not set # CONFIG_GAMECUBE_DI is not set # CONFIG_GAMECUBE_DVD is not set -# CONFIG_GAMECUBE_ARAM is not set +CONFIG_GAMECUBE_ARAM=m # CONFIG_BLK_DEV_COW_COMMON is not set CONFIG_BLK_DEV_LOOP=y # CONFIG_BLK_DEV_CRYPTOLOOP is not set @@ -388,7 +388,7 @@ # # CONFIG_SERIO is not set # CONFIG_GAMEPORT is not set -# CONFIG_GAMECUBE_SI is not set +CONFIG_GAMECUBE_SI=m # # Character devices |
From: <he...@us...> - 2005-07-03 10:21:08
|
Update of /cvsroot/gc-linux/linux/drivers/block/gcn-di In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10107 Modified Files: gcn-di.c Log Message: Fixed a misplaced check. Index: gcn-di.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/block/gcn-di/gcn-di.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- gcn-di.c 3 Jul 2005 09:44:34 -0000 1.6 +++ gcn-di.c 3 Jul 2005 10:20:54 -0000 1.7 @@ -1342,7 +1342,7 @@ /* postpone a bit the motor off if there are pending commands */ spin_lock_irqsave(&ddev->lock, flags); - if (!ddev->cmd && ddev->ref_count == 0) { + if (!ddev->cmd) { ddev->cmd = cmd = &ddev->status; spin_unlock_irqrestore(&ddev->lock, flags); di_op_stopmotor(cmd, ddev); @@ -1632,7 +1632,7 @@ * If we have a pending command, that's a previously scheduled * motor off. Wait for it to terminate before going on. */ - if (ddev->cmd) { + if (ddev->cmd && ddev->ref_count == 0) { cmd = ddev->cmd; cmd->done_data = &complete; cmd->done = di_wait_done; |