|  | /* | 
|  | * Copyright (C) 2010 | 
|  | * Reinhard Meyer, reinhard.meyer@emk-elektronik.de | 
|  | * | 
|  | * Enhanced Embedded Flash Controller | 
|  | * Based on AT91SAM9XE datasheet | 
|  | * | 
|  | * This program is free software; you can redistribute it and/or modify | 
|  | * it under the terms of the GNU General Public License as published by | 
|  | * the Free Software Foundation; either version 2 of the License, or | 
|  | * (at your option) any later version. | 
|  | */ | 
|  |  | 
|  | #ifndef AT91_EEFC_H | 
|  | #define AT91_EEFC_H | 
|  |  | 
|  | #ifndef __ASSEMBLY__ | 
|  |  | 
|  | typedef struct at91_eefc { | 
|  | u32	fmr;	/* Flash Mode Register RW */ | 
|  | u32	fcr;	/* Flash Command Register WO */ | 
|  | u32	fsr;	/* Flash Status Register RO */ | 
|  | u32	frr;	/* Flash Result Register RO */ | 
|  | } at91_eefc_t; | 
|  |  | 
|  | #endif /* __ASSEMBLY__ */ | 
|  |  | 
|  | #define AT91_EEFC_FMR_FWS_MASK	0x00000f00 | 
|  | #define AT91_EEFC_FMR_FRDY_BIT	0x00000001 | 
|  |  | 
|  | #define AT91_EEFC_FCR_KEY		0x5a000000 | 
|  | #define AT91_EEFC_FCR_FARG_MASK	0x00ffff00 | 
|  | #define AT91_EEFC_FCR_FARG_SHIFT	8 | 
|  | #define AT91_EEFC_FCR_FCMD_GETD	0x0 | 
|  | #define AT91_EEFC_FCR_FCMD_WP		0x1 | 
|  | #define AT91_EEFC_FCR_FCMD_WPL		0x2 | 
|  | #define AT91_EEFC_FCR_FCMD_EWP		0x3 | 
|  | #define AT91_EEFC_FCR_FCMD_EWPL	0x4 | 
|  | #define AT91_EEFC_FCR_FCMD_EA		0x5 | 
|  | #define AT91_EEFC_FCR_FCMD_SLB		0x8 | 
|  | #define AT91_EEFC_FCR_FCMD_CLB		0x9 | 
|  | #define AT91_EEFC_FCR_FCMD_GLB		0xA | 
|  | #define AT91_EEFC_FCR_FCMD_SGPB	0xB | 
|  | #define AT91_EEFC_FCR_FCMD_CGPB	0xC | 
|  | #define AT91_EEFC_FCR_FCMD_GGPB	0xD | 
|  |  | 
|  | #define AT91_EEFC_FSR_FRDY	1 | 
|  | #define AT91_EEFC_FSR_FCMDE	2 | 
|  | #define AT91_EEFC_FSR_FLOCKE	4 | 
|  |  | 
|  | #endif |