mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 15:53:54 -06:00
aspeed queue:
* fix for the Aspeed I2C slave mode * a new I2C echo device from Klaus and its associated test in avocado. * initial SoC cleanups to allow the use of block devices instead of drives on the command line. * new facebook machines and eeprom fixes for the Fuji * readline fix -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEoPZlSPBIlev+awtgUaNDx8/77KEFAmQAnrQACgkQUaNDx8/7 7KGIvQ//Te2eSxlZNxAXHb3HSVFRaBW+2EkJzNlalX75olFSzCLe8BnAHK5xPlYv JjU0aPjWaPohPLdbNbAsJY2B8AwMGbUTjSv+ORRWF6s97LTVD9WcAYHgOTCz6d2X ZrArJ5msEQAFEySOLmBqTcuyW3t4w8XeII+B09HZIS8Gn3F9kX5+4JCw9E4sX8fS n9ayclMmrXCPbkGA4bfwJp3KI1Tc/WXNRyG0AmPEmepid7ECr5tVvQoXRMF1Sy/D 10qbHEcmQXvZDy85M2ED1niOac4oU+EY8Wvjzkgc36uXcjqf0jIUfw56cwGSNVkW MhPXSMiH4tEjgxmtzld3LeA6TGfrFcCvRXYiCuYWHjBS3gptlqY6Q0580vxoQVXL lTYui57LB1YStNLcLG9toP0d4/fRfeqEx7ddCQKlopnW/K392eoJo0aYoVGVJhIC 3QhN525EFUwMm4FDpdSW29Gfbk/ytpf0u4hQ6JPeBl8psirRKqCGuwr5NOnPYTaN yErlsq2eL83t9kLo+2YIqgWic85wNP3kqAjIaE6lminqX7sWFH3V1g9HqUQZVG1g msatZMiCCvwSFuz3DPkSfnuhqwaHuhvCATZloCtguCmnbUK9qUVVzvodKw62sZrd GdS2XvRNyoOwezz0tDEvPipyZ7RpcaatryHNuzGwRsE5Lvr73dg= =ExnJ -----END PGP SIGNATURE----- Merge tag 'pull-aspeed-20230302' of https://github.com/legoater/qemu into staging aspeed queue: * fix for the Aspeed I2C slave mode * a new I2C echo device from Klaus and its associated test in avocado. * initial SoC cleanups to allow the use of block devices instead of drives on the command line. * new facebook machines and eeprom fixes for the Fuji * readline fix # -----BEGIN PGP SIGNATURE----- # # iQIzBAABCAAdFiEEoPZlSPBIlev+awtgUaNDx8/77KEFAmQAnrQACgkQUaNDx8/7 # 7KGIvQ//Te2eSxlZNxAXHb3HSVFRaBW+2EkJzNlalX75olFSzCLe8BnAHK5xPlYv # JjU0aPjWaPohPLdbNbAsJY2B8AwMGbUTjSv+ORRWF6s97LTVD9WcAYHgOTCz6d2X # ZrArJ5msEQAFEySOLmBqTcuyW3t4w8XeII+B09HZIS8Gn3F9kX5+4JCw9E4sX8fS # n9ayclMmrXCPbkGA4bfwJp3KI1Tc/WXNRyG0AmPEmepid7ECr5tVvQoXRMF1Sy/D # 10qbHEcmQXvZDy85M2ED1niOac4oU+EY8Wvjzkgc36uXcjqf0jIUfw56cwGSNVkW # MhPXSMiH4tEjgxmtzld3LeA6TGfrFcCvRXYiCuYWHjBS3gptlqY6Q0580vxoQVXL # lTYui57LB1YStNLcLG9toP0d4/fRfeqEx7ddCQKlopnW/K392eoJo0aYoVGVJhIC # 3QhN525EFUwMm4FDpdSW29Gfbk/ytpf0u4hQ6JPeBl8psirRKqCGuwr5NOnPYTaN # yErlsq2eL83t9kLo+2YIqgWic85wNP3kqAjIaE6lminqX7sWFH3V1g9HqUQZVG1g # msatZMiCCvwSFuz3DPkSfnuhqwaHuhvCATZloCtguCmnbUK9qUVVzvodKw62sZrd # GdS2XvRNyoOwezz0tDEvPipyZ7RpcaatryHNuzGwRsE5Lvr73dg= # =ExnJ # -----END PGP SIGNATURE----- # gpg: Signature made Thu 02 Mar 2023 13:03:48 GMT # gpg: using RSA key A0F66548F04895EBFE6B0B6051A343C7CFFBECA1 # gpg: Good signature from "Cédric Le Goater <clg@kaod.org>" [undefined] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: A0F6 6548 F048 95EB FE6B 0B60 51A3 43C7 CFFB ECA1 * tag 'pull-aspeed-20230302' of https://github.com/legoater/qemu: aspeed/smc: Replace SysBus IRQs with GPIO lines aspeed: Add a boot_rom overlap region in the SoC spi_boot container aspeed: Introduce a spi_boot region under the SoC aspeed/fuji : correct the eeprom size hw/at24c : modify at24c to support 1 byte address mode hw/arm/aspeed: Adding new machine Tiogapass in QEMU hw/arm/aspeed: Adding new machine Yosemitev2 in QEMU tests/avocado/machine_aspeed.py: Add an I2C slave test hw/misc: add a toy i2c echo device hw/i2c: only schedule pending master when bus is idle readline: fix hmp completion issue Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
cad8db9865
16 changed files with 420 additions and 78 deletions
|
@ -41,6 +41,13 @@ struct EEPROMState {
|
|||
uint16_t cur;
|
||||
/* total size in bytes */
|
||||
uint32_t rsize;
|
||||
/*
|
||||
* address byte number
|
||||
* for 24c01, 24c02 size <= 256 byte, use only 1 byte
|
||||
* otherwise size > 256, use 2 byte
|
||||
*/
|
||||
uint8_t asize;
|
||||
|
||||
bool writable;
|
||||
/* cells changed since last START? */
|
||||
bool changed;
|
||||
|
@ -91,7 +98,11 @@ uint8_t at24c_eeprom_recv(I2CSlave *s)
|
|||
EEPROMState *ee = AT24C_EE(s);
|
||||
uint8_t ret;
|
||||
|
||||
if (ee->haveaddr == 1) {
|
||||
/*
|
||||
* If got the byte address but not completely with address size
|
||||
* will return the invalid value
|
||||
*/
|
||||
if (ee->haveaddr > 0 && ee->haveaddr < ee->asize) {
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
|
@ -108,11 +119,11 @@ int at24c_eeprom_send(I2CSlave *s, uint8_t data)
|
|||
{
|
||||
EEPROMState *ee = AT24C_EE(s);
|
||||
|
||||
if (ee->haveaddr < 2) {
|
||||
if (ee->haveaddr < ee->asize) {
|
||||
ee->cur <<= 8;
|
||||
ee->cur |= data;
|
||||
ee->haveaddr++;
|
||||
if (ee->haveaddr == 2) {
|
||||
if (ee->haveaddr == ee->asize) {
|
||||
ee->cur %= ee->rsize;
|
||||
DPRINTK("Set pointer %04x\n", ee->cur);
|
||||
}
|
||||
|
@ -199,6 +210,18 @@ static void at24c_eeprom_realize(DeviceState *dev, Error **errp)
|
|||
}
|
||||
DPRINTK("Reset read backing file\n");
|
||||
}
|
||||
|
||||
/*
|
||||
* If address size didn't define with property set
|
||||
* value is 0 as default, setting it by Rom size detecting.
|
||||
*/
|
||||
if (ee->asize == 0) {
|
||||
if (ee->rsize <= 256) {
|
||||
ee->asize = 1;
|
||||
} else {
|
||||
ee->asize = 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static
|
||||
|
@ -213,6 +236,7 @@ void at24c_eeprom_reset(DeviceState *state)
|
|||
|
||||
static Property at24c_eeprom_props[] = {
|
||||
DEFINE_PROP_UINT32("rom-size", EEPROMState, rsize, 0),
|
||||
DEFINE_PROP_UINT8("address-size", EEPROMState, asize, 0),
|
||||
DEFINE_PROP_BOOL("writable", EEPROMState, writable, true),
|
||||
DEFINE_PROP_DRIVE("drive", EEPROMState, blk),
|
||||
DEFINE_PROP_END_OF_LIST()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue