~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/arm/mach-pxa/icontrol.c

Version: ~ [ linux-5.1-rc5 ] ~ [ linux-5.0.7 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.34 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.111 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.168 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.178 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.138 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.65 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ linux-3.10.108 ] ~ [ linux-3.9.11 ] ~ [ linux-3.8.13 ] ~ [ linux-3.7.10 ] ~ [ linux-3.6.11 ] ~ [ linux-3.5.7 ] ~ [ linux-3.4.113 ] ~ [ linux-3.3.8 ] ~ [ linux-3.2.102 ] ~ [ linux-3.1.10 ] ~ [ linux-3.0.101 ] ~ [ linux-2.6.39.4 ] ~ [ linux-2.6.38.8 ] ~ [ linux-2.6.37.6 ] ~ [ linux-2.6.36.4 ] ~ [ linux-2.6.35.14 ] ~ [ linux-2.6.34.15 ] ~ [ linux-2.6.33.20 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  * linux/arch/arm/mach-pxa/icontrol.c
  3  *
  4  * Support for the iControl and SafeTcam platforms from TMT Services
  5  * using the Embedian MXM-8x10 Computer on Module
  6  *
  7  * Copyright (C) 2009 TMT Services & Supplies (Pty) Ltd.
  8  *
  9  * 2010-01-21 Hennie van der Merve <hvdmerwe@tmtservies.co.za>
 10  *
 11  * This program is free software; you can redistribute it and/or modify
 12  * it under the terms of the GNU General Public License version 2 as
 13  * published by the Free Software Foundation.
 14  */
 15 
 16 #include <linux/irq.h>
 17 #include <linux/platform_device.h>
 18 #include <linux/gpio.h>
 19 
 20 #include <asm/mach-types.h>
 21 #include <asm/mach/arch.h>
 22 
 23 #include "pxa320.h"
 24 #include "mxm8x10.h"
 25 
 26 #include <linux/spi/spi.h>
 27 #include <linux/spi/pxa2xx_spi.h>
 28 #include <linux/can/platform/mcp251x.h>
 29 #include <linux/regulator/machine.h>
 30 
 31 #include "generic.h"
 32 
 33 #define ICONTROL_MCP251x_nCS1   (15)
 34 #define ICONTROL_MCP251x_nCS2   (16)
 35 #define ICONTROL_MCP251x_nCS3   (17)
 36 #define ICONTROL_MCP251x_nCS4   (24)
 37 
 38 #define ICONTROL_MCP251x_nIRQ1  (74)
 39 #define ICONTROL_MCP251x_nIRQ2  (75)
 40 #define ICONTROL_MCP251x_nIRQ3  (76)
 41 #define ICONTROL_MCP251x_nIRQ4  (77)
 42 
 43 static struct pxa2xx_spi_chip mcp251x_chip_info1 = {
 44         .tx_threshold   = 8,
 45         .rx_threshold   = 128,
 46         .dma_burst_size = 8,
 47         .timeout        = 235,
 48         .gpio_cs        = ICONTROL_MCP251x_nCS1
 49 };
 50 
 51 static struct pxa2xx_spi_chip mcp251x_chip_info2 = {
 52         .tx_threshold   = 8,
 53         .rx_threshold   = 128,
 54         .dma_burst_size = 8,
 55         .timeout        = 235,
 56         .gpio_cs        = ICONTROL_MCP251x_nCS2
 57 };
 58 
 59 static struct pxa2xx_spi_chip mcp251x_chip_info3 = {
 60         .tx_threshold   = 8,
 61         .rx_threshold   = 128,
 62         .dma_burst_size = 8,
 63         .timeout        = 235,
 64         .gpio_cs        = ICONTROL_MCP251x_nCS3
 65 };
 66 
 67 static struct pxa2xx_spi_chip mcp251x_chip_info4 = {
 68         .tx_threshold   = 8,
 69         .rx_threshold   = 128,
 70         .dma_burst_size = 8,
 71         .timeout        = 235,
 72         .gpio_cs        = ICONTROL_MCP251x_nCS4
 73 };
 74 
 75 static struct mcp251x_platform_data mcp251x_info = {
 76         .oscillator_frequency = 16E6,
 77 };
 78 
 79 static struct spi_board_info mcp251x_board_info[] = {
 80         {
 81                 .modalias        = "mcp2515",
 82                 .max_speed_hz    = 6500000,
 83                 .bus_num         = 3,
 84                 .chip_select     = 0,
 85                 .platform_data   = &mcp251x_info,
 86                 .controller_data = &mcp251x_chip_info1,
 87                 .irq             = PXA_GPIO_TO_IRQ(ICONTROL_MCP251x_nIRQ1)
 88         },
 89         {
 90                 .modalias        = "mcp2515",
 91                 .max_speed_hz    = 6500000,
 92                 .bus_num         = 3,
 93                 .chip_select     = 1,
 94                 .platform_data   = &mcp251x_info,
 95                 .controller_data = &mcp251x_chip_info2,
 96                 .irq             = PXA_GPIO_TO_IRQ(ICONTROL_MCP251x_nIRQ2)
 97         },
 98         {
 99                 .modalias        = "mcp2515",
100                 .max_speed_hz    = 6500000,
101                 .bus_num         = 4,
102                 .chip_select     = 0,
103                 .platform_data   = &mcp251x_info,
104                 .controller_data = &mcp251x_chip_info3,
105                 .irq             = PXA_GPIO_TO_IRQ(ICONTROL_MCP251x_nIRQ3)
106         },
107         {
108                 .modalias        = "mcp2515",
109                 .max_speed_hz    = 6500000,
110                 .bus_num         = 4,
111                 .chip_select     = 1,
112                 .platform_data   = &mcp251x_info,
113                 .controller_data = &mcp251x_chip_info4,
114                 .irq             = PXA_GPIO_TO_IRQ(ICONTROL_MCP251x_nIRQ4)
115         }
116 };
117 
118 static struct pxa2xx_spi_controller pxa_ssp3_spi_master_info = {
119         .num_chipselect = 2,
120         .enable_dma     = 1
121 };
122 
123 static struct pxa2xx_spi_controller pxa_ssp4_spi_master_info = {
124         .num_chipselect = 2,
125         .enable_dma     = 1
126 };
127 
128 struct platform_device pxa_spi_ssp3 = {
129         .name          = "pxa2xx-spi",
130         .id            = 3,
131         .dev           = {
132                 .platform_data = &pxa_ssp3_spi_master_info,
133         }
134 };
135 
136 struct platform_device pxa_spi_ssp4 = {
137         .name          = "pxa2xx-spi",
138         .id            = 4,
139         .dev           = {
140                 .platform_data = &pxa_ssp4_spi_master_info,
141         }
142 };
143 
144 static struct platform_device *icontrol_spi_devices[] __initdata = {
145         &pxa_spi_ssp3,
146         &pxa_spi_ssp4,
147 };
148 
149 static mfp_cfg_t mfp_can_cfg[] __initdata = {
150         /* CAN CS lines */
151         GPIO15_GPIO,
152         GPIO16_GPIO,
153         GPIO17_GPIO,
154         GPIO24_GPIO,
155 
156         /* SPI (SSP3) lines */
157         GPIO89_SSP3_SCLK,
158         GPIO91_SSP3_TXD,
159         GPIO92_SSP3_RXD,
160 
161         /* SPI (SSP4) lines */
162         GPIO93_SSP4_SCLK,
163         GPIO95_SSP4_TXD,
164         GPIO96_SSP4_RXD,
165 
166         /* CAN nIRQ lines */
167         GPIO74_GPIO | MFP_LPM_EDGE_RISE,
168         GPIO75_GPIO | MFP_LPM_EDGE_RISE,
169         GPIO76_GPIO | MFP_LPM_EDGE_RISE,
170         GPIO77_GPIO | MFP_LPM_EDGE_RISE
171 };
172 
173 static void __init icontrol_can_init(void)
174 {
175         pxa3xx_mfp_config(ARRAY_AND_SIZE(mfp_can_cfg));
176         platform_add_devices(ARRAY_AND_SIZE(icontrol_spi_devices));
177         spi_register_board_info(ARRAY_AND_SIZE(mcp251x_board_info));
178 }
179 
180 static void __init icontrol_init(void)
181 {
182         mxm_8x10_barebones_init();
183         mxm_8x10_usb_host_init();
184         mxm_8x10_mmc_init();
185 
186         icontrol_can_init();
187 
188         regulator_has_full_constraints();
189 }
190 
191 MACHINE_START(ICONTROL, "iControl/SafeTcam boards using Embedian MXM-8x10 CoM")
192         .atag_offset    = 0x100,
193         .map_io         = pxa3xx_map_io,
194         .nr_irqs        = PXA_NR_IRQS,
195         .init_irq       = pxa3xx_init_irq,
196         .handle_irq     = pxa3xx_handle_irq,
197         .init_time      = pxa_timer_init,
198         .init_machine   = icontrol_init,
199         .restart        = pxa_restart,
200 MACHINE_END
201 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp