hw/block: Remove ecc
The ecc.c code was used only by the PXA2xx and OMAP2 SoC devices, which we have removed, so it is now completely unused. Note that hw/misc/eccmemctl.c does not in fact use any of the code frome ecc.c, so that KConfig dependency was incorrect. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-id: 20241003140010.1653808-6-peter.maydell@linaro.org
This commit is contained in:
parent
de63376387
commit
48cbe68670
@ -150,7 +150,6 @@ config OMAP
|
|||||||
bool
|
bool
|
||||||
select FRAMEBUFFER
|
select FRAMEBUFFER
|
||||||
select I2C
|
select I2C
|
||||||
select ECC
|
|
||||||
select NAND
|
select NAND
|
||||||
select PFLASH_CFI01
|
select PFLASH_CFI01
|
||||||
select SD
|
select SD
|
||||||
|
@ -22,9 +22,6 @@ config PFLASH_CFI01
|
|||||||
config PFLASH_CFI02
|
config PFLASH_CFI02
|
||||||
bool
|
bool
|
||||||
|
|
||||||
config ECC
|
|
||||||
bool
|
|
||||||
|
|
||||||
config VIRTIO_BLK
|
config VIRTIO_BLK
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
@ -1,91 +0,0 @@
|
|||||||
/*
|
|
||||||
* Calculate Error-correcting Codes. Used by NAND Flash controllers
|
|
||||||
* (not by NAND chips).
|
|
||||||
*
|
|
||||||
* Copyright (c) 2006 Openedhand Ltd.
|
|
||||||
* Written by Andrzej Zaborowski <balrog@zabor.org>
|
|
||||||
*
|
|
||||||
* This code is licensed under the GNU GPL v2.
|
|
||||||
*
|
|
||||||
* Contributions after 2012-01-13 are licensed under the terms of the
|
|
||||||
* GNU GPL, version 2 or (at your option) any later version.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "qemu/osdep.h"
|
|
||||||
#include "migration/vmstate.h"
|
|
||||||
#include "hw/block/flash.h"
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Pre-calculated 256-way 1 byte column parity. Table borrowed from Linux.
|
|
||||||
*/
|
|
||||||
static const uint8_t nand_ecc_precalc_table[] = {
|
|
||||||
0x00, 0x55, 0x56, 0x03, 0x59, 0x0c, 0x0f, 0x5a,
|
|
||||||
0x5a, 0x0f, 0x0c, 0x59, 0x03, 0x56, 0x55, 0x00,
|
|
||||||
0x65, 0x30, 0x33, 0x66, 0x3c, 0x69, 0x6a, 0x3f,
|
|
||||||
0x3f, 0x6a, 0x69, 0x3c, 0x66, 0x33, 0x30, 0x65,
|
|
||||||
0x66, 0x33, 0x30, 0x65, 0x3f, 0x6a, 0x69, 0x3c,
|
|
||||||
0x3c, 0x69, 0x6a, 0x3f, 0x65, 0x30, 0x33, 0x66,
|
|
||||||
0x03, 0x56, 0x55, 0x00, 0x5a, 0x0f, 0x0c, 0x59,
|
|
||||||
0x59, 0x0c, 0x0f, 0x5a, 0x00, 0x55, 0x56, 0x03,
|
|
||||||
0x69, 0x3c, 0x3f, 0x6a, 0x30, 0x65, 0x66, 0x33,
|
|
||||||
0x33, 0x66, 0x65, 0x30, 0x6a, 0x3f, 0x3c, 0x69,
|
|
||||||
0x0c, 0x59, 0x5a, 0x0f, 0x55, 0x00, 0x03, 0x56,
|
|
||||||
0x56, 0x03, 0x00, 0x55, 0x0f, 0x5a, 0x59, 0x0c,
|
|
||||||
0x0f, 0x5a, 0x59, 0x0c, 0x56, 0x03, 0x00, 0x55,
|
|
||||||
0x55, 0x00, 0x03, 0x56, 0x0c, 0x59, 0x5a, 0x0f,
|
|
||||||
0x6a, 0x3f, 0x3c, 0x69, 0x33, 0x66, 0x65, 0x30,
|
|
||||||
0x30, 0x65, 0x66, 0x33, 0x69, 0x3c, 0x3f, 0x6a,
|
|
||||||
0x6a, 0x3f, 0x3c, 0x69, 0x33, 0x66, 0x65, 0x30,
|
|
||||||
0x30, 0x65, 0x66, 0x33, 0x69, 0x3c, 0x3f, 0x6a,
|
|
||||||
0x0f, 0x5a, 0x59, 0x0c, 0x56, 0x03, 0x00, 0x55,
|
|
||||||
0x55, 0x00, 0x03, 0x56, 0x0c, 0x59, 0x5a, 0x0f,
|
|
||||||
0x0c, 0x59, 0x5a, 0x0f, 0x55, 0x00, 0x03, 0x56,
|
|
||||||
0x56, 0x03, 0x00, 0x55, 0x0f, 0x5a, 0x59, 0x0c,
|
|
||||||
0x69, 0x3c, 0x3f, 0x6a, 0x30, 0x65, 0x66, 0x33,
|
|
||||||
0x33, 0x66, 0x65, 0x30, 0x6a, 0x3f, 0x3c, 0x69,
|
|
||||||
0x03, 0x56, 0x55, 0x00, 0x5a, 0x0f, 0x0c, 0x59,
|
|
||||||
0x59, 0x0c, 0x0f, 0x5a, 0x00, 0x55, 0x56, 0x03,
|
|
||||||
0x66, 0x33, 0x30, 0x65, 0x3f, 0x6a, 0x69, 0x3c,
|
|
||||||
0x3c, 0x69, 0x6a, 0x3f, 0x65, 0x30, 0x33, 0x66,
|
|
||||||
0x65, 0x30, 0x33, 0x66, 0x3c, 0x69, 0x6a, 0x3f,
|
|
||||||
0x3f, 0x6a, 0x69, 0x3c, 0x66, 0x33, 0x30, 0x65,
|
|
||||||
0x00, 0x55, 0x56, 0x03, 0x59, 0x0c, 0x0f, 0x5a,
|
|
||||||
0x5a, 0x0f, 0x0c, 0x59, 0x03, 0x56, 0x55, 0x00,
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Update ECC parity count. */
|
|
||||||
uint8_t ecc_digest(ECCState *s, uint8_t sample)
|
|
||||||
{
|
|
||||||
uint8_t idx = nand_ecc_precalc_table[sample];
|
|
||||||
|
|
||||||
s->cp ^= idx & 0x3f;
|
|
||||||
if (idx & 0x40) {
|
|
||||||
s->lp[0] ^= ~s->count;
|
|
||||||
s->lp[1] ^= s->count;
|
|
||||||
}
|
|
||||||
s->count ++;
|
|
||||||
|
|
||||||
return sample;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Reinitialise the counters. */
|
|
||||||
void ecc_reset(ECCState *s)
|
|
||||||
{
|
|
||||||
s->lp[0] = 0x0000;
|
|
||||||
s->lp[1] = 0x0000;
|
|
||||||
s->cp = 0x00;
|
|
||||||
s->count = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Save/restore */
|
|
||||||
const VMStateDescription vmstate_ecc_state = {
|
|
||||||
.name = "ecc-state",
|
|
||||||
.version_id = 0,
|
|
||||||
.minimum_version_id = 0,
|
|
||||||
.fields = (const VMStateField[]) {
|
|
||||||
VMSTATE_UINT8(cp, ECCState),
|
|
||||||
VMSTATE_UINT16_ARRAY(lp, ECCState, 2),
|
|
||||||
VMSTATE_UINT16(count, ECCState),
|
|
||||||
VMSTATE_END_OF_LIST(),
|
|
||||||
},
|
|
||||||
};
|
|
@ -3,7 +3,6 @@ system_ss.add(files(
|
|||||||
'cdrom.c',
|
'cdrom.c',
|
||||||
'hd-geometry.c'
|
'hd-geometry.c'
|
||||||
))
|
))
|
||||||
system_ss.add(when: 'CONFIG_ECC', if_true: files('ecc.c'))
|
|
||||||
system_ss.add(when: 'CONFIG_FDC', if_true: files('fdc.c'))
|
system_ss.add(when: 'CONFIG_FDC', if_true: files('fdc.c'))
|
||||||
system_ss.add(when: 'CONFIG_FDC_ISA', if_true: files('fdc-isa.c'))
|
system_ss.add(when: 'CONFIG_FDC_ISA', if_true: files('fdc-isa.c'))
|
||||||
system_ss.add(when: 'CONFIG_FDC_SYSBUS', if_true: files('fdc-sysbus.c'))
|
system_ss.add(when: 'CONFIG_FDC_SYSBUS', if_true: files('fdc-sysbus.c'))
|
||||||
|
@ -74,7 +74,6 @@ config IVSHMEM_DEVICE
|
|||||||
|
|
||||||
config ECCMEMCTL
|
config ECCMEMCTL
|
||||||
bool
|
bool
|
||||||
select ECC
|
|
||||||
|
|
||||||
config IMX
|
config IMX
|
||||||
bool
|
bool
|
||||||
|
@ -62,17 +62,6 @@ uint32_t nand_getbuswidth(DeviceState *dev);
|
|||||||
#define NAND_MFR_HYNIX 0xad
|
#define NAND_MFR_HYNIX 0xad
|
||||||
#define NAND_MFR_MICRON 0x2c
|
#define NAND_MFR_MICRON 0x2c
|
||||||
|
|
||||||
/* ecc.c */
|
|
||||||
typedef struct {
|
|
||||||
uint8_t cp; /* Column parity */
|
|
||||||
uint16_t lp[2]; /* Line parity */
|
|
||||||
uint16_t count;
|
|
||||||
} ECCState;
|
|
||||||
|
|
||||||
uint8_t ecc_digest(ECCState *s, uint8_t sample);
|
|
||||||
void ecc_reset(ECCState *s);
|
|
||||||
extern const VMStateDescription vmstate_ecc_state;
|
|
||||||
|
|
||||||
/* m25p80.c */
|
/* m25p80.c */
|
||||||
|
|
||||||
#define TYPE_M25P80 "m25p80-generic"
|
#define TYPE_M25P80 "m25p80-generic"
|
||||||
|
Loading…
Reference in New Issue
Block a user