[PATCH] yenta: make bridge specific init code configurable
Daniel Ritz [Thu, 3 Nov 2005 20:12:14 +0000 (21:12 +0100)]
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: Daniel Ritz <daniel.ritz@gmx.ch>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

drivers/pcmcia/Kconfig
drivers/pcmcia/ti113x.h
drivers/pcmcia/yenta_socket.c

index 309eb55..ea00b1f 100644 (file)
@@ -116,6 +116,31 @@ config YENTA
 
          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
        tristate "Cirrus PD6729 compatible bridge support"
        depends on PCMCIA && PCI
index 539b5cd..d5b4ff7 100644 (file)
@@ -873,7 +873,7 @@ static int ti1250_override(struct yenta_socket *socket)
  * Some fixup code to make everybody happy (TM).
  */
 
-#ifdef CONFIG_CARDBUS
+#ifdef CONFIG_YENTA_ENE_TUNE
 /**
  * set/clear various test bits:
  * Defaults to clear the bit.
@@ -937,7 +937,7 @@ static int ene_override(struct yenta_socket *socket)
 }
 #else
 #  define ene_override ti1250_override
-#endif
+#endif /* !CONFIG_YENTA_ENE_TUNE */
 
 #endif /* _LINUX_TI113X_H */
 
index fa0625c..826e7e1 100644 (file)
@@ -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_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);
+#endif
 
 
 static unsigned int override_bios;
@@ -745,10 +751,18 @@ static struct pccard_operations yenta_socket_operations = {
 };
 
 
+#ifdef CONFIG_YENTA_TI
 #include "ti113x.h"
+#endif
+#ifdef CONFIG_YENTA_RICOH
 #include "ricoh.h"
+#endif
+#ifdef CONFIG_YENTA_TOSHIBA
 #include "topic.h"
+#endif
+#ifdef CONFIG_YENTA_O2
 #include "o2micro.h"
+#endif
 
 enum {
        CARDBUS_TYPE_DEFAULT = -1,
@@ -768,6 +782,7 @@ enum {
  * initialization sequences etc details. List them here..
  */
 static struct cardbus_type cardbus_type[] = {
+#ifdef CONFIG_YENTA_TI
        [CARDBUS_TYPE_TI]       = {
                .override       = ti_override,
                .save_state     = ti_save_state,
@@ -792,27 +807,36 @@ static struct cardbus_type cardbus_type[] = {
                .restore_state  = ti_restore_state,
                .sock_init      = ti_init,
        },
+#endif
+#ifdef CONFIG_YENTA_RICOH
        [CARDBUS_TYPE_RICOH]    = {
                .override       = ricoh_override,
                .save_state     = ricoh_save_state,
                .restore_state  = ricoh_restore_state,
        },
+#endif
+#ifdef CONFIG_YENTA_TOSHIBA
        [CARDBUS_TYPE_TOPIC95]  = {
                .override       = topic95_override,
        },
        [CARDBUS_TYPE_TOPIC97]  = {
                .override       = topic97_override,
        },
+#endif
+#ifdef CONFIG_YENTA_O2
        [CARDBUS_TYPE_O2MICRO]  = {
                .override       = o2micro_override,
                .restore_state  = o2micro_restore_state,
        },
+#endif
+#ifdef CONFIG_YENTA_TI
        [CARDBUS_TYPE_ENE]      = {
                .override       = ene_override,
                .save_state     = ti_save_state,
                .restore_state  = ti_restore_state,
                .sock_init      = ti_init,
        },
+#endif
 };
 
 
@@ -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 */
 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)
        return (int) socket->probe_status;
 }
 
+#endif /* CONFIG_YENTA_TI */
 
 
 /*
@@ -1173,6 +1204,7 @@ static struct pci_device_id yenta_table [] = {
         * advanced overrides instead.  (I can't get the
         * 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_1130, TI113X),
@@ -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_1410, 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_RL5C466, 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_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_TOPIC97, 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),
+#endif
 
        /* match any cardbus bridge */
        CB_ID(PCI_ANY_ID, PCI_ANY_ID, DEFAULT),