1/* 2 * Copyright (C) 2005 Stephen Street / StreetFire Sound Labs 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation; either version 2 of the License, or 7 * (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program; if not, write to the Free Software 16 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 */ 18 19#ifndef PXA2XX_SPI_H_ 20#define PXA2XX_SPI_H_ 21 22#define PXA2XX_CS_ASSERT (0x01) 23#define PXA2XX_CS_DEASSERT (0x02) 24 25#if defined(CONFIG_PXA25x) 26#define CLOCK_SPEED_HZ 3686400 27#define SSP1_SerClkDiv(x) (((CLOCK_SPEED_HZ/2/(x+1))<<8)&0x0000ff00) 28#define SSP2_SerClkDiv(x) (((CLOCK_SPEED_HZ/(x+1))<<8)&0x000fff00) 29#define SSP3_SerClkDiv(x) (((CLOCK_SPEED_HZ/(x+1))<<8)&0x000fff00) 30#elif defined(CONFIG_PXA27x) 31#define CLOCK_SPEED_HZ 13000000 32#define SSP1_SerClkDiv(x) (((CLOCK_SPEED_HZ/(x+1))<<8)&0x000fff00) 33#define SSP2_SerClkDiv(x) (((CLOCK_SPEED_HZ/(x+1))<<8)&0x000fff00) 34#define SSP3_SerClkDiv(x) (((CLOCK_SPEED_HZ/(x+1))<<8)&0x000fff00) 35#endif 36 37#define SSP1_VIRT ((void *)(io_p2v(__PREG(SSCR0_P(1))))) 38#define SSP2_VIRT ((void *)(io_p2v(__PREG(SSCR0_P(2))))) 39#define SSP3_VIRT ((void *)(io_p2v(__PREG(SSCR0_P(3))))) 40 41enum pxa_ssp_type { 42 SSP_UNDEFINED = 0, 43 PXA25x_SSP, /* pxa 210, 250, 255, 26x */ 44 PXA25x_NSSP, /* pxa 255, 26x (including ASSP) */ 45 PXA27x_SSP, 46}; 47 48/* device.platform_data for SSP controller devices */ 49struct pxa2xx_spi_master { 50 enum pxa_ssp_type ssp_type; 51 u32 clock_enable; 52 u16 num_chipselect; 53 u8 enable_dma; 54}; 55 56/* spi_board_info.controller_data for SPI slave devices, 57 * copied to spi_device.platform_data ... mostly for dma tuning 58 */ 59struct pxa2xx_spi_chip { 60 u8 tx_threshold; 61 u8 rx_threshold; 62 u8 dma_burst_size; 63 u32 timeout; 64 u8 enable_loopback; 65 void (*cs_control)(u32 command); 66}; 67 68#endif /*PXA2XX_SPI_H_*/ 69