[PATCH v3 1/2] staging: wilc1000: Add SDIO/SPI 802.11 driver

Nicolas Ferre nicolas.ferre at atmel.com
Sun May 17 18:53:44 UTC 2015


Le 11/05/2015 07:30, Johnny Kim a écrit :
> This driver is for the wilc1000 which is a single chip IEEE 802.11
> b/g/n device.
> The driver works together with cfg80211, which is the kernel side of
> configuration management for wireless devices because the wilc1000
> chipset is fullmac where the MLME is managed in hardware.
> 
> The driver worked from kernel version 2.6.38 and being now ported
> to several others since then.
> A TODO file is included as well in this commit.
> 
> Signed-off-by: Johnny Kim <johnny.kim at atmel.com>
> Signed-off-by: Rachel Kim <rachel.kim at atmel.com>
> Signed-off-by: Dean Lee <dean.lee at atmel.com>
> Signed-off-by: Chris Park <chris.park at atmel.com>
> Acked-by: Nicolas Ferre <nicolas.ferre at atmel.com>
> ---
> Changes in v3:
> - fix the permissions.
> - fix the folder tree.
> - forget to add the mailing-list during the previous sending.

Hi Greg,

Do you have any comment on this v3 series (aka ping ;-)).

Bye,

>  drivers/staging/Kconfig                           |    2 +
>  drivers/staging/Makefile                          |    1 +
>  drivers/staging/wilc1000/Kconfig                  |   55 +
>  drivers/staging/wilc1000/Makefile                 |   41 +
>  drivers/staging/wilc1000/TODO                     |    8 +
>  drivers/staging/wilc1000/coreconfigsimulator.h    |   20 +
>  drivers/staging/wilc1000/coreconfigurator.c       | 2201 ++++++
>  drivers/staging/wilc1000/coreconfigurator.h       |  498 ++
>  drivers/staging/wilc1000/fifo_buffer.c            |  142 +
>  drivers/staging/wilc1000/fifo_buffer.h            |   23 +
>  drivers/staging/wilc1000/host_interface.c         | 8074 +++++++++++++++++++++
>  drivers/staging/wilc1000/host_interface.h         | 1344 ++++
>  drivers/staging/wilc1000/itypes.h                 |   60 +
>  drivers/staging/wilc1000/linux_mon.c              |  643 ++
>  drivers/staging/wilc1000/linux_wlan.c             | 2953 ++++++++
>  drivers/staging/wilc1000/linux_wlan_common.h      |  170 +
>  drivers/staging/wilc1000/linux_wlan_sdio.c        |  249 +
>  drivers/staging/wilc1000/linux_wlan_sdio.h        |   14 +
>  drivers/staging/wilc1000/linux_wlan_spi.c         |  510 ++
>  drivers/staging/wilc1000/linux_wlan_spi.h         |   14 +
>  drivers/staging/wilc1000/wilc_debugfs.c           |  185 +
>  drivers/staging/wilc1000/wilc_errorsupport.h      |   84 +
>  drivers/staging/wilc1000/wilc_event.h             |  123 +
>  drivers/staging/wilc1000/wilc_exported_buf.c      |   76 +
>  drivers/staging/wilc1000/wilc_log.h               |   47 +
>  drivers/staging/wilc1000/wilc_memory.c            |   63 +
>  drivers/staging/wilc1000/wilc_memory.h            |  330 +
>  drivers/staging/wilc1000/wilc_msgqueue.c          |  211 +
>  drivers/staging/wilc1000/wilc_msgqueue.h          |  133 +
>  drivers/staging/wilc1000/wilc_osconfig.h          |   55 +
>  drivers/staging/wilc1000/wilc_oswrapper.h         |  133 +
>  drivers/staging/wilc1000/wilc_platform.h          |  181 +
>  drivers/staging/wilc1000/wilc_sdio.c              | 1298 ++++
>  drivers/staging/wilc1000/wilc_semaphore.c         |   70 +
>  drivers/staging/wilc1000/wilc_semaphore.h         |  115 +
>  drivers/staging/wilc1000/wilc_sleep.c             |   36 +
>  drivers/staging/wilc1000/wilc_sleep.h             |   45 +
>  drivers/staging/wilc1000/wilc_spi.c               | 1475 ++++
>  drivers/staging/wilc1000/wilc_strutils.c          |  431 ++
>  drivers/staging/wilc1000/wilc_strutils.h          |  412 ++
>  drivers/staging/wilc1000/wilc_thread.c            |   35 +
>  drivers/staging/wilc1000/wilc_thread.h            |  153 +
>  drivers/staging/wilc1000/wilc_time.c              |  163 +
>  drivers/staging/wilc1000/wilc_time.h              |  205 +
>  drivers/staging/wilc1000/wilc_timer.c             |   51 +
>  drivers/staging/wilc1000/wilc_timer.h             |  153 +
>  drivers/staging/wilc1000/wilc_type.h              |   34 +
>  drivers/staging/wilc1000/wilc_wfi_cfgoperations.c | 4592 ++++++++++++
>  drivers/staging/wilc1000/wilc_wfi_cfgoperations.h |  134 +
>  drivers/staging/wilc1000/wilc_wfi_netdevice.c     |  960 +++
>  drivers/staging/wilc1000/wilc_wfi_netdevice.h     |  277 +
>  drivers/staging/wilc1000/wilc_wlan.c              | 2434 +++++++
>  drivers/staging/wilc1000/wilc_wlan.h              |  321 +
>  drivers/staging/wilc1000/wilc_wlan_cfg.c          |  643 ++
>  drivers/staging/wilc1000/wilc_wlan_cfg.h          |   33 +
>  drivers/staging/wilc1000/wilc_wlan_if.h           |  991 +++
>  56 files changed, 33704 insertions(+)
>  create mode 100644 drivers/staging/wilc1000/Kconfig
>  create mode 100644 drivers/staging/wilc1000/Makefile
>  create mode 100644 drivers/staging/wilc1000/TODO
>  create mode 100644 drivers/staging/wilc1000/coreconfigsimulator.h
>  create mode 100644 drivers/staging/wilc1000/coreconfigurator.c
>  create mode 100644 drivers/staging/wilc1000/coreconfigurator.h
>  create mode 100644 drivers/staging/wilc1000/fifo_buffer.c
>  create mode 100644 drivers/staging/wilc1000/fifo_buffer.h
>  create mode 100644 drivers/staging/wilc1000/host_interface.c
>  create mode 100644 drivers/staging/wilc1000/host_interface.h
>  create mode 100644 drivers/staging/wilc1000/itypes.h
>  create mode 100644 drivers/staging/wilc1000/linux_mon.c
>  create mode 100644 drivers/staging/wilc1000/linux_wlan.c
>  create mode 100644 drivers/staging/wilc1000/linux_wlan_common.h
>  create mode 100644 drivers/staging/wilc1000/linux_wlan_sdio.c
>  create mode 100644 drivers/staging/wilc1000/linux_wlan_sdio.h
>  create mode 100644 drivers/staging/wilc1000/linux_wlan_spi.c
>  create mode 100644 drivers/staging/wilc1000/linux_wlan_spi.h
>  create mode 100644 drivers/staging/wilc1000/wilc_debugfs.c
>  create mode 100644 drivers/staging/wilc1000/wilc_errorsupport.h
>  create mode 100644 drivers/staging/wilc1000/wilc_event.h
>  create mode 100644 drivers/staging/wilc1000/wilc_exported_buf.c
>  create mode 100644 drivers/staging/wilc1000/wilc_log.h
>  create mode 100644 drivers/staging/wilc1000/wilc_memory.c
>  create mode 100644 drivers/staging/wilc1000/wilc_memory.h
>  create mode 100644 drivers/staging/wilc1000/wilc_msgqueue.c
>  create mode 100644 drivers/staging/wilc1000/wilc_msgqueue.h
>  create mode 100644 drivers/staging/wilc1000/wilc_osconfig.h
>  create mode 100644 drivers/staging/wilc1000/wilc_oswrapper.h
>  create mode 100644 drivers/staging/wilc1000/wilc_platform.h
>  create mode 100644 drivers/staging/wilc1000/wilc_sdio.c
>  create mode 100644 drivers/staging/wilc1000/wilc_semaphore.c
>  create mode 100644 drivers/staging/wilc1000/wilc_semaphore.h
>  create mode 100644 drivers/staging/wilc1000/wilc_sleep.c
>  create mode 100644 drivers/staging/wilc1000/wilc_sleep.h
>  create mode 100644 drivers/staging/wilc1000/wilc_spi.c
>  create mode 100644 drivers/staging/wilc1000/wilc_strutils.c
>  create mode 100644 drivers/staging/wilc1000/wilc_strutils.h
>  create mode 100644 drivers/staging/wilc1000/wilc_thread.c
>  create mode 100644 drivers/staging/wilc1000/wilc_thread.h
>  create mode 100644 drivers/staging/wilc1000/wilc_time.c
>  create mode 100644 drivers/staging/wilc1000/wilc_time.h
>  create mode 100644 drivers/staging/wilc1000/wilc_timer.c
>  create mode 100644 drivers/staging/wilc1000/wilc_timer.h
>  create mode 100644 drivers/staging/wilc1000/wilc_type.h
>  create mode 100644 drivers/staging/wilc1000/wilc_wfi_cfgoperations.c
>  create mode 100644 drivers/staging/wilc1000/wilc_wfi_cfgoperations.h
>  create mode 100644 drivers/staging/wilc1000/wilc_wfi_netdevice.c
>  create mode 100644 drivers/staging/wilc1000/wilc_wfi_netdevice.h
>  create mode 100644 drivers/staging/wilc1000/wilc_wlan.c
>  create mode 100644 drivers/staging/wilc1000/wilc_wlan.h
>  create mode 100644 drivers/staging/wilc1000/wilc_wlan_cfg.c
>  create mode 100644 drivers/staging/wilc1000/wilc_wlan_cfg.h
>  create mode 100644 drivers/staging/wilc1000/wilc_wlan_if.h
> 
> diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig
> index bfacf69..da35af6 100644
> --- a/drivers/staging/Kconfig
> +++ b/drivers/staging/Kconfig
> @@ -112,4 +112,6 @@ source "drivers/staging/i2o/Kconfig"
>  
>  source "drivers/staging/fsl-mc/Kconfig"
>  
> +source "drivers/staging/wilc1000/Kconfig"
> +
>  endif # STAGING
> diff --git a/drivers/staging/Makefile b/drivers/staging/Makefile
> index 2bbd1bf..edbe5ff 100644
> --- a/drivers/staging/Makefile
> +++ b/drivers/staging/Makefile
> @@ -48,3 +48,4 @@ obj-$(CONFIG_COMMON_CLK_XLNX_CLKWZRD)	+= clocking-wizard/
>  obj-$(CONFIG_FB_TFT)		+= fbtft/
>  obj-$(CONFIG_I2O)		+= i2o/
>  obj-$(CONFIG_FSL_MC_BUS)	+= fsl-mc/
> +obj-$(CONFIG_WILC1000)		+= wilc1000/
> diff --git a/drivers/staging/wilc1000/Kconfig b/drivers/staging/wilc1000/Kconfig
> new file mode 100644
> index 0000000..101f908
> --- /dev/null
> +++ b/drivers/staging/wilc1000/Kconfig
> @@ -0,0 +1,55 @@
> +config WILC1000
> +	tristate "WILC1000 support (WiFi only)"
> +	---help---
> +		This module only support IEEE 802.11n WiFi.
> +
> +choice
> +        prompt "Memory Allocation"
> +        depends on WILC1000
> +        default WILC1000_PREALLOCATE_AT_LOADING_DRIVER
> +
> +        config WILC1000_PREALLOCATE_AT_LOADING_DRIVER
> +                bool "Preallocate memory at loading driver"
> +                ---help---
> +                        This choice supports static allocation of the memory
> +                        for the receive buffer. The driver will allocate the RX buffer 
> +                        during initial time. The driver will also free the buffer
> +                        by calling network device stop.
> +
> +        config WILC1000_DYNAMICALLY_ALLOCATE_MEMROY
> +                bool "Dynamically allocate memory in real time"
> +                ---help---
> +                        This choice supports dynamic allocation of the memory
> +                        for the receive buffer. The driver will allocate the RX buffer
> +                        when it is required.
> +endchoice
> +
> +
> +choice
> +    prompt "Bus Type"
> +    depends on WILC1000 
> +    default WILC1000_SDIO
> +    
> +	config WILC1000_SDIO
> +	    bool "SDIO support"
> +	    depends on MMC
> +		---help---
> +			This module adds support for the SDIO interface of adapters using
> +			WILC chipset. Select this if your platform is using the SDIO bus. 
> +
> +	config WILC1000_SPI
> +	    bool "SPI support"
> +		---help---
> +			This module adds support for the SPI interface of adapters using
> +			WILC chipset. Select this if your platform is using the SPI bus. 
> +endchoice
> +
> +
> +config WILC1000_HW_OOB_INTR
> +    bool "Use out of band interrupt"
> +    depends on WILC1000 && WILC1000_SDIO
> +    default n
> +    ---help---
> +		If your platform don't recognize SDIO IRQ, connect chipset external IRQ pin
> +		and check this option. Or, Use this to get all interrupts including SDIO interrupts.
> +
> diff --git a/drivers/staging/wilc1000/Makefile b/drivers/staging/wilc1000/Makefile
> new file mode 100644
> index 0000000..84bd975
> --- /dev/null
> +++ b/drivers/staging/wilc1000/Makefile
> @@ -0,0 +1,41 @@
> +obj-$(CONFIG_WILC1000) += wilc1000.o
> +obj-$(CONFIG_WILC1000_PREALLOCATE_DURING_SYSTEM_BOOT) += wilc_exported_buf.o
> +
> +
> +ccflags-$(CONFIG_WILC1000_SDIO) += -DWILC_SDIO -DCOMPLEMENT_BOOT
> +ccflags-$(CONFIG_WILC1000_HW_OOB_INTR) += -DWILC_SDIO_IRQ_GPIO
> +ccflags-$(CONFIG_WILC1000_SPI) += -DWILC_SPI
> +
> +ccflags-y += -DSTA_FIRMWARE=\"atmel/wilc1000_fw.bin\" \
> +		-DAP_FIRMWARE=\"atmel/wilc1000_ap_fw.bin\" \
> +		-DP2P_CONCURRENCY_FIRMWARE=\"atmel/wilc1000_p2p_fw.bin\"
> +
> +ccflags-y += -I$(src)/ -DEXPORT_SYMTAB  -D__CHECK_ENDIAN__ -DWILC_ASIC_A0 \
> +		-DPLL_WORKAROUND -DCONNECT_DIRECT  -DAGING_ALG \
> +		-DWILC_PARSE_SCAN_IN_HOST -DDISABLE_PWRSAVE_AND_SCAN_DURING_IP \
> +		-DWILC_PLATFORM=WILC_LINUXKERNEL -Wno-unused-function -DUSE_WIRELESS \
> +		-DWILC_DEBUGFS
> +#ccflags-y += -DTCP_ACK_FILTER
> +
> +ccflags-$(CONFIG_WILC1000_PREALLOCATE_DURING_SYSTEM_BOOT) += -DMEMORY_STATIC \
> +								-DWILC_PREALLOC_AT_BOOT
> +
> +ccflags-$(CONFIG_WILC1000_PREALLOCATE_AT_LOADING_DRIVER) += -DMEMORY_STATIC \
> +								-DWILC_PREALLOC_AT_INSMOD
> +
> +ccflags-$(CONFIG_WILC1000_DYNAMICALLY_ALLOCATE_MEMROY) += -DWILC_NORMAL_ALLOC
> +
> +
> +wilc1000-objs := wilc_wfi_netdevice.o wilc_wfi_cfgoperations.o linux_wlan.o linux_mon.o \
> +			wilc_memory.o wilc_msgqueue.o wilc_semaphore.o wilc_sleep.o wilc_strutils.o \
> +			wilc_thread.o wilc_time.o wilc_timer.o coreconfigurator.o host_interface.o \
> +			fifo_buffer.o wilc_sdio.o wilc_spi.o wilc_wlan_cfg.o wilc_debugfs.o
> +
> +wilc1000-$(CONFIG_WILC1000_SDIO) += linux_wlan_sdio.o
> +wilc1000-$(CONFIG_WILC1000_SPI) += linux_wlan_spi.o
> +
> +WILC1000_SRC_VERSION = 10.0
> +PATCHLEVEL = 2
> +WILC1000_FW_VERSION = 0
> +
> +ccflags-y += -D__DRIVER_VERSION__=\"$(WILC1000_SRC_VERSION).$(PATCHLEVEL)\"
> diff --git a/drivers/staging/wilc1000/TODO b/drivers/staging/wilc1000/TODO
> new file mode 100644
> index 0000000..5dfeb3e
> --- /dev/null
> +++ b/drivers/staging/wilc1000/TODO
> @@ -0,0 +1,8 @@
> +TODO:
> +- remove the defined feature as kernel versions
> +- remove OS wrapper functions
> +- remove custom debug and tracing functions
> +- rework comments and function headers(also coding style)
> +- remove build warnings
> +- support soft-ap and p2p mode
> +- support resume/suspend function
> diff --git a/drivers/staging/wilc1000/coreconfigsimulator.h b/drivers/staging/wilc1000/coreconfigsimulator.h
> new file mode 100644
> index 0000000..6c3f431
> --- /dev/null
> +++ b/drivers/staging/wilc1000/coreconfigsimulator.h
> @@ -0,0 +1,20 @@

[..]

-- 
Nicolas Ferre


More information about the devel mailing list