X-Git-Url: https://repo.jachan.dev/qemu.git/blobdiff_plain/7e7c5e4c1ba5c9b7efcf1b0c1e34ea150c286e58..ac05f3492421caeb05809ffa02c6198ede179e43:/hw/flash.h diff --git a/hw/flash.h b/hw/flash.h index c000d335d9..9c9e5265b7 100644 --- a/hw/flash.h +++ b/hw/flash.h @@ -1,29 +1,39 @@ /* NOR flash devices */ + +#include "memory.h" + typedef struct pflash_t pflash_t; /* pflash_cfi01.c */ -pflash_t *pflash_cfi01_register(target_phys_addr_t base, ram_addr_t off, +pflash_t *pflash_cfi01_register(target_phys_addr_t base, + DeviceState *qdev, const char *name, + target_phys_addr_t size, BlockDriverState *bs, uint32_t sector_len, int nb_blocs, int width, uint16_t id0, uint16_t id1, - uint16_t id2, uint16_t id3); + uint16_t id2, uint16_t id3, int be); /* pflash_cfi02.c */ -pflash_t *pflash_cfi02_register(target_phys_addr_t base, ram_addr_t off, +pflash_t *pflash_cfi02_register(target_phys_addr_t base, + DeviceState *qdev, const char *name, + target_phys_addr_t size, BlockDriverState *bs, uint32_t sector_len, - int nb_blocs, int width, + int nb_blocs, int nb_mappings, int width, uint16_t id0, uint16_t id1, - uint16_t id2, uint16_t id3); + uint16_t id2, uint16_t id3, + uint16_t unlock_addr0, uint16_t unlock_addr1, + int be); + +MemoryRegion *pflash_cfi01_get_memory(pflash_t *fl); /* nand.c */ -struct nand_flash_s; -struct nand_flash_s *nand_init(int manf_id, int chip_id); -void nand_done(struct nand_flash_s *s); -void nand_setpins(struct nand_flash_s *s, - int cle, int ale, int ce, int wp, int gnd); -void nand_getpins(struct nand_flash_s *s, int *rb); -void nand_setio(struct nand_flash_s *s, uint8_t value); -uint8_t nand_getio(struct nand_flash_s *s); +DeviceState *nand_init(BlockDriverState *bdrv, int manf_id, int chip_id); +void nand_setpins(DeviceState *dev, uint8_t cle, uint8_t ale, + uint8_t ce, uint8_t wp, uint8_t gnd); +void nand_getpins(DeviceState *dev, int *rb); +void nand_setio(DeviceState *dev, uint32_t value); +uint32_t nand_getio(DeviceState *dev); +uint32_t nand_getbuswidth(DeviceState *dev); #define NAND_MFR_TOSHIBA 0x98 #define NAND_MFR_SAMSUNG 0xec @@ -35,18 +45,15 @@ uint8_t nand_getio(struct nand_flash_s *s); #define NAND_MFR_MICRON 0x2c /* onenand.c */ -void onenand_base_update(void *opaque, target_phys_addr_t new); -void onenand_base_unmap(void *opaque); -void *onenand_init(uint32_t id, int regshift, qemu_irq irq); +void *onenand_raw_otp(DeviceState *onenand_device); /* ecc.c */ -struct ecc_state_s { +typedef struct { uint8_t cp; /* Column parity */ uint16_t lp[2]; /* Line parity */ uint16_t count; -}; +} ECCState; -uint8_t ecc_digest(struct ecc_state_s *s, uint8_t sample); -void ecc_reset(struct ecc_state_s *s); -void ecc_put(QEMUFile *f, struct ecc_state_s *s); -void ecc_get(QEMUFile *f, struct ecc_state_s *s); +uint8_t ecc_digest(ECCState *s, uint8_t sample); +void ecc_reset(ECCState *s); +extern VMStateDescription vmstate_ecc_state;