162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Definitions for Freescale Coldfire QSPI module 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright 2010 Steven King <sfking@fdwdc.com> 662306a36Sopenharmony_ci*/ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#ifndef mcfqspi_h 962306a36Sopenharmony_ci#define mcfqspi_h 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci/** 1262306a36Sopenharmony_ci * struct mcfqspi_cs_control - chip select control for the coldfire qspi driver 1362306a36Sopenharmony_ci * @setup: setup the control; allocate gpio's, etc. May be NULL. 1462306a36Sopenharmony_ci * @teardown: finish with the control; free gpio's, etc. May be NULL. 1562306a36Sopenharmony_ci * @select: output the signals to select the device. Can not be NULL. 1662306a36Sopenharmony_ci * @deselect: output the signals to deselect the device. Can not be NULL. 1762306a36Sopenharmony_ci * 1862306a36Sopenharmony_ci * The QSPI module has 4 hardware chip selects. We don't use them. Instead 1962306a36Sopenharmony_ci * platforms are required to supply a mcfqspi_cs_control as a part of the 2062306a36Sopenharmony_ci * platform data for each QSPI master controller. Only the select and 2162306a36Sopenharmony_ci * deselect functions are required. 2262306a36Sopenharmony_ci*/ 2362306a36Sopenharmony_cistruct mcfqspi_cs_control { 2462306a36Sopenharmony_ci int (*setup)(struct mcfqspi_cs_control *); 2562306a36Sopenharmony_ci void (*teardown)(struct mcfqspi_cs_control *); 2662306a36Sopenharmony_ci void (*select)(struct mcfqspi_cs_control *, u8, bool); 2762306a36Sopenharmony_ci void (*deselect)(struct mcfqspi_cs_control *, u8, bool); 2862306a36Sopenharmony_ci}; 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci/** 3162306a36Sopenharmony_ci * struct mcfqspi_platform_data - platform data for the coldfire qspi driver 3262306a36Sopenharmony_ci * @bus_num: board specific identifier for this qspi driver. 3362306a36Sopenharmony_ci * @num_chipselects: number of chip selects supported by this qspi driver. 3462306a36Sopenharmony_ci * @cs_control: platform dependent chip select control. 3562306a36Sopenharmony_ci*/ 3662306a36Sopenharmony_cistruct mcfqspi_platform_data { 3762306a36Sopenharmony_ci s16 bus_num; 3862306a36Sopenharmony_ci u16 num_chipselect; 3962306a36Sopenharmony_ci struct mcfqspi_cs_control *cs_control; 4062306a36Sopenharmony_ci}; 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci#endif /* mcfqspi_h */ 43