p54spi: Kconfig option for config blob
authorChristian Lamparter <chunkeey@googlemail.com>
Sat, 21 Aug 2010 22:00:14 +0000 (00:00 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 25 Aug 2010 18:33:18 +0000 (14:33 -0400)
This patch adds an Kconfig option, which allows the user
to select, whenever he/she wants to include a 4k blob for
generic calibration and interface values into the driver,
or cut the module size by about 15 to 20%.

Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/p54/Kconfig
drivers/net/wireless/p54/p54spi.c

index 60a930e45a8b16e0cee3b2cae628f6740f558836..e5f45cb2a7a2334d839560d7c6366227f83c0030 100644 (file)
@@ -49,6 +49,23 @@ config P54_SPI
 
          If you choose to build a module, it'll be called p54spi.
 
+config P54_SPI_DEFAULT_EEPROM
+       bool "Include fallback EEPROM blob"
+       depends on P54_SPI
+       default n
+       ---help---
+        Unlike the PCI or USB devices, the SPI variants don't have
+        a dedicated EEPROM chip to store all device specific values
+        for calibration, country and interface settings.
+
+        The driver will try to load the image "3826.eeprom", if the
+        file is put at the right place. (usually /lib/firmware.)
+
+        Only if this request fails, this option will provide a
+        backup set of generic values to get the device working.
+
+        Enabling this option adds about 4k to p54spi.
+
 config P54_LEDS
        bool
        depends on P54_COMMON && MAC80211_LEDS && (LEDS_CLASS = y || LEDS_CLASS = P54_COMMON)
index 087bf0698a5af7aee75a8c47fac852fe4cd35fa1..156e57dbd2cfa858df969ab3e98c8476f173ee89 100644 (file)
 #include <linux/slab.h>
 
 #include "p54spi.h"
-#include "p54spi_eeprom.h"
 #include "p54.h"
 
 #include "lmac.h"
 
+#ifdef CONFIG_P54_SPI_DEFAULT_EEPROM
+#include "p54spi_eeprom.h"
+#endif /* CONFIG_P54_SPI_DEFAULT_EEPROM */
+
 MODULE_FIRMWARE("3826.arm");
 MODULE_ALIAS("stlc45xx");
 
@@ -195,9 +198,11 @@ static int p54spi_request_eeprom(struct ieee80211_hw *dev)
 
        ret = request_firmware(&eeprom, "3826.eeprom", &priv->spi->dev);
        if (ret < 0) {
+#ifdef CONFIG_P54_SPI_DEFAULT_EEPROM
                dev_info(&priv->spi->dev, "loading default eeprom...\n");
                ret = p54_parse_eeprom(dev, (void *) p54spi_eeprom,
                                       sizeof(p54spi_eeprom));
+#endif /* CONFIG_P54_SPI_DEFAULT_EEPROM */
        } else {
                dev_info(&priv->spi->dev, "loading user eeprom...\n");
                ret = p54_parse_eeprom(dev, (void *) eeprom->data,