STM32L: Added flash driver and target
[fw/openocd] / src / flash / mflash.h
index b42eaeffff0d4a9f6c43567ea065f16facfc6ae1..0520c5fa9fd6c34078124aebc995e37cd329d765 100644 (file)
 #ifndef _MFLASH_H
 #define _MFLASH_H
 
-#include "target.h"
+struct command_context;
 
 typedef unsigned long mg_io_uint32;
 typedef unsigned short mg_io_uint16;
 typedef unsigned char mg_io_uint8;
 
-typedef struct mflash_gpio_num_s
+struct mflash_gpio_num
 {
        char port[2];
        signed short num;
-} mflash_gpio_num_t;
+};
 
-typedef struct mflash_gpio_drv_s
+struct mflash_gpio_drv
 {
-       char *name;
-       int (*set_gpio_to_output) (mflash_gpio_num_t gpio);
-       int (*set_gpio_output_val) (mflash_gpio_num_t gpio, u8 val);
-} mflash_gpio_drv_t;
+       const char *name;
+       int (*set_gpio_to_output) (struct mflash_gpio_num gpio);
+       int (*set_gpio_output_val) (struct mflash_gpio_num gpio, uint8_t val);
+};
 
 typedef struct _mg_io_type_drv_info {
 
@@ -125,24 +125,23 @@ typedef struct _mg_pll_t
        unsigned char  output_div;      /* 2bit divider */
 } mg_pll_t;
 
-typedef struct mg_drv_info_s {
+struct mg_drv_info {
        mg_io_type_drv_info drv_id;
-       u32 tot_sects;
-} mg_drv_info_t;
+       uint32_t tot_sects;
+};
 
-typedef struct mflash_bank_s
+struct mflash_bank
 {
-       u32 base;
+       uint32_t base;
 
-       mflash_gpio_num_t rst_pin;
+       struct mflash_gpio_num rst_pin;
 
-       mflash_gpio_drv_t *gpio_drv;
-       target_t *target;
-       mg_drv_info_t *drv_info;
-} mflash_bank_t;
+       struct mflash_gpio_drv *gpio_drv;
+       struct target *target;
+       struct mg_drv_info *drv_info;
+};
 
-extern int mflash_register_commands(struct command_context_s *cmd_ctx);
-extern int mflash_init_drivers(struct command_context_s *cmd_ctx);
+int mflash_register_commands(struct command_context *cmd_ctx);
 
 #define MG_MFLASH_SECTOR_SIZE          (0x200)         /* 512Bytes = 2^9 */
 #define MG_MFLASH_SECTOR_SIZE_MASK     (0x200-1)
@@ -178,6 +177,13 @@ extern int mflash_init_drivers(struct command_context_s *cmd_ctx);
 
 #define MG_FILEIO_CHUNK 1048576
 
+#define ERROR_MG_IO (-1600)
+#define ERROR_MG_TIMEOUT (-1601)
+#define ERROR_MG_INVALID_PLL (-1603)
+#define ERROR_MG_INTERFACE (-1604)
+#define ERROR_MG_INVALID_OSC (-1605)
+#define ERROR_MG_UNSUPPORTED_SOC (-1606)
+
 typedef enum _mg_io_type_wait{
 
        mg_io_wait_bsy       = 1,
@@ -287,7 +293,7 @@ typedef enum _mg_vcmd
 typedef enum _mg_opmode
 {
        mg_op_mode_xip = 1, /* TRUE XIP */
-       mg_op_mode_snd = 2, /* BOOT+Storage */
+       mg_op_mode_snd = 2, /* BOOT + Storage */
        mg_op_mode_stg = 0  /* Only Storage */
 } mg_opmode;