Re: [PATCH v8] mmc: moxart: Add MOXA ART SD/MMC driver

2014-04-24 Thread Ulf Hansson
On 9 April 2014 15:54, Jonas Jensen  wrote:
> Add SD/MMC driver for MOXA ART SoCs.
>
> The "MOXA ART MMC controller" is likely a faraday "ftsdc010",
> a controller with support in U-Boot:
>
> http://git.denx.de/?p=u-boot.git;a=blob;f=drivers/mmc/ftsdc010_mci.c
>
> Signed-off-by: Jonas Jensen 

Acked-by: Ulf Hansson 

> ---
>
> Notes:
> This has been cleaned up further, especially the return value fiasco in 
> v7.
>
> The "MOXA ART MMC controller" is likely a faraday "ftsdc010" (supported 
> by U-Boot [1]).
> Registers are the same albeit named slightly different.
>
> I think this can support other "ftsdc010" SoCs with one reservation for
> power control, which may need hardware specific changes.
>
> Changes since v7:
>
> 1. merge code from U-Boot "ftsdc010" driver [1]
>
>Specifically how it implements status wait, clock divider, fifo width, 
> bus width.
>
> 2. return value cleanup, MMC_ERR_TIMEOUT is no longer used or set at the 
> top of every request
>
>i.e. the default (no error) return value (0) is respected.
>
>Error is only set on actual error, "MMC_ERR_NONE" is no longer used.
>
> 3. FIFO size is now read from register (and respected during PIO transfer)
> 4. supported bus width(s) is now read from register
> 5. !(of_dma_request_slave_channel()) return value check is wrong,
>IS_ERR() must be used.
> 6. clean up and remove unused defines / header includes
> 7. add "faraday,ftsdc010" compatible string (requested by Arnd)
>
> [1] http://git.denx.de/?p=u-boot.git;a=blob;f=drivers/mmc/ftsdc010_mci.c
>
> Applies to next-20140409
>
>  .../devicetree/bindings/mmc/moxa,moxart-mmc.txt|  30 +
>  drivers/mmc/host/Kconfig   |   9 +
>  drivers/mmc/host/Makefile  |   1 +
>  drivers/mmc/host/moxart-mmc.c  | 730 
> +
>  4 files changed, 770 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/mmc/moxa,moxart-mmc.txt
>  create mode 100644 drivers/mmc/host/moxart-mmc.c
>
> diff --git a/Documentation/devicetree/bindings/mmc/moxa,moxart-mmc.txt 
> b/Documentation/devicetree/bindings/mmc/moxa,moxart-mmc.txt
> new file mode 100644
> index 000..b638191
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mmc/moxa,moxart-mmc.txt
> @@ -0,0 +1,30 @@
> +MOXA ART MMC Host Controller Interface
> +
> +  Inherits from mmc binding[1].
> +
> +  [1] Documentation/devicetree/bindings/mmc/mmc.txt
> +
> +Required properties:
> +
> +- compatible : Must be "moxa,moxart-mmc" or "faraday,ftsdc010"
> +- reg :Should contain registers location and length
> +- interrupts : Should contain the interrupt number
> +- clocks : Should contain phandle for the clock feeding the MMC 
> controller
> +
> +Optional properties:
> +
> +- dmas :   Should contain two DMA channels, line request number must be 
> 5 for
> +   both channels
> +- dma-names :  Must be "tx", "rx"
> +
> +Example:
> +
> +   mmc: mmc@98e0 {
> +   compatible = "moxa,moxart-mmc";
> +   reg = <0x98e0 0x5C>;
> +   interrupts = <5 0>;
> +   clocks = <_apb>;
> +   dmas =  < 5>,
> +   < 5>;
> +   dma-names = "tx", "rx";
> +   };
> diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
> index 8aaf8c1..eb93b81 100644
> --- a/drivers/mmc/host/Kconfig
> +++ b/drivers/mmc/host/Kconfig
> @@ -283,6 +283,15 @@ config MMC_SDHCI_BCM2835
>
>   If unsure, say N.
>
> +config MMC_MOXART
> +   tristate "MOXART SD/MMC Host Controller support"
> +   depends on ARCH_MOXART && MMC
> +   help
> + This selects support for the MOXART SD/MMC Host Controller.
> + MOXA provides one multi-functional card reader which can
> + be found on some embedded hardware such as UC-7112-LX.
> + If you have a controller with this interface, say Y here.
> +
>  config MMC_OMAP
> tristate "TI OMAP Multimedia Card Interface support"
> depends on ARCH_OMAP
> diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile
> index 0c8aa5e..dfa6ecb 100644
> --- a/drivers/mmc/host/Makefile
> +++ b/drivers/mmc/host/Makefile
> @@ -50,6 +50,7 @@ obj-$(CONFIG_MMC_JZ4740)  += jz4740_mmc.o
>  obj-$(CONFIG_MMC_VUB300)   += vub300.o
>  obj-$(CONFIG_MMC_USHC) += ushc.o
>  obj-$(CONFIG_MMC_WMT)  += wmt-sdmmc.o
> +obj-$(CONFIG_MMC_MOXART)   += moxart-mmc.o
>
>  obj-$(CONFIG_MMC_REALTEK_PCI)  += rtsx_pci_sdmmc.o
>
> diff --git a/drivers/mmc/host/moxart-mmc.c b/drivers/mmc/host/moxart-mmc.c
> new file mode 100644
> index 000..74924a0
> --- /dev/null
> +++ b/drivers/mmc/host/moxart-mmc.c
> @@ -0,0 +1,730 @@
> +/*
> + * MOXA ART MMC host driver.
> + *
> + * Copyright (C) 2014 Jonas Jensen
> + *
> + * Jonas Jensen 
> + *
> + * Based on code from
> + * Moxa Technologies Co., Ltd. 
> + *
> + * 

Re: [PATCH v8] mmc: moxart: Add MOXA ART SD/MMC driver

2014-04-24 Thread Ulf Hansson
On 9 April 2014 15:54, Jonas Jensen jonas.jen...@gmail.com wrote:
 Add SD/MMC driver for MOXA ART SoCs.

 The MOXA ART MMC controller is likely a faraday ftsdc010,
 a controller with support in U-Boot:

 http://git.denx.de/?p=u-boot.git;a=blob;f=drivers/mmc/ftsdc010_mci.c

 Signed-off-by: Jonas Jensen jonas.jen...@gmail.com

Acked-by: Ulf Hansson ulf.hans...@linaro.org

 ---

 Notes:
 This has been cleaned up further, especially the return value fiasco in 
 v7.

 The MOXA ART MMC controller is likely a faraday ftsdc010 (supported 
 by U-Boot [1]).
 Registers are the same albeit named slightly different.

 I think this can support other ftsdc010 SoCs with one reservation for
 power control, which may need hardware specific changes.

 Changes since v7:

 1. merge code from U-Boot ftsdc010 driver [1]

Specifically how it implements status wait, clock divider, fifo width, 
 bus width.

 2. return value cleanup, MMC_ERR_TIMEOUT is no longer used or set at the 
 top of every request

i.e. the default (no error) return value (0) is respected.

Error is only set on actual error, MMC_ERR_NONE is no longer used.

 3. FIFO size is now read from register (and respected during PIO transfer)
 4. supported bus width(s) is now read from register
 5. !(of_dma_request_slave_channel()) return value check is wrong,
IS_ERR() must be used.
 6. clean up and remove unused defines / header includes
 7. add faraday,ftsdc010 compatible string (requested by Arnd)

 [1] http://git.denx.de/?p=u-boot.git;a=blob;f=drivers/mmc/ftsdc010_mci.c

 Applies to next-20140409

  .../devicetree/bindings/mmc/moxa,moxart-mmc.txt|  30 +
  drivers/mmc/host/Kconfig   |   9 +
  drivers/mmc/host/Makefile  |   1 +
  drivers/mmc/host/moxart-mmc.c  | 730 
 +
  4 files changed, 770 insertions(+)
  create mode 100644 Documentation/devicetree/bindings/mmc/moxa,moxart-mmc.txt
  create mode 100644 drivers/mmc/host/moxart-mmc.c

 diff --git a/Documentation/devicetree/bindings/mmc/moxa,moxart-mmc.txt 
 b/Documentation/devicetree/bindings/mmc/moxa,moxart-mmc.txt
 new file mode 100644
 index 000..b638191
 --- /dev/null
 +++ b/Documentation/devicetree/bindings/mmc/moxa,moxart-mmc.txt
 @@ -0,0 +1,30 @@
 +MOXA ART MMC Host Controller Interface
 +
 +  Inherits from mmc binding[1].
 +
 +  [1] Documentation/devicetree/bindings/mmc/mmc.txt
 +
 +Required properties:
 +
 +- compatible : Must be moxa,moxart-mmc or faraday,ftsdc010
 +- reg :Should contain registers location and length
 +- interrupts : Should contain the interrupt number
 +- clocks : Should contain phandle for the clock feeding the MMC 
 controller
 +
 +Optional properties:
 +
 +- dmas :   Should contain two DMA channels, line request number must be 
 5 for
 +   both channels
 +- dma-names :  Must be tx, rx
 +
 +Example:
 +
 +   mmc: mmc@98e0 {
 +   compatible = moxa,moxart-mmc;
 +   reg = 0x98e0 0x5C;
 +   interrupts = 5 0;
 +   clocks = clk_apb;
 +   dmas =  dma 5,
 +   dma 5;
 +   dma-names = tx, rx;
 +   };
 diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
 index 8aaf8c1..eb93b81 100644
 --- a/drivers/mmc/host/Kconfig
 +++ b/drivers/mmc/host/Kconfig
 @@ -283,6 +283,15 @@ config MMC_SDHCI_BCM2835

   If unsure, say N.

 +config MMC_MOXART
 +   tristate MOXART SD/MMC Host Controller support
 +   depends on ARCH_MOXART  MMC
 +   help
 + This selects support for the MOXART SD/MMC Host Controller.
 + MOXA provides one multi-functional card reader which can
 + be found on some embedded hardware such as UC-7112-LX.
 + If you have a controller with this interface, say Y here.
 +
  config MMC_OMAP
 tristate TI OMAP Multimedia Card Interface support
 depends on ARCH_OMAP
 diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile
 index 0c8aa5e..dfa6ecb 100644
 --- a/drivers/mmc/host/Makefile
 +++ b/drivers/mmc/host/Makefile
 @@ -50,6 +50,7 @@ obj-$(CONFIG_MMC_JZ4740)  += jz4740_mmc.o
  obj-$(CONFIG_MMC_VUB300)   += vub300.o
  obj-$(CONFIG_MMC_USHC) += ushc.o
  obj-$(CONFIG_MMC_WMT)  += wmt-sdmmc.o
 +obj-$(CONFIG_MMC_MOXART)   += moxart-mmc.o

  obj-$(CONFIG_MMC_REALTEK_PCI)  += rtsx_pci_sdmmc.o

 diff --git a/drivers/mmc/host/moxart-mmc.c b/drivers/mmc/host/moxart-mmc.c
 new file mode 100644
 index 000..74924a0
 --- /dev/null
 +++ b/drivers/mmc/host/moxart-mmc.c
 @@ -0,0 +1,730 @@
 +/*
 + * MOXA ART MMC host driver.
 + *
 + * Copyright (C) 2014 Jonas Jensen
 + *
 + * Jonas Jensen jonas.jen...@gmail.com
 + *
 + * Based on code from
 + * Moxa Technologies Co., Ltd. www.moxa.com
 + *
 + * This file is licensed under the terms of the GNU General Public
 + * License 

Re: [PATCH v8] mmc: moxart: Add MOXA ART SD/MMC driver

2014-04-23 Thread Arnd Bergmann
On Wednesday 09 April 2014, Jonas Jensen wrote:
> Add SD/MMC driver for MOXA ART SoCs.
> 
> The "MOXA ART MMC controller" is likely a faraday "ftsdc010",
> a controller with support in U-Boot:
> 
> http://git.denx.de/?p=u-boot.git;a=blob;f=drivers/mmc/ftsdc010_mci.c
> 
> Signed-off-by: Jonas Jensen 

Acked-by: Arnd Bergmann 
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v8] mmc: moxart: Add MOXA ART SD/MMC driver

2014-04-23 Thread Arnd Bergmann
On Wednesday 09 April 2014, Jonas Jensen wrote:
 Add SD/MMC driver for MOXA ART SoCs.
 
 The MOXA ART MMC controller is likely a faraday ftsdc010,
 a controller with support in U-Boot:
 
 http://git.denx.de/?p=u-boot.git;a=blob;f=drivers/mmc/ftsdc010_mci.c
 
 Signed-off-by: Jonas Jensen jonas.jen...@gmail.com

Acked-by: Arnd Bergmann a...@arndb.de
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH v8] mmc: moxart: Add MOXA ART SD/MMC driver

2014-04-09 Thread Jonas Jensen
Add SD/MMC driver for MOXA ART SoCs.

The "MOXA ART MMC controller" is likely a faraday "ftsdc010",
a controller with support in U-Boot:

http://git.denx.de/?p=u-boot.git;a=blob;f=drivers/mmc/ftsdc010_mci.c

Signed-off-by: Jonas Jensen 
---

Notes:
This has been cleaned up further, especially the return value fiasco in v7.

The "MOXA ART MMC controller" is likely a faraday "ftsdc010" (supported by 
U-Boot [1]).
Registers are the same albeit named slightly different.

I think this can support other "ftsdc010" SoCs with one reservation for
power control, which may need hardware specific changes.

Changes since v7:

1. merge code from U-Boot "ftsdc010" driver [1]

   Specifically how it implements status wait, clock divider, fifo width, 
bus width.

2. return value cleanup, MMC_ERR_TIMEOUT is no longer used or set at the 
top of every request

   i.e. the default (no error) return value (0) is respected.

   Error is only set on actual error, "MMC_ERR_NONE" is no longer used.

3. FIFO size is now read from register (and respected during PIO transfer)
4. supported bus width(s) is now read from register
5. !(of_dma_request_slave_channel()) return value check is wrong,
   IS_ERR() must be used.
6. clean up and remove unused defines / header includes
7. add "faraday,ftsdc010" compatible string (requested by Arnd)

[1] http://git.denx.de/?p=u-boot.git;a=blob;f=drivers/mmc/ftsdc010_mci.c

Applies to next-20140409

 .../devicetree/bindings/mmc/moxa,moxart-mmc.txt|  30 +
 drivers/mmc/host/Kconfig   |   9 +
 drivers/mmc/host/Makefile  |   1 +
 drivers/mmc/host/moxart-mmc.c  | 730 +
 4 files changed, 770 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/mmc/moxa,moxart-mmc.txt
 create mode 100644 drivers/mmc/host/moxart-mmc.c

diff --git a/Documentation/devicetree/bindings/mmc/moxa,moxart-mmc.txt 
b/Documentation/devicetree/bindings/mmc/moxa,moxart-mmc.txt
new file mode 100644
index 000..b638191
--- /dev/null
+++ b/Documentation/devicetree/bindings/mmc/moxa,moxart-mmc.txt
@@ -0,0 +1,30 @@
+MOXA ART MMC Host Controller Interface
+
+  Inherits from mmc binding[1].
+
+  [1] Documentation/devicetree/bindings/mmc/mmc.txt
+
+Required properties:
+
+- compatible : Must be "moxa,moxart-mmc" or "faraday,ftsdc010"
+- reg :Should contain registers location and length
+- interrupts : Should contain the interrupt number
+- clocks : Should contain phandle for the clock feeding the MMC controller
+
+Optional properties:
+
+- dmas :   Should contain two DMA channels, line request number must be 5 
for
+   both channels
+- dma-names :  Must be "tx", "rx"
+
+Example:
+
+   mmc: mmc@98e0 {
+   compatible = "moxa,moxart-mmc";
+   reg = <0x98e0 0x5C>;
+   interrupts = <5 0>;
+   clocks = <_apb>;
+   dmas =  < 5>,
+   < 5>;
+   dma-names = "tx", "rx";
+   };
diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
index 8aaf8c1..eb93b81 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -283,6 +283,15 @@ config MMC_SDHCI_BCM2835
 
  If unsure, say N.
 
+config MMC_MOXART
+   tristate "MOXART SD/MMC Host Controller support"
+   depends on ARCH_MOXART && MMC
+   help
+ This selects support for the MOXART SD/MMC Host Controller.
+ MOXA provides one multi-functional card reader which can
+ be found on some embedded hardware such as UC-7112-LX.
+ If you have a controller with this interface, say Y here.
+
 config MMC_OMAP
tristate "TI OMAP Multimedia Card Interface support"
depends on ARCH_OMAP
diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile
index 0c8aa5e..dfa6ecb 100644
--- a/drivers/mmc/host/Makefile
+++ b/drivers/mmc/host/Makefile
@@ -50,6 +50,7 @@ obj-$(CONFIG_MMC_JZ4740)  += jz4740_mmc.o
 obj-$(CONFIG_MMC_VUB300)   += vub300.o
 obj-$(CONFIG_MMC_USHC) += ushc.o
 obj-$(CONFIG_MMC_WMT)  += wmt-sdmmc.o
+obj-$(CONFIG_MMC_MOXART)   += moxart-mmc.o
 
 obj-$(CONFIG_MMC_REALTEK_PCI)  += rtsx_pci_sdmmc.o
 
diff --git a/drivers/mmc/host/moxart-mmc.c b/drivers/mmc/host/moxart-mmc.c
new file mode 100644
index 000..74924a0
--- /dev/null
+++ b/drivers/mmc/host/moxart-mmc.c
@@ -0,0 +1,730 @@
+/*
+ * MOXA ART MMC host driver.
+ *
+ * Copyright (C) 2014 Jonas Jensen
+ *
+ * Jonas Jensen 
+ *
+ * Based on code from
+ * Moxa Technologies Co., Ltd. 
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 

[PATCH v8] mmc: moxart: Add MOXA ART SD/MMC driver

2014-04-09 Thread Jonas Jensen
Add SD/MMC driver for MOXA ART SoCs.

The MOXA ART MMC controller is likely a faraday ftsdc010,
a controller with support in U-Boot:

http://git.denx.de/?p=u-boot.git;a=blob;f=drivers/mmc/ftsdc010_mci.c

Signed-off-by: Jonas Jensen jonas.jen...@gmail.com
---

Notes:
This has been cleaned up further, especially the return value fiasco in v7.

The MOXA ART MMC controller is likely a faraday ftsdc010 (supported by 
U-Boot [1]).
Registers are the same albeit named slightly different.

I think this can support other ftsdc010 SoCs with one reservation for
power control, which may need hardware specific changes.

Changes since v7:

1. merge code from U-Boot ftsdc010 driver [1]

   Specifically how it implements status wait, clock divider, fifo width, 
bus width.

2. return value cleanup, MMC_ERR_TIMEOUT is no longer used or set at the 
top of every request

   i.e. the default (no error) return value (0) is respected.

   Error is only set on actual error, MMC_ERR_NONE is no longer used.

3. FIFO size is now read from register (and respected during PIO transfer)
4. supported bus width(s) is now read from register
5. !(of_dma_request_slave_channel()) return value check is wrong,
   IS_ERR() must be used.
6. clean up and remove unused defines / header includes
7. add faraday,ftsdc010 compatible string (requested by Arnd)

[1] http://git.denx.de/?p=u-boot.git;a=blob;f=drivers/mmc/ftsdc010_mci.c

Applies to next-20140409

 .../devicetree/bindings/mmc/moxa,moxart-mmc.txt|  30 +
 drivers/mmc/host/Kconfig   |   9 +
 drivers/mmc/host/Makefile  |   1 +
 drivers/mmc/host/moxart-mmc.c  | 730 +
 4 files changed, 770 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/mmc/moxa,moxart-mmc.txt
 create mode 100644 drivers/mmc/host/moxart-mmc.c

diff --git a/Documentation/devicetree/bindings/mmc/moxa,moxart-mmc.txt 
b/Documentation/devicetree/bindings/mmc/moxa,moxart-mmc.txt
new file mode 100644
index 000..b638191
--- /dev/null
+++ b/Documentation/devicetree/bindings/mmc/moxa,moxart-mmc.txt
@@ -0,0 +1,30 @@
+MOXA ART MMC Host Controller Interface
+
+  Inherits from mmc binding[1].
+
+  [1] Documentation/devicetree/bindings/mmc/mmc.txt
+
+Required properties:
+
+- compatible : Must be moxa,moxart-mmc or faraday,ftsdc010
+- reg :Should contain registers location and length
+- interrupts : Should contain the interrupt number
+- clocks : Should contain phandle for the clock feeding the MMC controller
+
+Optional properties:
+
+- dmas :   Should contain two DMA channels, line request number must be 5 
for
+   both channels
+- dma-names :  Must be tx, rx
+
+Example:
+
+   mmc: mmc@98e0 {
+   compatible = moxa,moxart-mmc;
+   reg = 0x98e0 0x5C;
+   interrupts = 5 0;
+   clocks = clk_apb;
+   dmas =  dma 5,
+   dma 5;
+   dma-names = tx, rx;
+   };
diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
index 8aaf8c1..eb93b81 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -283,6 +283,15 @@ config MMC_SDHCI_BCM2835
 
  If unsure, say N.
 
+config MMC_MOXART
+   tristate MOXART SD/MMC Host Controller support
+   depends on ARCH_MOXART  MMC
+   help
+ This selects support for the MOXART SD/MMC Host Controller.
+ MOXA provides one multi-functional card reader which can
+ be found on some embedded hardware such as UC-7112-LX.
+ If you have a controller with this interface, say Y here.
+
 config MMC_OMAP
tristate TI OMAP Multimedia Card Interface support
depends on ARCH_OMAP
diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile
index 0c8aa5e..dfa6ecb 100644
--- a/drivers/mmc/host/Makefile
+++ b/drivers/mmc/host/Makefile
@@ -50,6 +50,7 @@ obj-$(CONFIG_MMC_JZ4740)  += jz4740_mmc.o
 obj-$(CONFIG_MMC_VUB300)   += vub300.o
 obj-$(CONFIG_MMC_USHC) += ushc.o
 obj-$(CONFIG_MMC_WMT)  += wmt-sdmmc.o
+obj-$(CONFIG_MMC_MOXART)   += moxart-mmc.o
 
 obj-$(CONFIG_MMC_REALTEK_PCI)  += rtsx_pci_sdmmc.o
 
diff --git a/drivers/mmc/host/moxart-mmc.c b/drivers/mmc/host/moxart-mmc.c
new file mode 100644
index 000..74924a0
--- /dev/null
+++ b/drivers/mmc/host/moxart-mmc.c
@@ -0,0 +1,730 @@
+/*
+ * MOXA ART MMC host driver.
+ *
+ * Copyright (C) 2014 Jonas Jensen
+ *
+ * Jonas Jensen jonas.jen...@gmail.com
+ *
+ * Based on code from
+ * Moxa Technologies Co., Ltd. www.moxa.com
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed as is without any
+ * warranty of any kind, whether express or implied.
+ */
+
+#include linux/version.h
+#include linux/module.h
+#include linux/init.h