xref: /OK3568_Linux_fs/kernel/arch/m68k/include/asm/mcfqspi.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Definitions for Freescale Coldfire QSPI module
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * Copyright 2010 Steven King <sfking@fdwdc.com>
6*4882a593Smuzhiyun */
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun #ifndef mcfqspi_h
9*4882a593Smuzhiyun #define mcfqspi_h
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun /**
12*4882a593Smuzhiyun  * struct mcfqspi_cs_control - chip select control for the coldfire qspi driver
13*4882a593Smuzhiyun  * @setup: setup the control; allocate gpio's, etc. May be NULL.
14*4882a593Smuzhiyun  * @teardown: finish with the control; free gpio's, etc. May be NULL.
15*4882a593Smuzhiyun  * @select: output the signals to select the device.  Can not be NULL.
16*4882a593Smuzhiyun  * @deselect: output the signals to deselect the device. Can not be NULL.
17*4882a593Smuzhiyun  *
18*4882a593Smuzhiyun  * The QSPI module has 4 hardware chip selects.  We don't use them.  Instead
19*4882a593Smuzhiyun  * platforms are required to supply a mcfqspi_cs_control as a part of the
20*4882a593Smuzhiyun  * platform data for each QSPI master controller.  Only the select and
21*4882a593Smuzhiyun  * deselect functions are required.
22*4882a593Smuzhiyun */
23*4882a593Smuzhiyun struct mcfqspi_cs_control {
24*4882a593Smuzhiyun 	int 	(*setup)(struct mcfqspi_cs_control *);
25*4882a593Smuzhiyun 	void	(*teardown)(struct mcfqspi_cs_control *);
26*4882a593Smuzhiyun 	void	(*select)(struct mcfqspi_cs_control *, u8, bool);
27*4882a593Smuzhiyun 	void	(*deselect)(struct mcfqspi_cs_control *, u8, bool);
28*4882a593Smuzhiyun };
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun /**
31*4882a593Smuzhiyun  * struct mcfqspi_platform_data - platform data for the coldfire qspi driver
32*4882a593Smuzhiyun  * @bus_num: board specific identifier for this qspi driver.
33*4882a593Smuzhiyun  * @num_chipselects: number of chip selects supported by this qspi driver.
34*4882a593Smuzhiyun  * @cs_control: platform dependent chip select control.
35*4882a593Smuzhiyun */
36*4882a593Smuzhiyun struct mcfqspi_platform_data {
37*4882a593Smuzhiyun 	s16	bus_num;
38*4882a593Smuzhiyun 	u16	num_chipselect;
39*4882a593Smuzhiyun 	struct mcfqspi_cs_control *cs_control;
40*4882a593Smuzhiyun };
41*4882a593Smuzhiyun 
42*4882a593Smuzhiyun #endif /* mcfqspi_h */
43