Improve generic & stm32f4 demos
[lwext4.git] / demos / stm32f429_disco / stm / stm32f4_spl / inc / stm32f4xx_hal_pccard.h
1 /**\r
2   ******************************************************************************\r
3   * @file    stm32f4xx_hal_pccard.h\r
4   * @author  MCD Application Team\r
5   * @version V1.0.0\r
6   * @date    18-February-2014\r
7   * @brief   Header file of PCCARD HAL module.\r
8   ******************************************************************************\r
9   * @attention\r
10   *\r
11   * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>\r
12   *\r
13   * Redistribution and use in source and binary forms, with or without modification,\r
14   * are permitted provided that the following conditions are met:\r
15   *   1. Redistributions of source code must retain the above copyright notice,\r
16   *      this list of conditions and the following disclaimer.\r
17   *   2. Redistributions in binary form must reproduce the above copyright notice,\r
18   *      this list of conditions and the following disclaimer in the documentation\r
19   *      and/or other materials provided with the distribution.\r
20   *   3. Neither the name of STMicroelectronics nor the names of its contributors\r
21   *      may be used to endorse or promote products derived from this software\r
22   *      without specific prior written permission.\r
23   *\r
24   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\r
25   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
26   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
27   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\r
28   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
29   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\r
30   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\r
31   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\r
32   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
33   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
34   *\r
35   ******************************************************************************\r
36   */ \r
37 \r
38 /* Define to prevent recursive inclusion -------------------------------------*/\r
39 #ifndef __STM32F4xx_HAL_PCCARD_H\r
40 #define __STM32F4xx_HAL_PCCARD_H\r
41 \r
42 #ifdef __cplusplus\r
43  extern "C" {\r
44 #endif\r
45 \r
46 /* Includes ------------------------------------------------------------------*/\r
47 #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx)|| defined(STM32F417xx)\r
48   #include "stm32f4xx_ll_fsmc.h"\r
49 #endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx */\r
50 \r
51 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx)\r
52   #include "stm32f4xx_ll_fmc.h"\r
53 #endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx */\r
54 \r
55 /** @addtogroup STM32F4xx_HAL_Driver\r
56   * @{\r
57   */\r
58 \r
59 /** @addtogroup PCCARD\r
60   * @{\r
61   */ \r
62 \r
63 #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) || defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\r
64 \r
65 /* Exported typedef ----------------------------------------------------------*/\r
66 \r
67 /** \r
68   * @brief  HAL SRAM State structures definition  \r
69   */ \r
70 typedef enum\r
71 {\r
72   HAL_PCCARD_STATE_RESET     = 0x00,    /*!< PCCARD peripheral not yet initialized or disabled */\r
73   HAL_PCCARD_STATE_READY     = 0x01,    /*!< PCCARD peripheral ready                           */\r
74   HAL_PCCARD_STATE_BUSY      = 0x02,    /*!< PCCARD peripheral busy                            */   \r
75   HAL_PCCARD_STATE_ERROR     = 0x04     /*!< PCCARD peripheral error                           */\r
76 }HAL_PCCARD_StateTypeDef;\r
77  \r
78 typedef enum\r
79 {\r
80   CF_SUCCESS = 0,\r
81   CF_ONGOING,\r
82   CF_ERROR,\r
83   CF_TIMEOUT\r
84 }CF_StatusTypedef;\r
85 \r
86 /** \r
87   * @brief  FMC_PCCARD handle Structure definition  \r
88   */   \r
89 typedef struct\r
90 {\r
91   FMC_PCCARD_TypeDef           *Instance;              /*!< Register base address for PCCARD device          */\r
92   \r
93   FMC_PCCARD_InitTypeDef       Init;                   /*!< PCCARD device control configuration parameters   */\r
94 \r
95   __IO HAL_PCCARD_StateTypeDef State;                  /*!< PCCARD device access state                       */\r
96    \r
97   HAL_LockTypeDef              Lock;                   /*!< PCCARD Lock                                      */ \r
98  \r
99 }PCCARD_HandleTypeDef;\r
100 \r
101 \r
102 /* Exported constants --------------------------------------------------------*/\r
103 /** @defgroup PCCARD_Exported_Constants\r
104   * @{\r
105   */\r
106   \r
107 #define CF_DEVICE_ADDRESS             ((uint32_t)0x90000000)\r
108 #define CF_ATTRIBUTE_SPACE_ADDRESS    ((uint32_t)0x98000000)   /* Attribute space size to @0x9BFF FFFF */\r
109 #define CF_COMMON_SPACE_ADDRESS       CF_DEVICE_ADDRESS        /* Common space size to @0x93FF FFFF    */\r
110 #define CF_IO_SPACE_ADDRESS           ((uint32_t)0x9C000000)   /* IO space size to @0x9FFF FFFF        */\r
111 #define CF_IO_SPACE_PRIMARY_ADDR      ((uint32_t)0x9C0001F0)   /* IO space size to @0x9FFF FFFF        */\r
112 \r
113 /* Compact Flash-ATA registers description */\r
114 #define CF_DATA                       ((uint8_t)0x00)    /* Data register */\r
115 #define CF_SECTOR_COUNT               ((uint8_t)0x02)    /* Sector Count register */\r
116 #define CF_SECTOR_NUMBER              ((uint8_t)0x03)    /* Sector Number register */\r
117 #define CF_CYLINDER_LOW               ((uint8_t)0x04)    /* Cylinder low register */\r
118 #define CF_CYLINDER_HIGH              ((uint8_t)0x05)    /* Cylinder high register */\r
119 #define CF_CARD_HEAD                  ((uint8_t)0x06)    /* Card/Head register */\r
120 #define CF_STATUS_CMD                 ((uint8_t)0x07)    /* Status(read)/Command(write) register */\r
121 #define CF_STATUS_CMD_ALTERNATE       ((uint8_t)0x0E)    /* Alternate Status(read)/Command(write) register */\r
122 #define CF_COMMON_DATA_AREA           ((uint16_t)0x0400) /* Start of data area (for Common access only!) */\r
123 \r
124 /* Compact Flash-ATA commands */\r
125 #define CF_READ_SECTOR_CMD            ((uint8_t)0x20)\r
126 #define CF_WRITE_SECTOR_CMD           ((uint8_t)0x30)\r
127 #define CF_ERASE_SECTOR_CMD           ((uint8_t)0xC0)\r
128 #define CF_IDENTIFY_CMD               ((uint8_t)0xEC)\r
129 \r
130 /* Compact Flash status */\r
131 #define CF_TIMEOUT_ERROR              ((uint8_t)0x60)\r
132 #define CF_BUSY                       ((uint8_t)0x80)\r
133 #define CF_PROGR                      ((uint8_t)0x01)\r
134 #define CF_READY                      ((uint8_t)0x40)\r
135 \r
136 #define CF_SECTOR_SIZE                ((uint32_t)255)    /* In half words */ \r
137  \r
138 /**\r
139   * @}\r
140   */ \r
141 \r
142 /* Exported functions --------------------------------------------------------*/\r
143 /* Initialization/de-initialization functions  **********************************/\r
144 HAL_StatusTypeDef  HAL_PCCARD_Init(PCCARD_HandleTypeDef *hpccard, FMC_NAND_PCC_TimingTypeDef *ComSpaceTiming, FMC_NAND_PCC_TimingTypeDef *AttSpaceTiming, FMC_NAND_PCC_TimingTypeDef *IOSpaceTiming);\r
145 HAL_StatusTypeDef  HAL_PCCARD_DeInit(PCCARD_HandleTypeDef *hpccard);   \r
146 void HAL_PCCARD_MspInit(PCCARD_HandleTypeDef *hpccard);\r
147 void HAL_PCCARD_MspDeInit(PCCARD_HandleTypeDef *hpccard);\r
148 \r
149 /* IO operation functions  *****************************************************/\r
150 HAL_StatusTypeDef  HAL_CF_Read_ID(PCCARD_HandleTypeDef *hpccard, uint8_t CompactFlash_ID[], uint8_t *pStatus);\r
151 HAL_StatusTypeDef  HAL_CF_Write_Sector(PCCARD_HandleTypeDef *hpccard, uint16_t *pBuffer, uint16_t SectorAddress,  uint8_t *pStatus);\r
152 HAL_StatusTypeDef  HAL_CF_Read_Sector(PCCARD_HandleTypeDef *hpccard, uint16_t *pBuffer, uint16_t SectorAddress, uint8_t *pStatus);\r
153 HAL_StatusTypeDef  HAL_CF_Erase_Sector(PCCARD_HandleTypeDef *hpccard, uint16_t SectorAddress, uint8_t *pStatus);\r
154 HAL_StatusTypeDef  HAL_CF_Reset(PCCARD_HandleTypeDef *hpccard);\r
155 void               HAL_PCCARD_IRQHandler(PCCARD_HandleTypeDef *hpccard);\r
156 void        HAL_PCCARD_ITCallback(PCCARD_HandleTypeDef *hpccard);\r
157 \r
158 /* PCCARD State functions *******************************************************/\r
159 HAL_PCCARD_StateTypeDef HAL_PCCARD_GetState(PCCARD_HandleTypeDef *hpccard);\r
160 CF_StatusTypedef HAL_CF_GetStatus(PCCARD_HandleTypeDef *hpccard);\r
161 CF_StatusTypedef HAL_CF_ReadStatus(PCCARD_HandleTypeDef *hpccard);\r
162 \r
163 #endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx */\r
164 /**\r
165   * @}\r
166   */ \r
167 \r
168 /**\r
169   * @}\r
170   */\r
171   \r
172 #ifdef __cplusplus\r
173 }\r
174 #endif\r
175 \r
176 #endif /* __STM32F4xx_HAL_PCCARD_H */\r
177 \r
178 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r