summaryrefslogtreecommitdiff
path: root/graphics/picturebook/files/patch-sonypi.c
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/picturebook/files/patch-sonypi.c')
-rw-r--r--graphics/picturebook/files/patch-sonypi.c278
1 files changed, 278 insertions, 0 deletions
diff --git a/graphics/picturebook/files/patch-sonypi.c b/graphics/picturebook/files/patch-sonypi.c
new file mode 100644
index 000000000000..5fdec8b05070
--- /dev/null
+++ b/graphics/picturebook/files/patch-sonypi.c
@@ -0,0 +1,278 @@
+--- ../picturebook.old/sonypi.c Mon Dec 25 19:01:43 2000
++++ sonypi.c Mon Dec 25 19:03:23 2000
+@@ -72,7 +72,7 @@
+ #define MUTE_V2 0x29
+
+ static int spic_fd;
+-
++#ifdef LINUX
+ static void OUTB(u8 v, int port)
+ {
+ outb(v, port);
+@@ -83,7 +83,42 @@
+ usleep(10);
+ return inb(port);
+ }
++#define OUTW outw
++#else ifdef __FreeBSD__
++#include <machine/cpufunc.h>
++static void OUTB(u8 v, unsigned int port)
++{
++ outb(port,v);
++}
++static void OUTW(u16 v, unsigned int port)
++{
++ outw(port,v);
++}
++
++static u8 INB(unsigned int port)
++{
++ usleep(10);
++ return inb(port);
++}
++static int deviofd=-1;
++static int iopl(int lvl)
++{
++ if(lvl==0){
++ if(deviofd!=-1){
++ close(deviofd);
++ deviofd=-1;
++ }
++ return 0;
++ }else if(lvl==3){
++ if(deviofd==-1){
++ deviofd=open("/dev/io",0);
++ }
++ return deviofd;
++ }
++ return -1;
++}
+
++#endif
+ /* initialise the SPIC - this comes from the AML code in the ACPI bios */
+ static void spic_srs(int fd, u16 port1, u16 port2, u8 irq)
+ {
+@@ -98,7 +133,7 @@
+ v2 = inw(SPI_IRQ_PORT);
+ v2 &= ~(0x3 << SPI_IRQ_SHIFT);
+ v2 |= (irq << SPI_IRQ_SHIFT);
+- outw(v2, SPI_IRQ_PORT);
++ OUTW(v2, SPI_IRQ_PORT);
+
+ pci_config_read_u8(fd, SPI_G10L, &v);
+ v = (v & 0x1F) | 0xC0;
+@@ -116,7 +151,7 @@
+
+ v = inw(SPI_IRQ_PORT);
+ v |= (0x3 << SPI_IRQ_SHIFT);
+- outw(v, SPI_IRQ_PORT);
++ OUTW(v, SPI_IRQ_PORT);
+ close(spic_fd);
+ }
+
+@@ -144,10 +179,10 @@
+ u8 v1;
+
+ while (INB(SPIC_PORT2) & 2) ;
+- outb(dev, SPIC_PORT2);
++ OUTB(dev, SPIC_PORT2);
+
+ while (INB(SPIC_PORT2) & 2) ;
+- outb(fn, SPIC_PORT1);
++ OUTB(fn, SPIC_PORT1);
+
+ v1 = INB(SPIC_PORT1);
+ if (debug)
+@@ -160,13 +195,13 @@
+ u8 v1;
+
+ while (INB(SPIC_PORT2) & 2) ;
+- outb(dev, SPIC_PORT2);
++ OUTB(dev, SPIC_PORT2);
+
+ while (INB(SPIC_PORT2) & 2) ;
+- outb(fn, SPIC_PORT1);
++ OUTB(fn, SPIC_PORT1);
+
+ while (INB(SPIC_PORT2) & 2) ;
+- outb(v, SPIC_PORT1);
++ OUTB(v, SPIC_PORT1);
+
+ v1 = INB(SPIC_PORT1);
+ if (debug)
+@@ -259,7 +294,7 @@
+ v1 = inb(SPIC_PORT1);
+ v2 = inb(SPIC_PORT2);
+ if ((v2 & 0x10) == 0 || v1 == 0) return 0;
+- /* the following clears the event bits */
++ /* the following clears the evnet bits */
+ spic_call2(0x81, 0xff);
+ return (signed char)v1;
+ }
+@@ -292,96 +327,96 @@
+ void spic_setup_vga(void)
+ {
+ /* :about to start capture again */
+-outb(0x09, 0x03CE); usleep(10);
++OUTB(0x09, 0x03CE); usleep(10);
+ inb(0x03CF); usleep(10); /* -> 00000026 */
+-outw(0x2609, 0x03CE); usleep(10);
+-outb(0x0A, 0x03CE); usleep(10);
++OUTW(0x2609, 0x03CE); usleep(10);
++OUTB(0x0A, 0x03CE); usleep(10);
+ inb(0x03CF); usleep(10); /* -> 00000021 */
+-outw(0x210A, 0x03CE); usleep(10);
+-outb(0x08, 0x03C4); usleep(10);
++OUTW(0x210A, 0x03CE); usleep(10);
++OUTB(0x08, 0x03C4); usleep(10);
+ inb(0x03C5); usleep(10); /* -> 00000020 */
+-outb(0x09, 0x03C4); usleep(10);
++OUTB(0x09, 0x03C4); usleep(10);
+ inb(0x03C5); usleep(10); /* -> 000000F3 */
+-outw(0x2008, 0x03C4); usleep(10);
+-outw(0xF309, 0x03C4); usleep(10);
+-outw(0x2609, 0x03CE); usleep(10);
+-outw(0x210A, 0x03CE); usleep(10);
+-outb(0x09, 0x03CE); usleep(10);
++OUTW(0x2008, 0x03C4); usleep(10);
++OUTW(0xF309, 0x03C4); usleep(10);
++OUTW(0x2609, 0x03CE); usleep(10);
++OUTW(0x210A, 0x03CE); usleep(10);
++OUTB(0x09, 0x03CE); usleep(10);
+ inb(0x03CF); usleep(10); /* -> 00000026 */
+-outw(0x2609, 0x03CE); usleep(10);
+-outb(0x0A, 0x03CE); usleep(10);
++OUTW(0x2609, 0x03CE); usleep(10);
++OUTB(0x0A, 0x03CE); usleep(10);
+ inb(0x03CF); usleep(10); /* -> 00000021 */
+-outw(0x210A, 0x03CE); usleep(10);
+-outb(0x08, 0x03C4); usleep(10);
++OUTW(0x210A, 0x03CE); usleep(10);
++OUTB(0x08, 0x03C4); usleep(10);
+ inb(0x03C5); usleep(10); /* -> 00000020 */
+-outb(0x09, 0x03C4); usleep(10);
++OUTB(0x09, 0x03C4); usleep(10);
+ inb(0x03C5); usleep(10); /* -> 000000F3 */
+-outw(0xF109, 0x03C4); usleep(10);
+-outw(0x2609, 0x03CE); usleep(10);
+-outw(0x210A, 0x03CE); usleep(10);
+-outb(0x09, 0x03CE); usleep(10);
++OUTW(0xF109, 0x03C4); usleep(10);
++OUTW(0x2609, 0x03CE); usleep(10);
++OUTW(0x210A, 0x03CE); usleep(10);
++OUTB(0x09, 0x03CE); usleep(10);
+ inb(0x03CF); usleep(10); /* -> 00000026 */
+-outw(0x2609, 0x03CE); usleep(10);
+-outb(0x0A, 0x03CE); usleep(10);
++OUTW(0x2609, 0x03CE); usleep(10);
++OUTB(0x0A, 0x03CE); usleep(10);
+ inb(0x03CF); usleep(10); /* -> 00000021 */
+-outw(0x210A, 0x03CE); usleep(10);
+-outb(0x08, 0x03C4); usleep(10);
++OUTW(0x210A, 0x03CE); usleep(10);
++OUTB(0x08, 0x03C4); usleep(10);
+ inb(0x03C5); usleep(10); /* -> 00000020 */
+-outb(0x09, 0x03C4); usleep(10);
++OUTB(0x09, 0x03C4); usleep(10);
+ inb(0x03C5); usleep(10); /* -> 0000001F */
+-outw(0x1D09, 0x03C4); usleep(10);
+-outw(0x2609, 0x03CE); usleep(10);
+-outw(0x210A, 0x03CE); usleep(10);
+-outb(0x08, 0x03C4); usleep(10);
++OUTW(0x1D09, 0x03C4); usleep(10);
++OUTW(0x2609, 0x03CE); usleep(10);
++OUTW(0x210A, 0x03CE); usleep(10);
++OUTB(0x08, 0x03C4); usleep(10);
+ inb(0x03C5); usleep(10); /* -> 00002621 */
+-outb(0x09, 0x03C4); usleep(10);
++OUTB(0x09, 0x03C4); usleep(10);
+ inb(0x03C5); usleep(10); /* -> 000026E9 */
+-outb(0x08, 0x03C4); usleep(10);
++OUTB(0x08, 0x03C4); usleep(10);
+ inb(0x03C5); usleep(10); /* -> 00002621 */
+-outb(0x09, 0x03C4); usleep(10);
++OUTB(0x09, 0x03C4); usleep(10);
+ inb(0x03C5); usleep(10); /* -> 000026F9 */
+-outb(0x09, 0x03CE); usleep(10);
++OUTB(0x09, 0x03CE); usleep(10);
+ inb(0x03CF); usleep(10); /* -> 00000026 */
+-outb(0x09, 0x03CE); usleep(10);
+-outb(0x26, 0x03CF); usleep(10);
+-outb(0x0A, 0x03CE); usleep(10);
++OUTB(0x09, 0x03CE); usleep(10);
++OUTB(0x26, 0x03CF); usleep(10);
++OUTB(0x0A, 0x03CE); usleep(10);
+ inb(0x03CF); usleep(10); /* -> 00000021 */
+-outb(0x0A, 0x03CE); usleep(10);
+-outb(0x21, 0x03CF); usleep(10);
+-outb(0x0F, 0x03C4); usleep(10);
++OUTB(0x0A, 0x03CE); usleep(10);
++OUTB(0x21, 0x03CF); usleep(10);
++OUTB(0x0F, 0x03C4); usleep(10);
+ inb(0x03C5); usleep(10); /* -> 00000001 */
+-outb(0x0F, 0x03C4); usleep(10);
+-outb(0x01, 0x03C5); usleep(10);
+-outb(0x0F, 0x03C4); usleep(10);
++OUTB(0x0F, 0x03C4); usleep(10);
++OUTB(0x01, 0x03C5); usleep(10);
++OUTB(0x0F, 0x03C4); usleep(10);
+ inb(0x03C5); usleep(10); /* -> 00000001 */
+-outb(0x0A, 0x03CE); usleep(10);
+-outb(0x21, 0x03CF); usleep(10);
+-outb(0x09, 0x03CE); usleep(10);
+-outb(0x26, 0x03CF); usleep(10);
+-outb(0x09, 0x03CE); usleep(10);
++OUTB(0x0A, 0x03CE); usleep(10);
++OUTB(0x21, 0x03CF); usleep(10);
++OUTB(0x09, 0x03CE); usleep(10);
++OUTB(0x26, 0x03CF); usleep(10);
++OUTB(0x09, 0x03CE); usleep(10);
+ inb(0x03CF); usleep(10); /* -> 00000026 */
+-outw(0x2609, 0x03CE); usleep(10);
+-outb(0xBF, 0x03CE); usleep(10);
++OUTW(0x2609, 0x03CE); usleep(10);
++OUTB(0xBF, 0x03CE); usleep(10);
+ inb(0x03CF); usleep(10); /* -> 00000000 */
+-outb(0xA3, 0x03CE); usleep(10);
++OUTB(0xA3, 0x03CE); usleep(10);
+ inb(0x03CF); usleep(10); /* -> 0000000C */
+-outw(0xBF, 0x03CE); usleep(10);
+-outw(0x0CA3, 0x03CE); usleep(10);
+-outb(0x09, 0x03CE); usleep(10);
++OUTW(0xBF, 0x03CE); usleep(10);
++OUTW(0x0CA3, 0x03CE); usleep(10);
++OUTB(0x09, 0x03CE); usleep(10);
+ inb(0x03CF); usleep(10); /* -> 00000026 */
+-outw(0x2609, 0x03CE); usleep(10);
+-outb(0x0A, 0x03CE); usleep(10);
++OUTW(0x2609, 0x03CE); usleep(10);
++OUTB(0x0A, 0x03CE); usleep(10);
+ inb(0x03CF); usleep(10); /* -> 00000021 */
+-outw(0x210A, 0x03CE); usleep(10);
+-outb(0x08, 0x03C4); usleep(10);
++OUTW(0x210A, 0x03CE); usleep(10);
++OUTB(0x08, 0x03C4); usleep(10);
+ inb(0x03C5); usleep(10); /* -> 00000021 */
+-outb(0x09, 0x03C4); usleep(10);
++OUTB(0x09, 0x03C4); usleep(10);
+ inb(0x03C5); usleep(10); /* -> 000000F9 */
+-outw(0x2609, 0x03CE); usleep(10);
+-outw(0x210A, 0x03CE); usleep(10);
+-outb(0x08, 0x03C4); usleep(10);
++OUTW(0x2609, 0x03CE); usleep(10);
++OUTW(0x210A, 0x03CE); usleep(10);
++OUTB(0x08, 0x03C4); usleep(10);
+ inb(0x03C5); usleep(10); /* -> 00002621 */
+-outb(0x09, 0x03C4); usleep(10);
++OUTB(0x09, 0x03C4); usleep(10);
+ inb(0x03C5); usleep(10); /* -> 000026F9 */
+ }
+
+@@ -434,3 +469,7 @@
+ }
+ spic_dis();
+ }
++
++
++
++