Marc Singer | 2295196 | 2006-05-16 11:41:27 +0100 | [diff] [blame] | 1 | /* ssp.h |
| 2 | $Id$ |
| 3 | |
| 4 | written by Marc Singer |
| 5 | 6 Dec 2004 |
| 6 | |
| 7 | Copyright (C) 2004 Marc Singer |
| 8 | |
| 9 | ----------- |
| 10 | DESCRIPTION |
| 11 | ----------- |
| 12 | |
| 13 | This SSP header is available throughout the kernel, for this |
| 14 | machine/architecture, because drivers that use it may be dispersed. |
| 15 | |
| 16 | This file was cloned from the 7952x implementation. It would be |
| 17 | better to share them, but we're taking an easier approach for the |
| 18 | time being. |
| 19 | |
| 20 | */ |
| 21 | |
| 22 | #if !defined (__SSP_H__) |
| 23 | # define __SSP_H__ |
| 24 | |
| 25 | /* ----- Includes */ |
| 26 | |
| 27 | /* ----- Types */ |
| 28 | |
| 29 | struct ssp_driver { |
| 30 | int (*init) (void); |
| 31 | void (*exit) (void); |
| 32 | void (*acquire) (void); |
| 33 | void (*release) (void); |
| 34 | int (*configure) (int device, int mode, int speed, |
| 35 | int frame_size_write, int frame_size_read); |
| 36 | void (*chip_select) (int enable); |
| 37 | void (*set_callbacks) (void* handle, |
| 38 | irqreturn_t (*callback_tx)(void*), |
| 39 | irqreturn_t (*callback_rx)(void*)); |
| 40 | void (*enable) (void); |
| 41 | void (*disable) (void); |
| 42 | // int (*save_state) (void*); |
| 43 | // void (*restore_state) (void*); |
| 44 | int (*read) (void); |
| 45 | int (*write) (u16 data); |
| 46 | int (*write_read) (u16 data); |
| 47 | void (*flush) (void); |
| 48 | void (*write_async) (void* pv, size_t cb); |
| 49 | size_t (*write_pos) (void); |
| 50 | }; |
| 51 | |
| 52 | /* These modes are only available on the LH79524 */ |
| 53 | #define SSP_MODE_SPI (1) |
| 54 | #define SSP_MODE_SSI (2) |
| 55 | #define SSP_MODE_MICROWIRE (3) |
| 56 | #define SSP_MODE_I2S (4) |
| 57 | |
| 58 | /* CPLD SPI devices */ |
| 59 | #define DEVICE_EEPROM 0 /* Configuration eeprom */ |
| 60 | #define DEVICE_MAC 1 /* MAC eeprom (LPD79524) */ |
| 61 | #define DEVICE_CODEC 2 /* Audio codec */ |
| 62 | #define DEVICE_TOUCH 3 /* Touch screen (LPD79520) */ |
| 63 | |
| 64 | /* ----- Globals */ |
| 65 | |
| 66 | /* ----- Prototypes */ |
| 67 | |
| 68 | //extern struct ssp_driver lh79520_i2s_driver; |
| 69 | extern struct ssp_driver lh7a400_cpld_ssp_driver; |
| 70 | |
| 71 | #endif /* __SSP_H__ */ |