summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/Kconfig1
-rw-r--r--drivers/Makefile1
-rw-r--r--drivers/spi/Kconfig14
-rw-r--r--drivers/spi/Makefile4
-rw-r--r--drivers/spi/imx_spi.c30
-rw-r--r--drivers/spi/mc13783.c27
-rw-r--r--drivers/spi/spi.c14
7 files changed, 91 insertions, 0 deletions
diff --git a/drivers/Kconfig b/drivers/Kconfig
index eeb582b8f9..afb2c4296a 100644
--- a/drivers/Kconfig
+++ b/drivers/Kconfig
@@ -2,6 +2,7 @@ menu "Drivers "
source "drivers/serial/Kconfig"
source "drivers/net/Kconfig"
+source "drivers/spi/Kconfig"
menu "flash drivers "
diff --git a/drivers/Makefile b/drivers/Makefile
index ecba682f48..586e637607 100644
--- a/drivers/Makefile
+++ b/drivers/Makefile
@@ -1,6 +1,7 @@
obj-y += net/
obj-y += serial/
obj-y += nand/
+obj-$(CONFIG_SPI) += spi/
obj-$(CONFIG_DRIVER_CFI_OLD) += cfi_flash.o
obj-$(CONFIG_DRIVER_CFI_NEW) += cfi_flash_new.o
obj-$(CONFIG_DRIVER_CFI_INTEL) += cfi_flash_intel.o
diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig
new file mode 100644
index 0000000000..1c48ceac70
--- /dev/null
+++ b/drivers/spi/Kconfig
@@ -0,0 +1,14 @@
+menu "SPI drivers "
+
+config SPI
+ bool
+ default y
+
+config DRIVER_SPI_IMX
+ bool "i.MX SPI Master driver"
+ depends on ARCH_IMX
+
+config DRIVER_SPI_MC13783
+ bool "MC13783 a.k.a. PMIC driver"
+
+endmenu
diff --git a/drivers/spi/Makefile b/drivers/spi/Makefile
new file mode 100644
index 0000000000..daef099004
--- /dev/null
+++ b/drivers/spi/Makefile
@@ -0,0 +1,4 @@
+obj-y += spi.o
+obj-$(CONFIG_DRIVER_SPI_IMX) += imx_spi.o
+
+obj-$(CONFIG_DRIVER_SPI_MC13783) += mc13783.o
diff --git a/drivers/spi/imx_spi.c b/drivers/spi/imx_spi.c
new file mode 100644
index 0000000000..641e635e29
--- /dev/null
+++ b/drivers/spi/imx_spi.c
@@ -0,0 +1,30 @@
+#include <common.h>
+#include <init.h>
+#include <driver.h>
+#include <spi/spi.h>
+#include <xfuncs.h>
+
+static int imx_spi_probe(struct device_d *dev)
+{
+ struct spi_master *master;
+
+ master = xmalloc(sizeof(struct spi_master));
+
+ spi_register_master(master);
+
+ return 0;
+}
+
+static struct driver_d imx_spi_driver = {
+ .name = "imx_spi",
+ .probe = imx_spi_probe,
+};
+
+static int imx_spi_init(void)
+{
+ register_driver(&imx_spi_driver);
+ return 0;
+}
+
+device_initcall(imx_spi_init);
+
diff --git a/drivers/spi/mc13783.c b/drivers/spi/mc13783.c
new file mode 100644
index 0000000000..6c467dfb93
--- /dev/null
+++ b/drivers/spi/mc13783.c
@@ -0,0 +1,27 @@
+#include <common.h>
+#include <init.h>
+#include <driver.h>
+#include <spi/spi.h>
+#include <xfuncs.h>
+
+static int pmic_probe(struct device_d *dev)
+{
+ printf("%s\n", __FUNCTION__);
+
+ return 0;
+}
+
+static struct driver_d pmic_driver = {
+ .name = "mc13783",
+ .probe = pmic_probe,
+};
+
+static int pmic_init(void)
+{
+ printf("%s\n", __FUNCTION__);
+ register_driver(&pmic_driver);
+ return 0;
+}
+
+device_initcall(pmic_init);
+
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
new file mode 100644
index 0000000000..765e34d5e2
--- /dev/null
+++ b/drivers/spi/spi.c
@@ -0,0 +1,14 @@
+#include <common.h>
+#include <spi/spi.h>
+
+int spi_register_boardinfo(struct spi_board_info *info, int num)
+{
+ printf("%s\n", __FUNCTION__);
+ return 0;
+}
+
+int spi_register_master(struct spi_master *master)
+{
+ printf("%s\n", __FUNCTION__);
+ return 0;
+}