提交 63e7ebd0 编写于 作者: D Daniel Ritz 提交者: Dominik Brodowski

[PATCH] yenta: make bridge specific init code configurable

Make the bridge specific initialization code config options depending on
CONFIG_EMBEDDED. Config options for TI/EnE, Toshiba, Ricoh and O2Micro are
available. Disabling all of the specific tweaks cuts off more than half
of yenta_socket.ko.
Signed-off-by: NDaniel Ritz <daniel.ritz@gmx.ch>
Signed-off-by: NDominik Brodowski <linux@dominikbrodowski.net>
上级 2cff9447
...@@ -116,6 +116,31 @@ config YENTA ...@@ -116,6 +116,31 @@ config YENTA
If unsure, say Y. If unsure, say Y.
config YENTA_O2
default y
bool "Special initialization for O2Micro bridges" if EMBEDDED
depends on YENTA
config YENTA_RICOH
default y
bool "Special initialization for Ricoh bridges" if EMBEDDED
depends on YENTA
config YENTA_TI
default y
bool "Special initialization for TI and EnE bridges" if EMBEDDED
depends on YENTA
config YENTA_ENE_TUNE
default y
bool "Auto-tune EnE bridges for CB cards" if EMBEDDED
depends on YENTA_TI && CARDBUS
config YENTA_TOSHIBA
default y
bool "Special initialization for Toshiba ToPIC bridges" if EMBEDDED
depends on YENTA
config PD6729 config PD6729
tristate "Cirrus PD6729 compatible bridge support" tristate "Cirrus PD6729 compatible bridge support"
depends on PCMCIA && PCI depends on PCMCIA && PCI
......
...@@ -873,7 +873,7 @@ static int ti1250_override(struct yenta_socket *socket) ...@@ -873,7 +873,7 @@ static int ti1250_override(struct yenta_socket *socket)
* Some fixup code to make everybody happy (TM). * Some fixup code to make everybody happy (TM).
*/ */
#ifdef CONFIG_CARDBUS #ifdef CONFIG_YENTA_ENE_TUNE
/** /**
* set/clear various test bits: * set/clear various test bits:
* Defaults to clear the bit. * Defaults to clear the bit.
...@@ -937,7 +937,7 @@ static int ene_override(struct yenta_socket *socket) ...@@ -937,7 +937,7 @@ static int ene_override(struct yenta_socket *socket)
} }
#else #else
# define ene_override ti1250_override # define ene_override ti1250_override
#endif #endif /* !CONFIG_YENTA_ENE_TUNE */
#endif /* _LINUX_TI113X_H */ #endif /* _LINUX_TI113X_H */
...@@ -49,7 +49,13 @@ MODULE_PARM_DESC(pwr_irqs_off, "Force IRQs off during power-on of slot. Use only ...@@ -49,7 +49,13 @@ MODULE_PARM_DESC(pwr_irqs_off, "Force IRQs off during power-on of slot. Use only
#define to_cycles(ns) ((ns)/120) #define to_cycles(ns) ((ns)/120)
#define to_ns(cycles) ((cycles)*120) #define to_ns(cycles) ((cycles)*120)
/**
* yenta PCI irq probing.
* currently only used in the TI/EnE initialization code
*/
#ifdef CONFIG_YENTA_TI
static int yenta_probe_cb_irq(struct yenta_socket *socket); static int yenta_probe_cb_irq(struct yenta_socket *socket);
#endif
static unsigned int override_bios; static unsigned int override_bios;
...@@ -745,10 +751,18 @@ static struct pccard_operations yenta_socket_operations = { ...@@ -745,10 +751,18 @@ static struct pccard_operations yenta_socket_operations = {
}; };
#ifdef CONFIG_YENTA_TI
#include "ti113x.h" #include "ti113x.h"
#endif
#ifdef CONFIG_YENTA_RICOH
#include "ricoh.h" #include "ricoh.h"
#endif
#ifdef CONFIG_YENTA_TOSHIBA
#include "topic.h" #include "topic.h"
#endif
#ifdef CONFIG_YENTA_O2
#include "o2micro.h" #include "o2micro.h"
#endif
enum { enum {
CARDBUS_TYPE_DEFAULT = -1, CARDBUS_TYPE_DEFAULT = -1,
...@@ -768,6 +782,7 @@ enum { ...@@ -768,6 +782,7 @@ enum {
* initialization sequences etc details. List them here.. * initialization sequences etc details. List them here..
*/ */
static struct cardbus_type cardbus_type[] = { static struct cardbus_type cardbus_type[] = {
#ifdef CONFIG_YENTA_TI
[CARDBUS_TYPE_TI] = { [CARDBUS_TYPE_TI] = {
.override = ti_override, .override = ti_override,
.save_state = ti_save_state, .save_state = ti_save_state,
...@@ -792,27 +807,36 @@ static struct cardbus_type cardbus_type[] = { ...@@ -792,27 +807,36 @@ static struct cardbus_type cardbus_type[] = {
.restore_state = ti_restore_state, .restore_state = ti_restore_state,
.sock_init = ti_init, .sock_init = ti_init,
}, },
#endif
#ifdef CONFIG_YENTA_RICOH
[CARDBUS_TYPE_RICOH] = { [CARDBUS_TYPE_RICOH] = {
.override = ricoh_override, .override = ricoh_override,
.save_state = ricoh_save_state, .save_state = ricoh_save_state,
.restore_state = ricoh_restore_state, .restore_state = ricoh_restore_state,
}, },
#endif
#ifdef CONFIG_YENTA_TOSHIBA
[CARDBUS_TYPE_TOPIC95] = { [CARDBUS_TYPE_TOPIC95] = {
.override = topic95_override, .override = topic95_override,
}, },
[CARDBUS_TYPE_TOPIC97] = { [CARDBUS_TYPE_TOPIC97] = {
.override = topic97_override, .override = topic97_override,
}, },
#endif
#ifdef CONFIG_YENTA_O2
[CARDBUS_TYPE_O2MICRO] = { [CARDBUS_TYPE_O2MICRO] = {
.override = o2micro_override, .override = o2micro_override,
.restore_state = o2micro_restore_state, .restore_state = o2micro_restore_state,
}, },
#endif
#ifdef CONFIG_YENTA_TI
[CARDBUS_TYPE_ENE] = { [CARDBUS_TYPE_ENE] = {
.override = ene_override, .override = ene_override,
.save_state = ti_save_state, .save_state = ti_save_state,
.restore_state = ti_restore_state, .restore_state = ti_restore_state,
.sock_init = ti_init, .sock_init = ti_init,
}, },
#endif
}; };
...@@ -858,6 +882,12 @@ static unsigned int yenta_probe_irq(struct yenta_socket *socket, u32 isa_irq_mas ...@@ -858,6 +882,12 @@ static unsigned int yenta_probe_irq(struct yenta_socket *socket, u32 isa_irq_mas
} }
/**
* yenta PCI irq probing.
* currently only used in the TI/EnE initialization code
*/
#ifdef CONFIG_YENTA_TI
/* interrupt handler, only used during probing */ /* interrupt handler, only used during probing */
static irqreturn_t yenta_probe_handler(int irq, void *dev_id, struct pt_regs *regs) static irqreturn_t yenta_probe_handler(int irq, void *dev_id, struct pt_regs *regs)
{ {
...@@ -910,6 +940,7 @@ static int yenta_probe_cb_irq(struct yenta_socket *socket) ...@@ -910,6 +940,7 @@ static int yenta_probe_cb_irq(struct yenta_socket *socket)
return (int) socket->probe_status; return (int) socket->probe_status;
} }
#endif /* CONFIG_YENTA_TI */
/* /*
...@@ -1173,6 +1204,7 @@ static struct pci_device_id yenta_table [] = { ...@@ -1173,6 +1204,7 @@ static struct pci_device_id yenta_table [] = {
* advanced overrides instead. (I can't get the * advanced overrides instead. (I can't get the
* data sheets for these devices. --rmk) * data sheets for these devices. --rmk)
*/ */
#ifdef CONFIG_YENTA_TI
CB_ID(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_1210, TI), CB_ID(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_1210, TI),
CB_ID(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_1130, TI113X), CB_ID(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_1130, TI113X),
...@@ -1215,18 +1247,25 @@ static struct pci_device_id yenta_table [] = { ...@@ -1215,18 +1247,25 @@ static struct pci_device_id yenta_table [] = {
CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_1225, 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_1410, ENE),
CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_1420, ENE), CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_1420, ENE),
#endif /* CONFIG_YENTA_TI */
#ifdef CONFIG_YENTA_RICOH
CB_ID(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_RL5C465, RICOH), CB_ID(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_RL5C465, RICOH),
CB_ID(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_RL5C466, RICOH), CB_ID(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_RL5C466, RICOH),
CB_ID(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_RL5C475, RICOH), CB_ID(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_RL5C475, RICOH),
CB_ID(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_RL5C476, RICOH), CB_ID(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_RL5C476, RICOH),
CB_ID(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_RL5C478, RICOH), CB_ID(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_RL5C478, RICOH),
#endif
#ifdef CONFIG_YENTA_TOSHIBA
CB_ID(PCI_VENDOR_ID_TOSHIBA, PCI_DEVICE_ID_TOSHIBA_TOPIC95, TOPIC95), CB_ID(PCI_VENDOR_ID_TOSHIBA, PCI_DEVICE_ID_TOSHIBA_TOPIC95, TOPIC95),
CB_ID(PCI_VENDOR_ID_TOSHIBA, PCI_DEVICE_ID_TOSHIBA_TOPIC97, TOPIC97), CB_ID(PCI_VENDOR_ID_TOSHIBA, PCI_DEVICE_ID_TOSHIBA_TOPIC97, TOPIC97),
CB_ID(PCI_VENDOR_ID_TOSHIBA, PCI_DEVICE_ID_TOSHIBA_TOPIC100, TOPIC97), CB_ID(PCI_VENDOR_ID_TOSHIBA, PCI_DEVICE_ID_TOSHIBA_TOPIC100, TOPIC97),
#endif
#ifdef CONFIG_YENTA_O2
CB_ID(PCI_VENDOR_ID_O2, PCI_ANY_ID, O2MICRO), CB_ID(PCI_VENDOR_ID_O2, PCI_ANY_ID, O2MICRO),
#endif
/* match any cardbus bridge */ /* match any cardbus bridge */
CB_ID(PCI_ANY_ID, PCI_ANY_ID, DEFAULT), CB_ID(PCI_ANY_ID, PCI_ANY_ID, DEFAULT),
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册