Skip to contentSkip to conversation

p54spi: p54spi driver

RFC PATCH New Christian Lamparter 1 participant 1 message Dec 19, 2008 Networking drivers (wireless)

lore
Share & tools
lore
#0 lore raw

RFC PATCH 3/3 p54spi: p54spi driver

This patch adds the p54spi driver itself.

Again: If you don't know what you're doing, don't do anything ;-)
---

drivers/net/wireless/p54/Kconfig +9 -0
diff -Nurp a/drivers/net/wireless/p54/Kconfig b/drivers/net/wireless/p54/Kconfig
@@ -61,3 +61,12 @@ config P54_PCI
 	  http://prism54.org/
 
 	  If you choose to build a module, it'll be called p54pci.
+
+config P54_SPI
+	tristate "Prism54 SPI (stlc45xx) support"
+	depends on P54_COMMON && SPI_MASTER
+	---help---
+	  This driver is for stlc4550 or stlc4560 based wireless chips.
+	  This driver is highly experimental and untested.
+
+	  If you choose to build a module, it'll be called p54spi.
drivers/net/wireless/p54/Makefile +1 -0
diff -Nurp a/drivers/net/wireless/p54/Makefile b/drivers/net/wireless/p54/Makefile
@@ -1,3 +1,4 @@
 obj-$(CONFIG_P54_COMMON)	+= p54common.o
 obj-$(CONFIG_P54_USB)		+= p54usb.o
 obj-$(CONFIG_P54_PCI)		+= p54pci.o
+obj-$(CONFIG_P54_SPI)		+= p54spi.o
drivers/net/wireless/p54/p54common.c +2 -1
diff -Nurp a/drivers/net/wireless/p54/p54common.c b/drivers/net/wireless/p54/p54common.c
@@ -398,7 +398,7 @@ static int p54_parse_output_power_limits
 	return 0;
 }
 
-static int p54_parse_eeprom(struct ieee80211_hw *dev, void *eeprom, int len)
+int p54_parse_eeprom(struct ieee80211_hw *dev, void *eeprom, int len)
 {
 	struct p54_common *priv = dev->priv;
 	struct eeprom_pda_wrap *wrap = NULL;
@@ -622,6 +622,7 @@ static int p54_parse_eeprom(struct ieee8
 		wiphy_name(dev->wiphy));
 	return err;
 }
+EXPORT_SYMBOL_GPL(p54_parse_eeprom);
 
 static int p54_rssi_to_dbm(struct ieee80211_hw *dev, int rssi)
 {
drivers/net/wireless/p54/p54common.h +0 -6
diff -Nurp a/drivers/net/wireless/p54/p54common.h b/drivers/net/wireless/p54/p54common.h
@@ -278,12 +278,6 @@ struct pda_custom_wrapper {
 #define PDR_COUNTRY_CERT_IODOOR_OUTDOOR	0x30
 #define PDR_COUNTRY_CERT_INDEX		0x0F
 
-/* stored in skb->cb */
-struct memrecord {
-	u32 start_addr;
-	u32 end_addr;
-};
-
 struct p54_eeprom_lm86 {
 	union {
 		struct {
drivers/net/wireless/p54/p54.h +16 -0
diff -Nurp a/drivers/net/wireless/p54/p54.h b/drivers/net/wireless/p54/p54.h
@@ -84,6 +84,21 @@ struct p54_rssi_linear_approximation {
 #define FW_LM87 0x4c4d3837
 #define FW_LM20 0x4c4d3230
 
+enum fw_state {
+	FW_STATE_OFF,
+	FW_STATE_BOOTING,
+	FW_STATE_READY,
+	FW_STATE_RESET,
+	FW_STATE_RESETTING,
+};
+
+/* stored in skb->cb */
+struct memrecord {
+	u32 start_addr;
+	u32 end_addr;
+	u8 driver_data[16];
+};
+
 struct p54_common {
 	struct ieee80211_hw *hw;
 	u32 rx_start;
@@ -132,6 +147,7 @@ struct p54_common {
 int p54_rx(struct ieee80211_hw *dev, struct sk_buff *skb);
 void p54_free_skb(struct ieee80211_hw *dev, struct sk_buff *skb);
 int p54_parse_firmware(struct ieee80211_hw *dev, const struct firmware *fw);
+int p54_parse_eeprom(struct ieee80211_hw *dev, void *eeprom, int len);
 int p54_read_eeprom(struct ieee80211_hw *dev);
 struct ieee80211_hw *p54_init_common(size_t priv_data_len);
 void p54_free_common(struct ieee80211_hw *dev);
drivers/net/wireless/p54/p54spi.c +774 -0

774 lines not on this page · raw message

drivers/net/wireless/p54/p54spi.h +134 -0

134 lines not on this page · raw message