pata_cs5536: Add support for non-X86_32 platforms

pata_cs5536 does work on the other platforms(e.g. Loongson, a MIPS
variant), so, remove the dependency of X86_32 and fix the building
errors under the other platforms via only reserving the X86_32 specific
parts for X86_32.

pata_amd also supports cs5536 IDE controller, but this one saves about
33k for the compressed kernel image(vmlinuz for MIPS).

Signed-off-by: Zhang Le <r0bertz@gentoo.org>
Signed-off-by: Chen Jie <chenj@lemote.com>
Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
This commit is contained in:
Wu Zhangjin 2010-12-24 21:39:08 +08:00 committed by Jeff Garzik
parent 687a993339
commit 9272dcc232
2 changed files with 13 additions and 7 deletions

View File

@ -366,7 +366,7 @@ config PATA_CS5535
config PATA_CS5536 config PATA_CS5536
tristate "CS5536 PATA support" tristate "CS5536 PATA support"
depends on PCI && X86 && !X86_64 depends on PCI
help help
This option enables support for the AMD CS5536 This option enables support for the AMD CS5536
companion chip used with the Geode LX processor family. companion chip used with the Geode LX processor family.

View File

@ -37,10 +37,20 @@
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/libata.h> #include <linux/libata.h>
#include <scsi/scsi_host.h> #include <scsi/scsi_host.h>
#ifdef CONFIG_X86_32
#include <asm/msr.h> #include <asm/msr.h>
static int use_msr;
module_param_named(msr, use_msr, int, 0644);
MODULE_PARM_DESC(msr, "Force using MSR to configure IDE function (Default: 0)");
#else
#define rdmsr(x, y, z) do { } while (0)
#define wrmsr(x, y, z) do { } while (0)
#define use_msr 0
#endif
#define DRV_NAME "pata_cs5536" #define DRV_NAME "pata_cs5536"
#define DRV_VERSION "0.0.7" #define DRV_VERSION "0.0.8"
enum { enum {
CFG = 0, CFG = 0,
@ -75,8 +85,6 @@ enum {
IDE_ETC_NODMA = 0x03, IDE_ETC_NODMA = 0x03,
}; };
static int use_msr;
static const u32 msr_reg[4] = { static const u32 msr_reg[4] = {
MSR_IDE_CFG, MSR_IDE_DTC, MSR_IDE_CAST, MSR_IDE_ETC, MSR_IDE_CFG, MSR_IDE_DTC, MSR_IDE_CAST, MSR_IDE_ETC,
}; };
@ -88,7 +96,7 @@ static const u8 pci_reg[4] = {
static inline int cs5536_read(struct pci_dev *pdev, int reg, u32 *val) static inline int cs5536_read(struct pci_dev *pdev, int reg, u32 *val)
{ {
if (unlikely(use_msr)) { if (unlikely(use_msr)) {
u32 dummy; u32 dummy __maybe_unused;
rdmsr(msr_reg[reg], *val, dummy); rdmsr(msr_reg[reg], *val, dummy);
return 0; return 0;
@ -294,8 +302,6 @@ MODULE_DESCRIPTION("low-level driver for the CS5536 IDE controller");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_DEVICE_TABLE(pci, cs5536); MODULE_DEVICE_TABLE(pci, cs5536);
MODULE_VERSION(DRV_VERSION); MODULE_VERSION(DRV_VERSION);
module_param_named(msr, use_msr, int, 0644);
MODULE_PARM_DESC(msr, "Force using MSR to configure IDE function (Default: 0)");
module_init(cs5536_init); module_init(cs5536_init);
module_exit(cs5536_exit); module_exit(cs5536_exit);