mirror of
https://github.com/torvalds/linux.git
synced 2024-12-26 21:02:19 +00:00
Merge master.kernel.org:/pub/scm/linux/kernel/git/brodo/pcmcia-fixes-2.6
This commit is contained in:
commit
bf0cbb3e42
@ -477,7 +477,7 @@ static struct pcmcia_device_id ide_ids[] = {
|
||||
PCMCIA_DEVICE_PROD_ID12("IO DATA", "PCIDE", 0x547e66dc, 0x5c5ab149),
|
||||
PCMCIA_DEVICE_PROD_ID12("IO DATA", "PCIDEII", 0x547e66dc, 0xb3662674),
|
||||
PCMCIA_DEVICE_PROD_ID12("LOOKMEET", "CBIDE2 ", 0xe37be2b5, 0x8671043b),
|
||||
PCMCIA_DEVICE_PROD_ID12(" ", "NinjaATA-", 0x3b6e20c8, 0xebe0bd79),
|
||||
PCMCIA_DEVICE_PROD_ID2("NinjaATA-", 0xebe0bd79),
|
||||
PCMCIA_DEVICE_PROD_ID12("PCMCIA", "CD-ROM", 0x281f1c5d, 0x66536591),
|
||||
PCMCIA_DEVICE_PROD_ID12("PCMCIA", "PnPIDE", 0x281f1c5d, 0x0c694728),
|
||||
PCMCIA_DEVICE_PROD_ID12("SHUTTLE TECHNOLOGY LTD.", "PCCARD-IDE/ATAPI Adapter", 0x4a3f0ba0, 0x322560e1),
|
||||
|
@ -146,7 +146,7 @@ config I82365
|
||||
|
||||
config TCIC
|
||||
tristate "Databook TCIC host bridge support"
|
||||
depends on PCMCIA
|
||||
depends on PCMCIA && ISA
|
||||
select PCCARD_NONSTATIC
|
||||
help
|
||||
Say Y here to include support for the Databook TCIC family of PCMCIA
|
||||
|
@ -228,6 +228,11 @@ int cb_alloc(struct pcmcia_socket * s)
|
||||
pci_bus_size_bridges(bus);
|
||||
pci_bus_assign_resources(bus);
|
||||
cardbus_assign_irqs(bus, s->pci_irq);
|
||||
|
||||
/* socket specific tune function */
|
||||
if (s->tune_bridge)
|
||||
s->tune_bridge(s, bus);
|
||||
|
||||
pci_enable_bridges(bus);
|
||||
pci_bus_add_devices(bus);
|
||||
|
||||
|
@ -59,6 +59,7 @@
|
||||
|
||||
#define TI122X_SCR_SER_STEP 0xc0000000
|
||||
#define TI122X_SCR_INTRTIE 0x20000000
|
||||
#define TIXX21_SCR_TIEALL 0x10000000
|
||||
#define TI122X_SCR_CBRSVD 0x00400000
|
||||
#define TI122X_SCR_MRBURSTDN 0x00008000
|
||||
#define TI122X_SCR_MRBURSTUP 0x00004000
|
||||
@ -153,6 +154,12 @@
|
||||
/* EnE test register */
|
||||
#define ENE_TEST_C9 0xc9 /* 8bit */
|
||||
#define ENE_TEST_C9_TLTENABLE 0x02
|
||||
#define ENE_TEST_C9_PFENABLE_F0 0x04
|
||||
#define ENE_TEST_C9_PFENABLE_F1 0x08
|
||||
#define ENE_TEST_C9_PFENABLE (ENE_TEST_C9_PFENABLE_F0 | ENE_TEST_C9_PFENABLE_F0)
|
||||
#define ENE_TEST_C9_WPDISALBLE_F0 0x40
|
||||
#define ENE_TEST_C9_WPDISALBLE_F1 0x80
|
||||
#define ENE_TEST_C9_WPDISALBLE (ENE_TEST_C9_WPDISALBLE_F0 | ENE_TEST_C9_WPDISALBLE_F1)
|
||||
|
||||
/*
|
||||
* Texas Instruments CardBus controller overrides.
|
||||
@ -618,6 +625,7 @@ static int ti12xx_2nd_slot_empty(struct yenta_socket *socket)
|
||||
int devfn;
|
||||
unsigned int state;
|
||||
int ret = 1;
|
||||
u32 sysctl;
|
||||
|
||||
/* catch the two-slot controllers */
|
||||
switch (socket->dev->device) {
|
||||
@ -640,6 +648,24 @@ static int ti12xx_2nd_slot_empty(struct yenta_socket *socket)
|
||||
*/
|
||||
break;
|
||||
|
||||
case PCI_DEVICE_ID_TI_X515:
|
||||
case PCI_DEVICE_ID_TI_X420:
|
||||
case PCI_DEVICE_ID_TI_X620:
|
||||
case PCI_DEVICE_ID_TI_XX21_XX11:
|
||||
case PCI_DEVICE_ID_TI_7410:
|
||||
case PCI_DEVICE_ID_TI_7610:
|
||||
/*
|
||||
* those are either single or dual slot CB with additional functions
|
||||
* like 1394, smartcard reader, etc. check the TIEALL flag for them
|
||||
* the TIEALL flag binds the IRQ of all functions toghether.
|
||||
* we catch the single slot variants later.
|
||||
*/
|
||||
sysctl = config_readl(socket, TI113X_SYSTEM_CONTROL);
|
||||
if (sysctl & TIXX21_SCR_TIEALL)
|
||||
return 0;
|
||||
|
||||
break;
|
||||
|
||||
/* single-slot controllers have the 2nd slot empty always :) */
|
||||
default:
|
||||
return 1;
|
||||
@ -652,6 +678,15 @@ static int ti12xx_2nd_slot_empty(struct yenta_socket *socket)
|
||||
if (!func)
|
||||
return 1;
|
||||
|
||||
/*
|
||||
* check that the device id of both slots match. this is needed for the
|
||||
* XX21 and the XX11 controller that share the same device id for single
|
||||
* and dual slot controllers. return '2nd slot empty'. we already checked
|
||||
* if the interrupt is tied to another function.
|
||||
*/
|
||||
if (socket->dev->device != func->device)
|
||||
goto out;
|
||||
|
||||
slot2 = pci_get_drvdata(func);
|
||||
if (!slot2)
|
||||
goto out;
|
||||
@ -790,16 +825,6 @@ static int ti12xx_override(struct yenta_socket *socket)
|
||||
if (val_orig != val)
|
||||
config_writel(socket, TI113X_SYSTEM_CONTROL, val);
|
||||
|
||||
/*
|
||||
* for EnE bridges only: clear testbit TLTEnable. this makes the
|
||||
* RME Hammerfall DSP sound card working.
|
||||
*/
|
||||
if (socket->dev->vendor == PCI_VENDOR_ID_ENE) {
|
||||
u8 test_c9 = config_readb(socket, ENE_TEST_C9);
|
||||
test_c9 &= ~ENE_TEST_C9_TLTENABLE;
|
||||
config_writeb(socket, ENE_TEST_C9, test_c9);
|
||||
}
|
||||
|
||||
/*
|
||||
* Yenta expects controllers to use CSCINT to route
|
||||
* CSC interrupts to PCI rather than INTVAL.
|
||||
@ -841,5 +866,75 @@ static int ti1250_override(struct yenta_socket *socket)
|
||||
return ti12xx_override(socket);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* EnE specific part. EnE bridges are register compatible with TI bridges but
|
||||
* have their own test registers and more important their own little problems.
|
||||
* Some fixup code to make everybody happy (TM).
|
||||
*/
|
||||
|
||||
/**
|
||||
* set/clear various test bits:
|
||||
* Defaults to clear the bit.
|
||||
* - mask (u8) defines what bits to change
|
||||
* - bits (u8) is the values to change them to
|
||||
* -> it's
|
||||
* current = (current & ~mask) | bits
|
||||
*/
|
||||
/* pci ids of devices that wants to have the bit set */
|
||||
#define DEVID(_vend,_dev,_subvend,_subdev,mask,bits) { \
|
||||
.vendor = _vend, \
|
||||
.device = _dev, \
|
||||
.subvendor = _subvend, \
|
||||
.subdevice = _subdev, \
|
||||
.driver_data = ((mask) << 8 | (bits)), \
|
||||
}
|
||||
static struct pci_device_id ene_tune_tbl[] = {
|
||||
/* Echo Audio products based on motorola DSP56301 and DSP56361 */
|
||||
DEVID(PCI_VENDOR_ID_MOTOROLA, 0x1801, 0xECC0, PCI_ANY_ID,
|
||||
ENE_TEST_C9_TLTENABLE | ENE_TEST_C9_PFENABLE, ENE_TEST_C9_TLTENABLE),
|
||||
DEVID(PCI_VENDOR_ID_MOTOROLA, 0x3410, 0xECC0, PCI_ANY_ID,
|
||||
ENE_TEST_C9_TLTENABLE | ENE_TEST_C9_PFENABLE, ENE_TEST_C9_TLTENABLE),
|
||||
|
||||
{}
|
||||
};
|
||||
|
||||
static void ene_tune_bridge(struct pcmcia_socket *sock, struct pci_bus *bus)
|
||||
{
|
||||
struct yenta_socket *socket = container_of(sock, struct yenta_socket, socket);
|
||||
struct pci_dev *dev;
|
||||
struct pci_device_id *id = NULL;
|
||||
u8 test_c9, old_c9, mask, bits;
|
||||
|
||||
list_for_each_entry(dev, &bus->devices, bus_list) {
|
||||
id = (struct pci_device_id *) pci_match_id(ene_tune_tbl, dev);
|
||||
if (id)
|
||||
break;
|
||||
}
|
||||
|
||||
test_c9 = old_c9 = config_readb(socket, ENE_TEST_C9);
|
||||
if (id) {
|
||||
mask = (id->driver_data >> 8) & 0xFF;
|
||||
bits = id->driver_data & 0xFF;
|
||||
|
||||
test_c9 = (test_c9 & ~mask) | bits;
|
||||
}
|
||||
else
|
||||
/* default to clear TLTEnable bit, old behaviour */
|
||||
test_c9 &= ~ENE_TEST_C9_TLTENABLE;
|
||||
|
||||
printk(KERN_INFO "yenta EnE: chaning testregister 0xC9, %02x -> %02x\n", old_c9, test_c9);
|
||||
config_writeb(socket, ENE_TEST_C9, test_c9);
|
||||
}
|
||||
|
||||
|
||||
static int ene_override(struct yenta_socket *socket)
|
||||
{
|
||||
/* install tune_bridge() function */
|
||||
socket->socket.tune_bridge = ene_tune_bridge;
|
||||
|
||||
return ti1250_override(socket);
|
||||
}
|
||||
|
||||
#endif /* _LINUX_TI113X_H */
|
||||
|
||||
|
@ -559,12 +559,6 @@ static void yenta_interrogate(struct yenta_socket *socket)
|
||||
static int yenta_sock_init(struct pcmcia_socket *sock)
|
||||
{
|
||||
struct yenta_socket *socket = container_of(sock, struct yenta_socket, socket);
|
||||
u16 bridge;
|
||||
|
||||
bridge = config_readw(socket, CB_BRIDGE_CONTROL) & ~CB_BRIDGE_INTR;
|
||||
if (!socket->cb_irq)
|
||||
bridge |= CB_BRIDGE_INTR;
|
||||
config_writew(socket, CB_BRIDGE_CONTROL, bridge);
|
||||
|
||||
exca_writeb(socket, I365_GBLCTL, 0x00);
|
||||
exca_writeb(socket, I365_GENCTL, 0x00);
|
||||
@ -819,6 +813,7 @@ enum {
|
||||
CARDBUS_TYPE_TOPIC95,
|
||||
CARDBUS_TYPE_TOPIC97,
|
||||
CARDBUS_TYPE_O2MICRO,
|
||||
CARDBUS_TYPE_ENE,
|
||||
};
|
||||
|
||||
/*
|
||||
@ -865,6 +860,12 @@ static struct cardbus_type cardbus_type[] = {
|
||||
.override = o2micro_override,
|
||||
.restore_state = o2micro_restore_state,
|
||||
},
|
||||
[CARDBUS_TYPE_ENE] = {
|
||||
.override = ene_override,
|
||||
.save_state = ti_save_state,
|
||||
.restore_state = ti_restore_state,
|
||||
.sock_init = ti_init,
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@ -883,16 +884,8 @@ static unsigned int yenta_probe_irq(struct yenta_socket *socket, u32 isa_irq_mas
|
||||
{
|
||||
int i;
|
||||
unsigned long val;
|
||||
u16 bridge_ctrl;
|
||||
u32 mask;
|
||||
|
||||
/* Set up ISA irq routing to probe the ISA irqs.. */
|
||||
bridge_ctrl = config_readw(socket, CB_BRIDGE_CONTROL);
|
||||
if (!(bridge_ctrl & CB_BRIDGE_INTR)) {
|
||||
bridge_ctrl |= CB_BRIDGE_INTR;
|
||||
config_writew(socket, CB_BRIDGE_CONTROL, bridge_ctrl);
|
||||
}
|
||||
|
||||
/*
|
||||
* Probe for usable interrupts using the force
|
||||
* register to generate bogus card status events.
|
||||
@ -914,9 +907,6 @@ static unsigned int yenta_probe_irq(struct yenta_socket *socket, u32 isa_irq_mas
|
||||
|
||||
mask = probe_irq_mask(val) & 0xffff;
|
||||
|
||||
bridge_ctrl &= ~CB_BRIDGE_INTR;
|
||||
config_writew(socket, CB_BRIDGE_CONTROL, bridge_ctrl);
|
||||
|
||||
return mask;
|
||||
}
|
||||
|
||||
@ -944,18 +934,11 @@ static irqreturn_t yenta_probe_handler(int irq, void *dev_id, struct pt_regs *re
|
||||
/* probes the PCI interrupt, use only on override functions */
|
||||
static int yenta_probe_cb_irq(struct yenta_socket *socket)
|
||||
{
|
||||
u16 bridge_ctrl;
|
||||
|
||||
if (!socket->cb_irq)
|
||||
return -1;
|
||||
|
||||
socket->probe_status = 0;
|
||||
|
||||
/* disable ISA interrupts */
|
||||
bridge_ctrl = config_readw(socket, CB_BRIDGE_CONTROL);
|
||||
bridge_ctrl &= ~CB_BRIDGE_INTR;
|
||||
config_writew(socket, CB_BRIDGE_CONTROL, bridge_ctrl);
|
||||
|
||||
if (request_irq(socket->cb_irq, yenta_probe_handler, SA_SHIRQ, "yenta", socket)) {
|
||||
printk(KERN_WARNING "Yenta: request_irq() in yenta_probe_cb_irq() failed!\n");
|
||||
return -1;
|
||||
@ -966,7 +949,7 @@ static int yenta_probe_cb_irq(struct yenta_socket *socket)
|
||||
cb_writel(socket, CB_SOCKET_EVENT, -1);
|
||||
cb_writel(socket, CB_SOCKET_MASK, CB_CSTSMASK);
|
||||
cb_writel(socket, CB_SOCKET_FORCE, CB_FCARDSTS);
|
||||
|
||||
|
||||
msleep(100);
|
||||
|
||||
/* disable interrupts */
|
||||
@ -1004,11 +987,12 @@ static void yenta_config_init(struct yenta_socket *socket)
|
||||
{
|
||||
u16 bridge;
|
||||
struct pci_dev *dev = socket->dev;
|
||||
struct pci_bus_region region;
|
||||
|
||||
pci_set_power_state(socket->dev, 0);
|
||||
pcibios_resource_to_bus(socket->dev, ®ion, &dev->resource[0]);
|
||||
|
||||
config_writel(socket, CB_LEGACY_MODE_BASE, 0);
|
||||
config_writel(socket, PCI_BASE_ADDRESS_0, dev->resource[0].start);
|
||||
config_writel(socket, PCI_BASE_ADDRESS_0, region.start);
|
||||
config_writew(socket, PCI_COMMAND,
|
||||
PCI_COMMAND_IO |
|
||||
PCI_COMMAND_MEMORY |
|
||||
@ -1031,8 +1015,8 @@ static void yenta_config_init(struct yenta_socket *socket)
|
||||
* - PCI interrupts enabled if a PCI interrupt exists..
|
||||
*/
|
||||
bridge = config_readw(socket, CB_BRIDGE_CONTROL);
|
||||
bridge &= ~(CB_BRIDGE_CRST | CB_BRIDGE_PREFETCH1 | CB_BRIDGE_INTR | CB_BRIDGE_ISAEN | CB_BRIDGE_VGAEN);
|
||||
bridge |= CB_BRIDGE_PREFETCH0 | CB_BRIDGE_POSTEN | CB_BRIDGE_INTR;
|
||||
bridge &= ~(CB_BRIDGE_CRST | CB_BRIDGE_PREFETCH1 | CB_BRIDGE_ISAEN | CB_BRIDGE_VGAEN);
|
||||
bridge |= CB_BRIDGE_PREFETCH0 | CB_BRIDGE_POSTEN;
|
||||
config_writew(socket, CB_BRIDGE_CONTROL, bridge);
|
||||
}
|
||||
|
||||
@ -1265,10 +1249,22 @@ static struct pci_device_id yenta_table [] = {
|
||||
CB_ID(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_1250, TI1250),
|
||||
CB_ID(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_1410, TI1250),
|
||||
|
||||
CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_1211, TI12XX),
|
||||
CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_1225, TI12XX),
|
||||
CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_1410, TI1250),
|
||||
CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_1420, TI12XX),
|
||||
CB_ID(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_XX21_XX11, TI12XX),
|
||||
CB_ID(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_X515, TI12XX),
|
||||
CB_ID(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_X420, TI12XX),
|
||||
CB_ID(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_X620, TI12XX),
|
||||
CB_ID(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_7410, TI12XX),
|
||||
CB_ID(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_7510, TI12XX),
|
||||
CB_ID(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_7610, TI12XX),
|
||||
|
||||
CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_710, TI12XX),
|
||||
CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_712, TI12XX),
|
||||
CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_720, TI12XX),
|
||||
CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_722, TI12XX),
|
||||
CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_1211, ENE),
|
||||
CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_1225, ENE),
|
||||
CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_1410, ENE),
|
||||
CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_1420, ENE),
|
||||
|
||||
CB_ID(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_RL5C465, RICOH),
|
||||
CB_ID(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_RL5C466, RICOH),
|
||||
|
@ -859,6 +859,7 @@ static struct pcmcia_device_id serial_ids[] = {
|
||||
PCMCIA_MFC_DEVICE_CIS_MANF_CARD(1, 0x0175, 0x0000, "DP83903.cis"),
|
||||
PCMCIA_MFC_DEVICE_CIS_MANF_CARD(1, 0x0101, 0x0035, "3CXEM556.cis"),
|
||||
PCMCIA_MFC_DEVICE_CIS_MANF_CARD(1, 0x0101, 0x003d, "3CXEM556.cis"),
|
||||
PCMCIA_DEVICE_CIS_MANF_CARD(0x0192, 0x0710, "SW_7xx_SER.cis"), /* Sierra Wireless AC710/AC750 GPRS Network Adapter R1 */
|
||||
PCMCIA_DEVICE_CIS_PROD_ID12("MultiTech", "PCMCIA 56K DataFax", 0x842047ee, 0xc2efcf03, "MT5634ZLX.cis"),
|
||||
PCMCIA_DEVICE_CIS_PROD_ID12("ADVANTECH", "COMpad-32/85B-4", 0x96913a85, 0xcec8f102, "COMpad4.cis"),
|
||||
PCMCIA_DEVICE_CIS_PROD_ID123("ADVANTECH", "COMpad-32/85", "1.0", 0x96913a85, 0x8fbe92ae, 0x0877b627, "COMpad2.cis"),
|
||||
|
@ -209,10 +209,11 @@ struct pcmcia_device_id {
|
||||
/* for real multi-function devices */
|
||||
__u8 function;
|
||||
|
||||
/* for pseude multi-function devices */
|
||||
/* for pseudo multi-function devices */
|
||||
__u8 device_no;
|
||||
|
||||
__u32 prod_id_hash[4];
|
||||
__u32 prod_id_hash[4]
|
||||
__attribute__((aligned(sizeof(__u32))));
|
||||
|
||||
/* not matched against in kernelspace*/
|
||||
#ifdef __KERNEL__
|
||||
|
@ -769,6 +769,8 @@
|
||||
#define PCI_DEVICE_ID_TI_TVP4010 0x3d04
|
||||
#define PCI_DEVICE_ID_TI_TVP4020 0x3d07
|
||||
#define PCI_DEVICE_ID_TI_4450 0x8011
|
||||
#define PCI_DEVICE_ID_TI_XX21_XX11 0x8031
|
||||
#define PCI_DEVICE_ID_TI_X515 0x8036
|
||||
#define PCI_DEVICE_ID_TI_1130 0xac12
|
||||
#define PCI_DEVICE_ID_TI_1031 0xac13
|
||||
#define PCI_DEVICE_ID_TI_1131 0xac15
|
||||
@ -785,12 +787,17 @@
|
||||
#define PCI_DEVICE_ID_TI_4451 0xac42
|
||||
#define PCI_DEVICE_ID_TI_4510 0xac44
|
||||
#define PCI_DEVICE_ID_TI_4520 0xac46
|
||||
#define PCI_DEVICE_ID_TI_7510 0xac47
|
||||
#define PCI_DEVICE_ID_TI_7610 0xac48
|
||||
#define PCI_DEVICE_ID_TI_7410 0xac49
|
||||
#define PCI_DEVICE_ID_TI_1410 0xac50
|
||||
#define PCI_DEVICE_ID_TI_1420 0xac51
|
||||
#define PCI_DEVICE_ID_TI_1451A 0xac52
|
||||
#define PCI_DEVICE_ID_TI_1620 0xac54
|
||||
#define PCI_DEVICE_ID_TI_1520 0xac55
|
||||
#define PCI_DEVICE_ID_TI_1510 0xac56
|
||||
#define PCI_DEVICE_ID_TI_X620 0xac8d
|
||||
#define PCI_DEVICE_ID_TI_X420 0xac8e
|
||||
|
||||
#define PCI_VENDOR_ID_SONY 0x104d
|
||||
#define PCI_DEVICE_ID_SONY_CXD3222 0x8039
|
||||
@ -2187,7 +2194,12 @@
|
||||
#define PCI_DEVICE_ID_ENE_1211 0x1211
|
||||
#define PCI_DEVICE_ID_ENE_1225 0x1225
|
||||
#define PCI_DEVICE_ID_ENE_1410 0x1410
|
||||
#define PCI_DEVICE_ID_ENE_710 0x1411
|
||||
#define PCI_DEVICE_ID_ENE_712 0x1412
|
||||
#define PCI_DEVICE_ID_ENE_1420 0x1420
|
||||
#define PCI_DEVICE_ID_ENE_720 0x1421
|
||||
#define PCI_DEVICE_ID_ENE_722 0x1422
|
||||
|
||||
#define PCI_VENDOR_ID_CHELSIO 0x1425
|
||||
|
||||
#define PCI_VENDOR_ID_MIPS 0x153f
|
||||
|
@ -21,6 +21,9 @@
|
||||
#include <pcmcia/cs_types.h>
|
||||
#include <pcmcia/cs.h>
|
||||
#include <pcmcia/bulkmem.h>
|
||||
#ifdef CONFIG_CARDBUS
|
||||
#include <linux/pci.h>
|
||||
#endif
|
||||
|
||||
/* Definitions for card status flags for GetStatus */
|
||||
#define SS_WRPROT 0x0001
|
||||
@ -233,7 +236,11 @@ struct pcmcia_socket {
|
||||
|
||||
/* so is power hook */
|
||||
int (*power_hook)(struct pcmcia_socket *sock, int operation);
|
||||
|
||||
#ifdef CONFIG_CARDBUS
|
||||
/* allows tuning the CB bridge before loading driver for the CB card */
|
||||
void (*tune_bridge)(struct pcmcia_socket *sock, struct pci_bus *bus);
|
||||
#endif
|
||||
|
||||
/* state thread */
|
||||
struct semaphore skt_sem; /* protects socket h/w state */
|
||||
|
||||
|
@ -295,11 +295,13 @@ static int do_pcmcia_entry(const char *filename,
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
id->match_flags = TO_NATIVE(id->match_flags);
|
||||
id->manf_id = TO_NATIVE(id->manf_id);
|
||||
id->card_id = TO_NATIVE(id->card_id);
|
||||
id->func_id = TO_NATIVE(id->func_id);
|
||||
id->function = TO_NATIVE(id->function);
|
||||
id->device_no = TO_NATIVE(id->device_no);
|
||||
|
||||
for (i=0; i<4; i++) {
|
||||
id->prod_id_hash[i] = TO_NATIVE(id->prod_id_hash[i]);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user