mirror of
https://github.com/qemu/qemu.git
synced 2024-11-23 19:03:38 +08:00
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
|
||||
select FRAMEBUFFER
|
||||
select I2C
|
||||
select ECC
|
||||
select NAND
|
||||
select PFLASH_CFI01
|
||||
select SD
|
||||
|
@ -22,9 +22,6 @@ config PFLASH_CFI01
|
||||
config PFLASH_CFI02
|
||||
bool
|
||||
|
||||
config ECC
|
||||
bool
|
||||
|
||||
config VIRTIO_BLK
|
||||
bool
|
||||
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',
|
||||
'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_ISA', if_true: files('fdc-isa.c'))
|
||||
system_ss.add(when: 'CONFIG_FDC_SYSBUS', if_true: files('fdc-sysbus.c'))
|
||||
|
@ -74,7 +74,6 @@ config IVSHMEM_DEVICE
|
||||
|
||||
config ECCMEMCTL
|
||||
bool
|
||||
select ECC
|
||||
|
||||
config IMX
|
||||
bool
|
||||
|
@ -62,17 +62,6 @@ uint32_t nand_getbuswidth(DeviceState *dev);
|
||||
#define NAND_MFR_HYNIX 0xad
|
||||
#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 */
|
||||
|
||||
#define TYPE_M25P80 "m25p80-generic"
|
||||
|
Loading…
Reference in New Issue
Block a user