Merge branches 'pm-cpufreq', 'pm-sleep' and 'pm-em'
[linux-2.6-microblaze.git] / include / linux / platform_data / spi-s3c64xx.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2
3 /*
4  * Copyright (C) 2009 Samsung Electronics Ltd.
5  *      Jaswinder Singh <jassi.brar@samsung.com>
6  */
7
8 #ifndef __SPI_S3C64XX_H
9 #define __SPI_S3C64XX_H
10
11 #include <linux/dmaengine.h>
12
13 struct platform_device;
14
15 /**
16  * struct s3c64xx_spi_csinfo - ChipSelect description
17  * @fb_delay: Slave specific feedback delay.
18  *            Refer to FB_CLK_SEL register definition in SPI chapter.
19  * @line: Custom 'identity' of the CS line.
20  *
21  * This is per SPI-Slave Chipselect information.
22  * Allocate and initialize one in machine init code and make the
23  * spi_board_info.controller_data point to it.
24  */
25 struct s3c64xx_spi_csinfo {
26         u8 fb_delay;
27         unsigned line;
28 };
29
30 /**
31  * struct s3c64xx_spi_info - SPI Controller defining structure
32  * @src_clk_nr: Clock source index for the CLK_CFG[SPI_CLKSEL] field.
33  * @num_cs: Number of CS this controller emulates.
34  * @cfg_gpio: Configure pins for this SPI controller.
35  */
36 struct s3c64xx_spi_info {
37         int src_clk_nr;
38         int num_cs;
39         bool no_cs;
40         int (*cfg_gpio)(void);
41 };
42
43 /**
44  * s3c64xx_spi_set_platdata - SPI Controller configure callback by the board
45  *                              initialization code.
46  * @cfg_gpio: Pointer to gpio setup function.
47  * @src_clk_nr: Clock the SPI controller is to use to generate SPI clocks.
48  * @num_cs: Number of elements in the 'cs' array.
49  *
50  * Call this from machine init code for each SPI Controller that
51  * has some chips attached to it.
52  */
53 extern void s3c64xx_spi0_set_platdata(int (*cfg_gpio)(void), int src_clk_nr,
54                                                 int num_cs);
55 extern void s3c64xx_spi1_set_platdata(int (*cfg_gpio)(void), int src_clk_nr,
56                                                 int num_cs);
57 extern void s3c64xx_spi2_set_platdata(int (*cfg_gpio)(void), int src_clk_nr,
58                                                 int num_cs);
59
60 /* defined by architecture to configure gpio */
61 extern int s3c64xx_spi0_cfg_gpio(void);
62 extern int s3c64xx_spi1_cfg_gpio(void);
63 extern int s3c64xx_spi2_cfg_gpio(void);
64
65 extern struct s3c64xx_spi_info s3c64xx_spi0_pdata;
66 extern struct s3c64xx_spi_info s3c64xx_spi1_pdata;
67 extern struct s3c64xx_spi_info s3c64xx_spi2_pdata;
68 #endif /*__SPI_S3C64XX_H */