fix cyclades.h for x86_64 (and probably others)
At least on x86_64 the present cyclades.h is broken due to the wrong size of uclong. This affects, of course, both the kernel and the user-level utilities. The symptom is that cyzload refuses to load the firmware. I also managed to freeze the machine when unloading the module. The patch below fixes this in an architecture-independent way. I have tested it with 2.6.19 and the driver works fine again with a Cyclades-Z on an Athlon 64 X2. [akpm@linux-foundation.org: fix warnings] Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Родитель
9b3af29bf3
Коммит
7c4e95bf48
|
@ -1533,7 +1533,7 @@ cyz_issue_cmd(struct cyclades_card *cinfo,
|
|||
struct FIRM_ID __iomem *firm_id;
|
||||
struct ZFW_CTRL __iomem *zfw_ctrl;
|
||||
struct BOARD_CTRL __iomem *board_ctrl;
|
||||
unsigned long __iomem *pci_doorbell;
|
||||
uclong __iomem *pci_doorbell;
|
||||
int index;
|
||||
|
||||
firm_id = cinfo->base_addr + ID_ADDRESS;
|
||||
|
|
|
@ -149,14 +149,12 @@ struct CYZ_BOOT_CTRL {
|
|||
* architectures and compilers.
|
||||
*/
|
||||
|
||||
#if defined(__alpha__)
|
||||
typedef unsigned long ucdouble; /* 64 bits, unsigned */
|
||||
typedef unsigned int uclong; /* 32 bits, unsigned */
|
||||
#else
|
||||
typedef unsigned long uclong; /* 32 bits, unsigned */
|
||||
#endif
|
||||
typedef unsigned short ucshort; /* 16 bits, unsigned */
|
||||
typedef unsigned char ucchar; /* 8 bits, unsigned */
|
||||
#include <asm/types.h>
|
||||
|
||||
typedef __u64 ucdouble; /* 64 bits, unsigned */
|
||||
typedef __u32 uclong; /* 32 bits, unsigned */
|
||||
typedef __u16 ucshort; /* 16 bits, unsigned */
|
||||
typedef __u8 ucchar; /* 8 bits, unsigned */
|
||||
|
||||
/*
|
||||
* Memory Window Sizes
|
||||
|
|
Загрузка…
Ссылка в новой задаче