diff -aurN a/debian/patches/bugfix/sparc/sparc-console-handover-atyfb.patch b/debian/patches/bugfix/sparc/sparc-console-handover-atyfb.patch --- a/debian/patches/bugfix/sparc/sparc-console-handover-atyfb.patch 1970-01-01 01:00:00.000000000 +0100 +++ b/debian/patches/bugfix/sparc/sparc-console-handover-atyfb.patch 2011-02-07 21:11:18.000000000 +0000 @@ -0,0 +1,729 @@ +diff -Naurd source.orig//arch/sparc/include/asm/openprom.h source/arch/sparc/include/asm/openprom.h +--- source.orig//arch/sparc/include/asm/openprom.h 2009-12-03 04:51:21.000000000 +0100 ++++ source/arch/sparc/include/asm/openprom.h 2011-01-06 10:18:49.000000000 +0100 +@@ -37,7 +37,7 @@ + int (*v2_dev_open)(char *devpath); + void (*v2_dev_close)(int d); + int (*v2_dev_read)(int d, char *buf, int nbytes); +- int (*v2_dev_write)(int d, char *buf, int nbytes); ++ int (*v2_dev_write)(int d, const char *buf, int nbytes); + int (*v2_dev_seek)(int d, int hi, int lo); + + /* Never issued (multistage load support) */ +diff -Naurd source.orig//arch/sparc/include/asm/oplib_32.h source/arch/sparc/include/asm/oplib_32.h +--- source.orig//arch/sparc/include/asm/oplib_32.h 2009-12-03 04:51:21.000000000 +0100 ++++ source/arch/sparc/include/asm/oplib_32.h 2011-01-06 10:18:49.000000000 +0100 +@@ -60,25 +60,6 @@ + extern char *prom_mapio(char *virt_hint, int io_space, unsigned int phys_addr, unsigned int num_bytes); + extern void prom_unmapio(char *virt_addr, unsigned int num_bytes); + +-/* Device operations. */ +- +-/* Open the device described by the passed string. Note, that the format +- * of the string is different on V0 vs. V2->higher proms. The caller must +- * know what he/she is doing! Returns the device descriptor, an int. +- */ +-extern int prom_devopen(char *device_string); +- +-/* Close a previously opened device described by the passed integer +- * descriptor. +- */ +-extern int prom_devclose(int device_handle); +- +-/* Do a seek operation on the device described by the passed integer +- * descriptor. +- */ +-extern void prom_seek(int device_handle, unsigned int seek_hival, +- unsigned int seek_lowval); +- + /* Miscellaneous routines, don't really fit in any category per se. */ + + /* Reboot the machine with the command line passed. */ +@@ -121,19 +102,8 @@ + /* Get the prom firmware revision. */ + extern int prom_getprev(void); + +-/* Character operations to/from the console.... */ +- +-/* Non-blocking get character from console. */ +-extern int prom_nbgetchar(void); +- +-/* Non-blocking put character to console. */ +-extern int prom_nbputchar(char character); +- +-/* Blocking get character from console. */ +-extern char prom_getchar(void); +- +-/* Blocking put character to console. */ +-extern void prom_putchar(char character); ++/* Write a buffer of characters to the console. */ ++extern void prom_console_write_buf(const char *buf, int len); + + /* Prom's internal routines, don't use in kernel/boot code. */ + extern void prom_printf(const char *fmt, ...); +@@ -238,7 +208,6 @@ + extern int prom_setprop(int node, const char *prop_name, char *prop_value, + int value_size); + +-extern int prom_pathtoinode(char *path); + extern int prom_inst2pkg(int); + + /* Dorking with Bus ranges... */ +diff -Naurd source.orig//arch/sparc/include/asm/oplib_64.h source/arch/sparc/include/asm/oplib_64.h +--- source.orig//arch/sparc/include/asm/oplib_64.h 2011-01-06 10:18:05.000000000 +0100 ++++ source/arch/sparc/include/asm/oplib_64.h 2011-01-06 10:18:49.000000000 +0100 +@@ -67,27 +67,6 @@ + /* Boot argument acquisition, returns the boot command line string. */ + extern char *prom_getbootargs(void); + +-/* Device utilities. */ +- +-/* Device operations. */ +- +-/* Open the device described by the passed string. Note, that the format +- * of the string is different on V0 vs. V2->higher proms. The caller must +- * know what he/she is doing! Returns the device descriptor, an int. +- */ +-extern int prom_devopen(const char *device_string); +- +-/* Close a previously opened device described by the passed integer +- * descriptor. +- */ +-extern int prom_devclose(int device_handle); +- +-/* Do a seek operation on the device described by the passed integer +- * descriptor. +- */ +-extern void prom_seek(int device_handle, unsigned int seek_hival, +- unsigned int seek_lowval); +- + /* Miscellaneous routines, don't really fit in any category per se. */ + + /* Reboot the machine with the command line passed. */ +@@ -109,33 +88,14 @@ + /* Halt and power-off the machine. */ + extern void prom_halt_power_off(void) __attribute__ ((noreturn)); + +-/* Set the PROM 'sync' callback function to the passed function pointer. +- * When the user gives the 'sync' command at the prom prompt while the +- * kernel is still active, the prom will call this routine. +- * +- */ +-typedef int (*callback_func_t)(long *cmd); +-extern void prom_setcallback(callback_func_t func_ptr); +- + /* Acquire the IDPROM of the root node in the prom device tree. This + * gets passed a buffer where you would like it stuffed. The return value + * is the format type of this idprom or 0xff on error. + */ + extern unsigned char prom_get_idprom(char *idp_buffer, int idpbuf_size); + +-/* Character operations to/from the console.... */ +- +-/* Non-blocking get character from console. */ +-extern int prom_nbgetchar(void); +- +-/* Non-blocking put character to console. */ +-extern int prom_nbputchar(char character); +- +-/* Blocking get character from console. */ +-extern char prom_getchar(void); +- +-/* Blocking put character to console. */ +-extern void prom_putchar(char character); ++/* Write a buffer of characters to the console. */ ++extern void prom_console_write_buf(const char *buf, int len); + + /* Prom's internal routines, don't use in kernel/boot code. */ + extern void prom_printf(const char *fmt, ...); +@@ -278,9 +238,7 @@ + extern int prom_setprop(int node, const char *prop_name, char *prop_value, + int value_size); + +-extern int prom_pathtoinode(const char *path); + extern int prom_inst2pkg(int); +-extern int prom_service_exists(const char *service_name); + extern void prom_sun4v_guest_soft_state(void); + + extern int prom_ihandle2path(int handle, char *buffer, int bufsize); +diff -Naurd source.orig//arch/sparc/kernel/leon_kernel.c source/arch/sparc/kernel/leon_kernel.c +--- source.orig//arch/sparc/kernel/leon_kernel.c 2009-12-03 04:51:21.000000000 +0100 ++++ source/arch/sparc/kernel/leon_kernel.c 2011-01-06 10:18:49.000000000 +0100 +@@ -112,7 +112,7 @@ + if (leon3_gptimer_regs && leon3_irqctrl_regs) { + LEON3_BYPASS_STORE_PA(&leon3_gptimer_regs->e[0].val, 0); + LEON3_BYPASS_STORE_PA(&leon3_gptimer_regs->e[0].rld, +- (((1000000 / 100) - 1))); ++ (((1000000 / HZ) - 1))); + LEON3_BYPASS_STORE_PA(&leon3_gptimer_regs->e[0].ctrl, 0); + + } else { +diff -Naurd source.orig//arch/sparc/prom/console_32.c source/arch/sparc/prom/console_32.c +--- source.orig//arch/sparc/prom/console_32.c 2009-12-03 04:51:21.000000000 +0100 ++++ source/arch/sparc/prom/console_32.c 2011-01-06 10:18:49.000000000 +0100 +@@ -16,63 +16,26 @@ + + extern void restore_current(void); + +-/* Non blocking get character from console input device, returns -1 +- * if no input was taken. This can be used for polling. +- */ +-int +-prom_nbgetchar(void) +-{ +- static char inc; +- int i = -1; +- unsigned long flags; +- +- spin_lock_irqsave(&prom_lock, flags); +- switch(prom_vers) { +- case PROM_V0: +- i = (*(romvec->pv_nbgetchar))(); +- break; +- case PROM_V2: +- case PROM_V3: +- if( (*(romvec->pv_v2devops).v2_dev_read)(*romvec->pv_v2bootargs.fd_stdin , &inc, 0x1) == 1) { +- i = inc; +- } else { +- i = -1; +- } +- break; +- default: +- i = -1; +- break; +- }; +- restore_current(); +- spin_unlock_irqrestore(&prom_lock, flags); +- return i; /* Ugh, we could spin forever on unsupported proms ;( */ +-} +- + /* Non blocking put character to console device, returns -1 if + * unsuccessful. + */ +-int +-prom_nbputchar(char c) ++static int prom_nbputchar(const char *buf) + { +- static char outc; + unsigned long flags; + int i = -1; + + spin_lock_irqsave(&prom_lock, flags); + switch(prom_vers) { + case PROM_V0: +- i = (*(romvec->pv_nbputchar))(c); ++ i = (*(romvec->pv_nbputchar))(*buf); + break; + case PROM_V2: + case PROM_V3: +- outc = c; +- if( (*(romvec->pv_v2devops).v2_dev_write)(*romvec->pv_v2bootargs.fd_stdout, &outc, 0x1) == 1) ++ if ((*(romvec->pv_v2devops).v2_dev_write)(*romvec->pv_v2bootargs.fd_stdout, ++ buf, 0x1) == 1) + i = 0; +- else +- i = -1; + break; + default: +- i = -1; + break; + }; + restore_current(); +@@ -80,19 +43,14 @@ + return i; /* Ugh, we could spin forever on unsupported proms ;( */ + } + +-/* Blocking version of get character routine above. */ +-char +-prom_getchar(void) ++void prom_console_write_buf(const char *buf, int len) + { +- int character; +- while((character = prom_nbgetchar()) == -1) ; +- return (char) character; ++ while (len) { ++ int n = prom_nbputchar(buf); ++ if (n) ++ continue; ++ len--; ++ buf++; ++ } + } + +-/* Blocking version of put character routine above. */ +-void +-prom_putchar(char c) +-{ +- while(prom_nbputchar(c) == -1) ; +- return; +-} +diff -Naurd source.orig//arch/sparc/prom/console_64.c source/arch/sparc/prom/console_64.c +--- source.orig//arch/sparc/prom/console_64.c 2011-01-06 10:18:05.000000000 +0100 ++++ source/arch/sparc/prom/console_64.c 2011-01-06 10:18:49.000000000 +0100 +@@ -15,86 +15,34 @@ + + extern int prom_stdin, prom_stdout; + +-/* Non blocking get character from console input device, returns -1 +- * if no input was taken. This can be used for polling. +- */ +-inline int +-prom_nbgetchar(void) +-{ +- unsigned long args[7]; +- char inc; +- +- args[0] = (unsigned long) "read"; +- args[1] = 3; +- args[2] = 1; +- args[3] = (unsigned int) prom_stdin; +- args[4] = (unsigned long) &inc; +- args[5] = 1; +- args[6] = (unsigned long) -1; +- +- p1275_cmd_direct(args); +- +- if (args[6] == 1) +- return inc; +- return -1; +-} +- +-/* Non blocking put character to console device, returns -1 if +- * unsuccessful. +- */ +-inline int +-prom_nbputchar(char c) ++static int __prom_console_write_buf(const char *buf, int len) + { + unsigned long args[7]; +- char outc; +- +- outc = c; ++ int ret; + + args[0] = (unsigned long) "write"; + args[1] = 3; + args[2] = 1; + args[3] = (unsigned int) prom_stdout; +- args[4] = (unsigned long) &outc; +- args[5] = 1; ++ args[4] = (unsigned long) buf; ++ args[5] = (unsigned int) len; + args[6] = (unsigned long) -1; + + p1275_cmd_direct(args); + +- if (args[6] == 1) +- return 0; +- else ++ ret = (int) args[6]; ++ if (ret < 0) + return -1; ++ return ret; + } + +-/* Blocking version of get character routine above. */ +-char +-prom_getchar(void) +-{ +- int character; +- while((character = prom_nbgetchar()) == -1) ; +- return (char) character; +-} +- +-/* Blocking version of put character routine above. */ +-void +-prom_putchar(char c) +-{ +- prom_nbputchar(c); +- return; +-} +- +-void +-prom_puts(const char *s, int len) ++void prom_console_write_buf(const char *buf, int len) + { +- unsigned long args[7]; +- +- args[0] = (unsigned long) "write"; +- args[1] = 3; +- args[2] = 1; +- args[3] = (unsigned int) prom_stdout; +- args[4] = (unsigned long) s; +- args[5] = len; +- args[6] = (unsigned long) -1; +- +- p1275_cmd_direct(args); ++ while (len) { ++ int n = __prom_console_write_buf(buf, len); ++ if (n < 0) ++ continue; ++ len -= n; ++ buf += len; ++ } + } +diff -Naurd source.orig//arch/sparc/prom/devops_32.c source/arch/sparc/prom/devops_32.c +--- source.orig//arch/sparc/prom/devops_32.c 2009-12-03 04:51:21.000000000 +0100 ++++ source/arch/sparc/prom/devops_32.c 1970-01-01 01:00:00.000000000 +0100 +@@ -1,89 +0,0 @@ +-/* +- * devops.c: Device operations using the PROM. +- * +- * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) +- */ +-#include +-#include +-#include +- +-#include +-#include +- +-extern void restore_current(void); +- +-/* Open the device described by the string 'dstr'. Returns the handle +- * to that device used for subsequent operations on that device. +- * Returns -1 on failure. +- */ +-int +-prom_devopen(char *dstr) +-{ +- int handle; +- unsigned long flags; +- spin_lock_irqsave(&prom_lock, flags); +- switch(prom_vers) { +- case PROM_V0: +- handle = (*(romvec->pv_v0devops.v0_devopen))(dstr); +- if(handle == 0) handle = -1; +- break; +- case PROM_V2: +- case PROM_V3: +- handle = (*(romvec->pv_v2devops.v2_dev_open))(dstr); +- break; +- default: +- handle = -1; +- break; +- }; +- restore_current(); +- spin_unlock_irqrestore(&prom_lock, flags); +- +- return handle; +-} +- +-/* Close the device described by device handle 'dhandle'. */ +-int +-prom_devclose(int dhandle) +-{ +- unsigned long flags; +- spin_lock_irqsave(&prom_lock, flags); +- switch(prom_vers) { +- case PROM_V0: +- (*(romvec->pv_v0devops.v0_devclose))(dhandle); +- break; +- case PROM_V2: +- case PROM_V3: +- (*(romvec->pv_v2devops.v2_dev_close))(dhandle); +- break; +- default: +- break; +- }; +- restore_current(); +- spin_unlock_irqrestore(&prom_lock, flags); +- return 0; +-} +- +-/* Seek to specified location described by 'seekhi' and 'seeklo' +- * for device 'dhandle'. +- */ +-void +-prom_seek(int dhandle, unsigned int seekhi, unsigned int seeklo) +-{ +- unsigned long flags; +- spin_lock_irqsave(&prom_lock, flags); +- switch(prom_vers) { +- case PROM_V0: +- (*(romvec->pv_v0devops.v0_seekdev))(dhandle, seekhi, seeklo); +- break; +- case PROM_V2: +- case PROM_V3: +- (*(romvec->pv_v2devops.v2_dev_seek))(dhandle, seekhi, seeklo); +- break; +- default: +- break; +- }; +- restore_current(); +- spin_unlock_irqrestore(&prom_lock, flags); +- +- return; +-} +diff -Naurd source.orig//arch/sparc/prom/devops_64.c source/arch/sparc/prom/devops_64.c +--- source.orig//arch/sparc/prom/devops_64.c 2011-01-06 10:18:05.000000000 +0100 ++++ source/arch/sparc/prom/devops_64.c 1970-01-01 01:00:00.000000000 +0100 +@@ -1,67 +0,0 @@ +-/* +- * devops.c: Device operations using the PROM. +- * +- * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) +- * Copyright (C) 1996,1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz) +- */ +-#include +-#include +-#include +- +-#include +-#include +- +-/* Open the device described by the string 'dstr'. Returns the handle +- * to that device used for subsequent operations on that device. +- * Returns 0 on failure. +- */ +-int +-prom_devopen(const char *dstr) +-{ +- unsigned long args[5]; +- +- args[0] = (unsigned long) "open"; +- args[1] = 1; +- args[2] = 1; +- args[3] = (unsigned long) dstr; +- args[4] = (unsigned long) -1; +- +- p1275_cmd_direct(args); +- +- return (int) args[4]; +-} +- +-/* Close the device described by device handle 'dhandle'. */ +-int +-prom_devclose(int dhandle) +-{ +- unsigned long args[4]; +- +- args[0] = (unsigned long) "close"; +- args[1] = 1; +- args[2] = 0; +- args[3] = (unsigned int) dhandle; +- +- p1275_cmd_direct(args); +- +- return 0; +-} +- +-/* Seek to specified location described by 'seekhi' and 'seeklo' +- * for device 'dhandle'. +- */ +-void +-prom_seek(int dhandle, unsigned int seekhi, unsigned int seeklo) +-{ +- unsigned long args[7]; +- +- args[0] = (unsigned long) "seek"; +- args[1] = 3; +- args[2] = 1; +- args[3] = (unsigned int) dhandle; +- args[4] = seekhi; +- args[5] = seeklo; +- args[6] = (unsigned long) -1; +- +- p1275_cmd_direct(args); +-} +diff -Naurd source.orig//arch/sparc/prom/Makefile source/arch/sparc/prom/Makefile +--- source.orig//arch/sparc/prom/Makefile 2009-12-03 04:51:21.000000000 +0100 ++++ source/arch/sparc/prom/Makefile 2011-01-06 10:18:49.000000000 +0100 +@@ -6,7 +6,6 @@ + + lib-y := bootstr_$(BITS).o + lib-$(CONFIG_SPARC32) += devmap.o +-lib-y += devops_$(BITS).o + lib-y += init_$(BITS).o + lib-$(CONFIG_SPARC32) += memory.o + lib-y += misc_$(BITS).o +diff -Naurd source.orig//arch/sparc/prom/misc_64.c source/arch/sparc/prom/misc_64.c +--- source.orig//arch/sparc/prom/misc_64.c 2011-01-06 10:18:05.000000000 +0100 ++++ source/arch/sparc/prom/misc_64.c 2011-01-06 10:18:49.000000000 +0100 +@@ -18,7 +18,7 @@ + #include + #include + +-int prom_service_exists(const char *service_name) ++static int prom_service_exists(const char *service_name) + { + unsigned long args[5]; + +@@ -150,20 +150,6 @@ + prom_halt(); + } + +-/* Set prom sync handler to call function 'funcp'. */ +-void prom_setcallback(callback_func_t funcp) +-{ +- unsigned long args[5]; +- if (!funcp) +- return; +- args[0] = (unsigned long) "set-callback"; +- args[1] = 1; +- args[2] = 1; +- args[3] = (unsigned long) funcp; +- args[4] = (unsigned long) -1; +- p1275_cmd_direct(args); +-} +- + /* Get the idprom and stuff it into buffer 'idbuf'. Returns the + * format type. 'num_bytes' is the number of bytes that your idbuf + * has space for. Returns 0xff on error. +diff -Naurd source.orig//arch/sparc/prom/printf.c source/arch/sparc/prom/printf.c +--- source.orig//arch/sparc/prom/printf.c 2009-12-03 04:51:21.000000000 +0100 ++++ source/arch/sparc/prom/printf.c 2011-01-06 10:23:30.000000000 +0100 +@@ -15,22 +15,45 @@ + + #include + #include ++#include + + #include + #include + ++#define CONSOLE_WRITE_BUF_SIZE 1024 ++ + static char ppbuf[1024]; ++static char console_write_buf[CONSOLE_WRITE_BUF_SIZE]; ++static raw_spinlock_t console_write_lock; + + void notrace prom_write(const char *buf, unsigned int n) + { +- char ch; ++ unsigned int dest_len; ++ unsigned long flags; ++ char *dest; + +- while (n != 0) { +- --n; +- if ((ch = *buf++) == '\n') +- prom_putchar('\r'); +- prom_putchar(ch); ++ dest = console_write_buf; ++ spin_lock_irqsave(&console_write_lock, flags); ++ ++ dest_len = 0; ++ while (n-- != 0) { ++ char ch = *buf++; ++ if (ch == '\n') { ++ *dest++ = '\r'; ++ dest_len++; ++ } ++ *dest++ = ch; ++ dest_len++; ++ if (dest_len >= CONSOLE_WRITE_BUF_SIZE - 1) { ++ prom_console_write_buf(console_write_buf, dest_len); ++ dest = console_write_buf; ++ dest_len = 0; ++ } + } ++ if (dest_len) ++ prom_console_write_buf(console_write_buf, dest_len); ++ ++ spin_unlock_irqrestore(&console_write_lock, flags); + } + + void notrace prom_printf(const char *fmt, ...) +diff -Naurd source.orig//arch/sparc/prom/tree_32.c source/arch/sparc/prom/tree_32.c +--- source.orig//arch/sparc/prom/tree_32.c 2009-12-03 04:51:21.000000000 +0100 ++++ source/arch/sparc/prom/tree_32.c 2011-01-06 10:18:49.000000000 +0100 +@@ -342,18 +342,3 @@ + if (node == -1) return 0; + return node; + } +- +-/* Return 'node' assigned to a particular prom 'path' +- * FIXME: Should work for v0 as well +- */ +-int prom_pathtoinode(char *path) +-{ +- int node, inst; +- +- inst = prom_devopen (path); +- if (inst == -1) return 0; +- node = prom_inst2pkg (inst); +- prom_devclose (inst); +- if (node == -1) return 0; +- return node; +-} +diff -Naurd source.orig//arch/sparc/prom/tree_64.c source/arch/sparc/prom/tree_64.c +--- source.orig//arch/sparc/prom/tree_64.c 2011-01-06 10:18:05.000000000 +0100 ++++ source/arch/sparc/prom/tree_64.c 2011-01-06 10:18:49.000000000 +0100 +@@ -375,24 +375,6 @@ + return node; + } + +-/* Return 'node' assigned to a particular prom 'path' +- * FIXME: Should work for v0 as well +- */ +-int +-prom_pathtoinode(const char *path) +-{ +- int node, inst; +- +- inst = prom_devopen (path); +- if (inst == 0) +- return 0; +- node = prom_inst2pkg(inst); +- prom_devclose(inst); +- if (node == -1) +- return 0; +- return node; +-} +- + int prom_ihandle2path(int handle, char *buffer, int bufsize) + { + unsigned long args[7]; +diff -Naurd source.orig//drivers/video/aty/atyfb_base.c source/drivers/video/aty/atyfb_base.c +--- source.orig//drivers/video/aty/atyfb_base.c 2009-12-03 04:51:21.000000000 +0100 ++++ source/drivers/video/aty/atyfb_base.c 2011-01-06 10:23:56.000000000 +0100 +@@ -2970,9 +2970,8 @@ + { + struct atyfb_par *par = info->par; + struct device_node *dp; +- char prop[128]; +- int node, len, i, j, ret; + u32 mem, chip_id; ++ int i, j, ret; + + /* + * Map memory-mapped registers. +@@ -3088,23 +3087,8 @@ + aty_st_le32(MEM_CNTL, mem, par); + } + +- /* +- * If this is the console device, we will set default video +- * settings to what the PROM left us with. +- */ +- node = prom_getchild(prom_root_node); +- node = prom_searchsiblings(node, "aliases"); +- if (node) { +- len = prom_getproperty(node, "screen", prop, sizeof(prop)); +- if (len > 0) { +- prop[len] = '\0'; +- node = prom_finddevice(prop); +- } else +- node = 0; +- } +- + dp = pci_device_to_OF_node(pdev); +- if (node == dp->node) { ++ if (dp == of_console_device) { + struct fb_var_screeninfo *var = &default_var; + unsigned int N, P, Q, M, T, R; + u32 v_total, h_total; +@@ -3112,9 +3096,9 @@ + u8 pll_regs[16]; + u8 clock_cntl; + +- crtc.vxres = prom_getintdefault(node, "width", 1024); +- crtc.vyres = prom_getintdefault(node, "height", 768); +- var->bits_per_pixel = prom_getintdefault(node, "depth", 8); ++ crtc.vxres = of_getintprop_default(dp, "width", 1024); ++ crtc.vyres = of_getintprop_default(dp, "height", 768); ++ var->bits_per_pixel = of_getintprop_default(dp, "depth", 8); + var->xoffset = var->yoffset = 0; + crtc.h_tot_disp = aty_ld_le32(CRTC_H_TOTAL_DISP, par); + crtc.h_sync_strt_wid = aty_ld_le32(CRTC_H_SYNC_STRT_WID, par); diff -aurN a/debian/patches/series/30 b/debian/patches/series/30 --- a/debian/patches/series/30 2011-02-07 21:13:18.000000000 +0000 +++ b/debian/patches/series/30 2011-02-07 21:12:08.000000000 +0000 @@ -40,3 +40,4 @@ + bugfix/all/af_unix-limit-unix_tot_inflight.patch + bugfix/all/scm-lower-SCM_MAX_FD.patch + bugfix/powerpc/powerpc-boot-dts-Install-dts-from-the-right-directory.patch ++ bugfix/sparc/sparc-console-handover-atyfb.patch