xref: /qemu/include/hw/block/flash.h (revision 3e82ddaa8db260a232dbbbf488d8ac7851d124c5)
1cb9c377fSPaolo Bonzini #ifndef HW_FLASH_H
2175de524SMarkus Armbruster #define HW_FLASH_H
3cb9c377fSPaolo Bonzini 
487ecb68bSpbrook /* NOR flash devices */
5cfe5f011SAvi Kivity 
6d4842052SMarkus Armbruster #include "exec/hwaddr.h"
7db1015e9SEduardo Habkost #include "qom/object.h"
8cfe5f011SAvi Kivity 
988eeee0aSbalrog /* pflash_cfi01.c */
1016434065SMarkus Armbruster 
11e7b62741SMarkus Armbruster #define TYPE_PFLASH_CFI01 "cfi.pflash01"
128063396bSEduardo Habkost OBJECT_DECLARE_SIMPLE_TYPE(PFlashCFI01, PFLASH_CFI01)
1316434065SMarkus Armbruster 
1416434065SMarkus Armbruster 
1516434065SMarkus Armbruster PFlashCFI01 *pflash_cfi01_register(hwaddr base,
16940d5b13SMarkus Armbruster                                    const char *name,
17a8170e5eSAvi Kivity                                    hwaddr size,
184be74634SMarkus Armbruster                                    BlockBackend *blk,
19ce14710fSMarkus Armbruster                                    uint32_t sector_len,
2016434065SMarkus Armbruster                                    int width,
2187ecb68bSpbrook                                    uint16_t id0, uint16_t id1,
226725070dSbalrog                                    uint16_t id2, uint16_t id3,
2301e0451aSAnthony Liguori                                    int be);
24e60cf765SPhilippe Mathieu-Daudé BlockBackend *pflash_cfi01_get_blk(PFlashCFI01 *fl);
2516434065SMarkus Armbruster MemoryRegion *pflash_cfi01_get_memory(PFlashCFI01 *fl);
262d731dbdSMarkus Armbruster void pflash_cfi01_legacy_drive(PFlashCFI01 *dev, DriveInfo *dinfo);
2787ecb68bSpbrook 
2816434065SMarkus Armbruster /* pflash_cfi02.c */
2916434065SMarkus Armbruster 
30e7b62741SMarkus Armbruster #define TYPE_PFLASH_CFI02 "cfi.pflash02"
318063396bSEduardo Habkost OBJECT_DECLARE_SIMPLE_TYPE(PFlashCFI02, PFLASH_CFI02)
3216434065SMarkus Armbruster 
3316434065SMarkus Armbruster 
3416434065SMarkus Armbruster PFlashCFI02 *pflash_cfi02_register(hwaddr base,
35940d5b13SMarkus Armbruster                                    const char *name,
3616434065SMarkus Armbruster                                    hwaddr size,
3716434065SMarkus Armbruster                                    BlockBackend *blk,
38ce14710fSMarkus Armbruster                                    uint32_t sector_len,
3916434065SMarkus Armbruster                                    int nb_mappings,
4016434065SMarkus Armbruster                                    int width,
4116434065SMarkus Armbruster                                    uint16_t id0, uint16_t id1,
4216434065SMarkus Armbruster                                    uint16_t id2, uint16_t id3,
4316434065SMarkus Armbruster                                    uint16_t unlock_addr0,
4416434065SMarkus Armbruster                                    uint16_t unlock_addr1,
4516434065SMarkus Armbruster                                    int be);
46cfe5f011SAvi Kivity 
479ab26b0eSCédric Le Goater /* m25p80.c */
489ab26b0eSCédric Le Goater 
49*a7538ca0SCédric Le Goater #define TYPE_M25P80 "m25p80-generic"
50*a7538ca0SCédric Le Goater 
519ab26b0eSCédric Le Goater BlockBackend *m25p80_get_blk(DeviceState *dev);
529ab26b0eSCédric Le Goater 
53cb9c377fSPaolo Bonzini #endif
54