camsys_drv : v0.9.0
[firefly-linux-kernel-4.4.55.git] / drivers / media / video / icatch7002 / icatch_spi_host.c
1 /*icatch  host mode ,spi device \r
2  *\r
3  *\r
4  * This program is distributed in the hope that it will be useful,\r
5  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
6  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
7  * GNU General Public License for more details.\r
8  */\r
9 \r
10 #include <linux/dma-mapping.h>\r
11 #include <linux/interrupt.h>\r
12 #include <linux/highmem.h>\r
13 #include <linux/delay.h>\r
14 #include <linux/slab.h>\r
15 #include <linux/platform_device.h>\r
16 #include <linux/clk.h>\r
17 #include <linux/cpufreq.h>\r
18 #include <mach/gpio.h>\r
19 #include <mach/irqs.h>\r
20 #include <linux/miscdevice.h>\r
21 #include <asm/dma.h>\r
22 #include <linux/preempt.h>\r
23 #include <mach/board.h>\r
24 #include "icatch_spi_host.h"\r
25 #include <linux/miscdevice.h>\r
26 struct spi_device* g_icatch_spi_dev = NULL;\r
27 \r
28 static int __devinit spi_icatch_probe(struct spi_device *spi)\r
29 {       \r
30         struct spi_test_data *spi_test_data;\r
31         int ret = 0;\r
32         \r
33         spi->bits_per_word = 8;\r
34         spi->mode = SPI_MODE_0;\r
35         ret = spi_setup(spi);\r
36         if (ret < 0){\r
37                 dev_err(spi, "ERR: fail to setup spi\n");\r
38                 return -1;\r
39         }       \r
40 \r
41         g_icatch_spi_dev = spi;\r
42 \r
43         printk("%s:bus_num=%d,ok\n",__func__,spi->master->bus_num);\r
44 \r
45         return ret;\r
46 \r
47 }\r
48 \r
49 \r
50 static struct spi_driver spi_icatch_driver = {\r
51         .driver = {\r
52                 .name           = "spi_icatch",\r
53                 .bus            = &spi_bus_type,\r
54                 .owner          = THIS_MODULE,\r
55         },\r
56 \r
57         .probe          = spi_icatch_probe,\r
58 };\r
59 \r
60 static struct miscdevice spi_test_icatch = {\r
61         .minor = MISC_DYNAMIC_MINOR,\r
62         .name = "spi_misc_icatch",\r
63 };\r
64 \r
65 static int __init spi_icatch_init(void)\r
66 {       \r
67         spi_register_board_info(board_spi_icatch_devices, ARRAY_SIZE(board_spi_icatch_devices));\r
68         \r
69         misc_register(&spi_test_icatch);\r
70         return spi_register_driver(&spi_icatch_driver);\r
71 }\r
72 \r
73 static void __exit spi_icatch_exit(void)\r
74 {\r
75         \r
76         misc_deregister(&spi_test_icatch);\r
77         return spi_unregister_driver(&spi_icatch_driver);\r
78 }\r
79 module_init(spi_icatch_init);\r
80 module_exit(spi_icatch_exit);\r
81 \r
82 \r