1*af873fceSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
24da2a54aSSolomon Peachy /*
34da2a54aSSolomon Peachy  * Copyright (C) ST-Ericsson SA 2011
44da2a54aSSolomon Peachy  *
54da2a54aSSolomon Peachy  * Author: Dmitry Tarnyagin <[email protected]>
64da2a54aSSolomon Peachy  */
74da2a54aSSolomon Peachy 
84da2a54aSSolomon Peachy #ifndef CW1200_PLAT_H_INCLUDED
94da2a54aSSolomon Peachy #define CW1200_PLAT_H_INCLUDED
104da2a54aSSolomon Peachy 
114da2a54aSSolomon Peachy struct cw1200_platform_data_spi {
124da2a54aSSolomon Peachy 	u8 spi_bits_per_word;           /* REQUIRED */
134da2a54aSSolomon Peachy 	u16 ref_clk;                    /* REQUIRED (in KHz) */
144da2a54aSSolomon Peachy 
154da2a54aSSolomon Peachy 	/* All others are optional */
164da2a54aSSolomon Peachy 	bool have_5ghz;
174da2a54aSSolomon Peachy 	int (*power_ctrl)(const struct cw1200_platform_data_spi *pdata,
184da2a54aSSolomon Peachy 			  bool enable); /* Control 3v3 / 1v8 supply */
194da2a54aSSolomon Peachy 	int (*clk_ctrl)(const struct cw1200_platform_data_spi *pdata,
204da2a54aSSolomon Peachy 			bool enable); /* Control CLK32K */
214da2a54aSSolomon Peachy 	const u8 *macaddr;  /* if NULL, use cw1200_mac_template module parameter */
224da2a54aSSolomon Peachy 	const char *sdd_file;  /* if NULL, will use default for detected hw type */
234da2a54aSSolomon Peachy };
244da2a54aSSolomon Peachy 
254da2a54aSSolomon Peachy struct cw1200_platform_data_sdio {
264da2a54aSSolomon Peachy 	u16 ref_clk;                    /* REQUIRED (in KHz) */
274da2a54aSSolomon Peachy 
284da2a54aSSolomon Peachy 	/* All others are optional */
294da2a54aSSolomon Peachy 	bool have_5ghz;
304da2a54aSSolomon Peachy 	bool no_nptb;       /* SDIO hardware does not support non-power-of-2-blocksizes */
314da2a54aSSolomon Peachy 	int irq;            /* IRQ line or 0 to use SDIO IRQ */
324da2a54aSSolomon Peachy 	int (*power_ctrl)(const struct cw1200_platform_data_sdio *pdata,
334da2a54aSSolomon Peachy 			  bool enable); /* Control 3v3 / 1v8 supply */
344da2a54aSSolomon Peachy 	int (*clk_ctrl)(const struct cw1200_platform_data_sdio *pdata,
354da2a54aSSolomon Peachy 			bool enable); /* Control CLK32K */
364da2a54aSSolomon Peachy 	const u8 *macaddr;  /* if NULL, use cw1200_mac_template module parameter */
374da2a54aSSolomon Peachy 	const char *sdd_file;  /* if NULL, will use default for detected hw type */
384da2a54aSSolomon Peachy };
394da2a54aSSolomon Peachy 
404da2a54aSSolomon Peachy 
414da2a54aSSolomon Peachy /* An example of SPI support in your board setup file:
424da2a54aSSolomon Peachy 
434da2a54aSSolomon Peachy    static struct cw1200_platform_data_spi cw1200_platform_data = {
444da2a54aSSolomon Peachy        .ref_clk = 38400,
454da2a54aSSolomon Peachy        .spi_bits_per_word = 16,
464da2a54aSSolomon Peachy        .reset = GPIO_RF_RESET,
474da2a54aSSolomon Peachy        .powerup = GPIO_RF_POWERUP,
484da2a54aSSolomon Peachy        .macaddr = wifi_mac_addr,
494da2a54aSSolomon Peachy        .sdd_file = "sdd_sagrad_1091_1098.bin",
504da2a54aSSolomon Peachy   };
514da2a54aSSolomon Peachy   static struct spi_board_info myboard_spi_devices[] __initdata = {
524da2a54aSSolomon Peachy        {
534da2a54aSSolomon Peachy                .modalias = "cw1200_wlan_spi",
544da2a54aSSolomon Peachy                .max_speed_hz = 52000000,
554da2a54aSSolomon Peachy                .bus_num = 0,
564da2a54aSSolomon Peachy                .irq = WIFI_IRQ,
574da2a54aSSolomon Peachy                .platform_data = &cw1200_platform_data,
584da2a54aSSolomon Peachy                .chip_select = 0,
594da2a54aSSolomon Peachy        },
604da2a54aSSolomon Peachy   };
614da2a54aSSolomon Peachy 
624da2a54aSSolomon Peachy  */
634da2a54aSSolomon Peachy 
644da2a54aSSolomon Peachy /* An example of SDIO support in your board setup file:
654da2a54aSSolomon Peachy 
664da2a54aSSolomon Peachy   static struct cw1200_platform_data_sdio my_cw1200_platform_data = {
674da2a54aSSolomon Peachy 	.ref_clk = 38400,
684da2a54aSSolomon Peachy 	.have_5ghz = false,
694da2a54aSSolomon Peachy 	.sdd_file = "sdd_myplatform.bin",
704da2a54aSSolomon Peachy   };
714da2a54aSSolomon Peachy   cw1200_sdio_set_platform_data(&my_cw1200_platform_data);
724da2a54aSSolomon Peachy 
734da2a54aSSolomon Peachy  */
744da2a54aSSolomon Peachy 
754da2a54aSSolomon Peachy void __init cw1200_sdio_set_platform_data(struct cw1200_platform_data_sdio *pdata);
764da2a54aSSolomon Peachy 
774da2a54aSSolomon Peachy #endif /* CW1200_PLAT_H_INCLUDED */
78