diff options
author | Esben Haabendal <eha@deif.com> | 2015-01-06 08:07:34 -0500 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2015-01-06 12:03:34 -0500 |
commit | 38455d7ac2e383d747ddee0189c7d8c078b29b09 (patch) | |
tree | 3181cc88705caa1f3d5ce2de3db4506cf6a69534 | |
parent | 1004b9f146940d280a0f62ca33d241469022bce7 (diff) |
spi: fsl-(e)spi: Support compile as module
Signed-off-by: Esben Haabendal <eha@deif.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r-- | drivers/spi/Kconfig | 4 | ||||
-rw-r--r-- | drivers/spi/spi-fsl-cpm.c | 9 | ||||
-rw-r--r-- | drivers/spi/spi-fsl-lib.c | 14 | ||||
-rw-r--r-- | drivers/spi/spi-fsl-lib.h | 4 |
4 files changed, 25 insertions, 6 deletions
diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig index 99829985c1a1..468d13ce510b 100644 --- a/drivers/spi/Kconfig +++ b/drivers/spi/Kconfig | |||
@@ -279,7 +279,7 @@ config SPI_FSL_CPM | |||
279 | depends on FSL_SOC | 279 | depends on FSL_SOC |
280 | 280 | ||
281 | config SPI_FSL_SPI | 281 | config SPI_FSL_SPI |
282 | bool "Freescale SPI controller and Aeroflex Gaisler GRLIB SPI controller" | 282 | tristate "Freescale SPI controller and Aeroflex Gaisler GRLIB SPI controller" |
283 | depends on OF | 283 | depends on OF |
284 | select SPI_FSL_LIB | 284 | select SPI_FSL_LIB |
285 | select SPI_FSL_CPM if FSL_SOC | 285 | select SPI_FSL_CPM if FSL_SOC |
@@ -300,7 +300,7 @@ config SPI_FSL_DSPI | |||
300 | mode. VF610 platform uses the controller. | 300 | mode. VF610 platform uses the controller. |
301 | 301 | ||
302 | config SPI_FSL_ESPI | 302 | config SPI_FSL_ESPI |
303 | bool "Freescale eSPI controller" | 303 | tristate "Freescale eSPI controller" |
304 | depends on FSL_SOC | 304 | depends on FSL_SOC |
305 | select SPI_FSL_LIB | 305 | select SPI_FSL_LIB |
306 | help | 306 | help |
diff --git a/drivers/spi/spi-fsl-cpm.c b/drivers/spi/spi-fsl-cpm.c index e85ab1cb17a2..9c46a3058743 100644 --- a/drivers/spi/spi-fsl-cpm.c +++ b/drivers/spi/spi-fsl-cpm.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/dma-mapping.h> | 20 | #include <linux/dma-mapping.h> |
21 | #include <linux/fsl_devices.h> | 21 | #include <linux/fsl_devices.h> |
22 | #include <linux/kernel.h> | 22 | #include <linux/kernel.h> |
23 | #include <linux/module.h> | ||
23 | #include <linux/of_address.h> | 24 | #include <linux/of_address.h> |
24 | #include <linux/spi/spi.h> | 25 | #include <linux/spi/spi.h> |
25 | #include <linux/types.h> | 26 | #include <linux/types.h> |
@@ -68,6 +69,7 @@ void fsl_spi_cpm_reinit_txrx(struct mpc8xxx_spi *mspi) | |||
68 | } | 69 | } |
69 | } | 70 | } |
70 | } | 71 | } |
72 | EXPORT_SYMBOL_GPL(fsl_spi_cpm_reinit_txrx); | ||
71 | 73 | ||
72 | static void fsl_spi_cpm_bufs_start(struct mpc8xxx_spi *mspi) | 74 | static void fsl_spi_cpm_bufs_start(struct mpc8xxx_spi *mspi) |
73 | { | 75 | { |
@@ -162,6 +164,7 @@ err_rx_dma: | |||
162 | dma_unmap_single(dev, mspi->tx_dma, t->len, DMA_TO_DEVICE); | 164 | dma_unmap_single(dev, mspi->tx_dma, t->len, DMA_TO_DEVICE); |
163 | return -ENOMEM; | 165 | return -ENOMEM; |
164 | } | 166 | } |
167 | EXPORT_SYMBOL_GPL(fsl_spi_cpm_bufs); | ||
165 | 168 | ||
166 | void fsl_spi_cpm_bufs_complete(struct mpc8xxx_spi *mspi) | 169 | void fsl_spi_cpm_bufs_complete(struct mpc8xxx_spi *mspi) |
167 | { | 170 | { |
@@ -174,6 +177,7 @@ void fsl_spi_cpm_bufs_complete(struct mpc8xxx_spi *mspi) | |||
174 | dma_unmap_single(dev, mspi->rx_dma, t->len, DMA_FROM_DEVICE); | 177 | dma_unmap_single(dev, mspi->rx_dma, t->len, DMA_FROM_DEVICE); |
175 | mspi->xfer_in_progress = NULL; | 178 | mspi->xfer_in_progress = NULL; |
176 | } | 179 | } |
180 | EXPORT_SYMBOL_GPL(fsl_spi_cpm_bufs_complete); | ||
177 | 181 | ||
178 | void fsl_spi_cpm_irq(struct mpc8xxx_spi *mspi, u32 events) | 182 | void fsl_spi_cpm_irq(struct mpc8xxx_spi *mspi, u32 events) |
179 | { | 183 | { |
@@ -198,6 +202,7 @@ void fsl_spi_cpm_irq(struct mpc8xxx_spi *mspi, u32 events) | |||
198 | else | 202 | else |
199 | complete(&mspi->done); | 203 | complete(&mspi->done); |
200 | } | 204 | } |
205 | EXPORT_SYMBOL_GPL(fsl_spi_cpm_irq); | ||
201 | 206 | ||
202 | static void *fsl_spi_alloc_dummy_rx(void) | 207 | static void *fsl_spi_alloc_dummy_rx(void) |
203 | { | 208 | { |
@@ -375,6 +380,7 @@ err_pram: | |||
375 | fsl_spi_free_dummy_rx(); | 380 | fsl_spi_free_dummy_rx(); |
376 | return -ENOMEM; | 381 | return -ENOMEM; |
377 | } | 382 | } |
383 | EXPORT_SYMBOL_GPL(fsl_spi_cpm_init); | ||
378 | 384 | ||
379 | void fsl_spi_cpm_free(struct mpc8xxx_spi *mspi) | 385 | void fsl_spi_cpm_free(struct mpc8xxx_spi *mspi) |
380 | { | 386 | { |
@@ -389,3 +395,6 @@ void fsl_spi_cpm_free(struct mpc8xxx_spi *mspi) | |||
389 | cpm_muram_free(cpm_muram_offset(mspi->pram)); | 395 | cpm_muram_free(cpm_muram_offset(mspi->pram)); |
390 | fsl_spi_free_dummy_rx(); | 396 | fsl_spi_free_dummy_rx(); |
391 | } | 397 | } |
398 | EXPORT_SYMBOL_GPL(fsl_spi_cpm_free); | ||
399 | |||
400 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/spi/spi-fsl-lib.c b/drivers/spi/spi-fsl-lib.c index 9d3f9e097861..cb35d2f0d0e6 100644 --- a/drivers/spi/spi-fsl-lib.c +++ b/drivers/spi/spi-fsl-lib.c | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <linux/interrupt.h> | 21 | #include <linux/interrupt.h> |
22 | #include <linux/kernel.h> | 22 | #include <linux/kernel.h> |
23 | #include <linux/mm.h> | 23 | #include <linux/mm.h> |
24 | #include <linux/module.h> | ||
24 | #include <linux/of_platform.h> | 25 | #include <linux/of_platform.h> |
25 | #include <linux/spi/spi.h> | 26 | #include <linux/spi/spi.h> |
26 | #ifdef CONFIG_FSL_SOC | 27 | #ifdef CONFIG_FSL_SOC |
@@ -35,7 +36,8 @@ void mpc8xxx_spi_rx_buf_##type(u32 data, struct mpc8xxx_spi *mpc8xxx_spi) \ | |||
35 | type *rx = mpc8xxx_spi->rx; \ | 36 | type *rx = mpc8xxx_spi->rx; \ |
36 | *rx++ = (type)(data >> mpc8xxx_spi->rx_shift); \ | 37 | *rx++ = (type)(data >> mpc8xxx_spi->rx_shift); \ |
37 | mpc8xxx_spi->rx = rx; \ | 38 | mpc8xxx_spi->rx = rx; \ |
38 | } | 39 | } \ |
40 | EXPORT_SYMBOL_GPL(mpc8xxx_spi_rx_buf_##type); | ||
39 | 41 | ||
40 | #define MPC8XXX_SPI_TX_BUF(type) \ | 42 | #define MPC8XXX_SPI_TX_BUF(type) \ |
41 | u32 mpc8xxx_spi_tx_buf_##type(struct mpc8xxx_spi *mpc8xxx_spi) \ | 43 | u32 mpc8xxx_spi_tx_buf_##type(struct mpc8xxx_spi *mpc8xxx_spi) \ |
@@ -47,7 +49,8 @@ u32 mpc8xxx_spi_tx_buf_##type(struct mpc8xxx_spi *mpc8xxx_spi) \ | |||
47 | data = *tx++ << mpc8xxx_spi->tx_shift; \ | 49 | data = *tx++ << mpc8xxx_spi->tx_shift; \ |
48 | mpc8xxx_spi->tx = tx; \ | 50 | mpc8xxx_spi->tx = tx; \ |
49 | return data; \ | 51 | return data; \ |
50 | } | 52 | } \ |
53 | EXPORT_SYMBOL_GPL(mpc8xxx_spi_tx_buf_##type); | ||
51 | 54 | ||
52 | MPC8XXX_SPI_RX_BUF(u8) | 55 | MPC8XXX_SPI_RX_BUF(u8) |
53 | MPC8XXX_SPI_RX_BUF(u16) | 56 | MPC8XXX_SPI_RX_BUF(u16) |
@@ -60,6 +63,7 @@ struct mpc8xxx_spi_probe_info *to_of_pinfo(struct fsl_spi_platform_data *pdata) | |||
60 | { | 63 | { |
61 | return container_of(pdata, struct mpc8xxx_spi_probe_info, pdata); | 64 | return container_of(pdata, struct mpc8xxx_spi_probe_info, pdata); |
62 | } | 65 | } |
66 | EXPORT_SYMBOL_GPL(to_of_pinfo); | ||
63 | 67 | ||
64 | const char *mpc8xxx_spi_strmode(unsigned int flags) | 68 | const char *mpc8xxx_spi_strmode(unsigned int flags) |
65 | { | 69 | { |
@@ -75,6 +79,7 @@ const char *mpc8xxx_spi_strmode(unsigned int flags) | |||
75 | } | 79 | } |
76 | return "CPU"; | 80 | return "CPU"; |
77 | } | 81 | } |
82 | EXPORT_SYMBOL_GPL(mpc8xxx_spi_strmode); | ||
78 | 83 | ||
79 | void mpc8xxx_spi_probe(struct device *dev, struct resource *mem, | 84 | void mpc8xxx_spi_probe(struct device *dev, struct resource *mem, |
80 | unsigned int irq) | 85 | unsigned int irq) |
@@ -107,6 +112,7 @@ void mpc8xxx_spi_probe(struct device *dev, struct resource *mem, | |||
107 | 112 | ||
108 | init_completion(&mpc8xxx_spi->done); | 113 | init_completion(&mpc8xxx_spi->done); |
109 | } | 114 | } |
115 | EXPORT_SYMBOL_GPL(mpc8xxx_spi_probe); | ||
110 | 116 | ||
111 | int mpc8xxx_spi_remove(struct device *dev) | 117 | int mpc8xxx_spi_remove(struct device *dev) |
112 | { | 118 | { |
@@ -125,6 +131,7 @@ int mpc8xxx_spi_remove(struct device *dev) | |||
125 | 131 | ||
126 | return 0; | 132 | return 0; |
127 | } | 133 | } |
134 | EXPORT_SYMBOL_GPL(mpc8xxx_spi_remove); | ||
128 | 135 | ||
129 | int of_mpc8xxx_spi_probe(struct platform_device *ofdev) | 136 | int of_mpc8xxx_spi_probe(struct platform_device *ofdev) |
130 | { | 137 | { |
@@ -171,3 +178,6 @@ int of_mpc8xxx_spi_probe(struct platform_device *ofdev) | |||
171 | 178 | ||
172 | return 0; | 179 | return 0; |
173 | } | 180 | } |
181 | EXPORT_SYMBOL_GPL(of_mpc8xxx_spi_probe); | ||
182 | |||
183 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/spi/spi-fsl-lib.h b/drivers/spi/spi-fsl-lib.h index b4ed04e8862f..1326a392adca 100644 --- a/drivers/spi/spi-fsl-lib.h +++ b/drivers/spi/spi-fsl-lib.h | |||
@@ -28,7 +28,7 @@ struct mpc8xxx_spi { | |||
28 | /* rx & tx bufs from the spi_transfer */ | 28 | /* rx & tx bufs from the spi_transfer */ |
29 | const void *tx; | 29 | const void *tx; |
30 | void *rx; | 30 | void *rx; |
31 | #ifdef CONFIG_SPI_FSL_ESPI | 31 | #if IS_ENABLED(CONFIG_SPI_FSL_ESPI) |
32 | int len; | 32 | int len; |
33 | #endif | 33 | #endif |
34 | 34 | ||
@@ -68,7 +68,7 @@ struct mpc8xxx_spi { | |||
68 | 68 | ||
69 | unsigned int flags; | 69 | unsigned int flags; |
70 | 70 | ||
71 | #ifdef CONFIG_SPI_FSL_SPI | 71 | #if IS_ENABLED(CONFIG_SPI_FSL_SPI) |
72 | int type; | 72 | int type; |
73 | int native_chipselects; | 73 | int native_chipselects; |
74 | u8 max_bits_per_word; | 74 | u8 max_bits_per_word; |