]> git.proxmox.com Git - mirror_qemu.git/commit
hw/block/pflash_cfi02: Implement nonuniform sector sizes
authorStephen Checkoway <stephen.checkoway@oberlin.edu>
Fri, 26 Apr 2019 16:26:19 +0000 (12:26 -0400)
committerPhilippe Mathieu-Daudé <philmd@redhat.com>
Tue, 2 Jul 2019 00:32:26 +0000 (02:32 +0200)
commit64659053557a6a19bb00bb226e9b4d8f78cead7b
tree92ef336babe4926d1899919294cb0b45ac4734fd
parentc2c1bf44a9b7f620b0565d17e33e7c5a04a5c51a
hw/block/pflash_cfi02: Implement nonuniform sector sizes

Some flash chips support sectors of different sizes. For example, the
AMD AM29LV160DT has 31 64 kB sectors, one 32 kB sector, two 8 kB
sectors, and a 16 kB sector, in that order. The AM29LV160DB has those in
the reverse order.

The `num-blocks` and `sector-length` properties work exactly as they did
before: a flash device with uniform sector lengths. To get non-uniform
sector lengths for up to four regions, the following properties may be
set
- region 0. `num-blocks0` and `sector-length0`;
- region 1. `num-blocks1` and `sector-length1`;
- region 2. `num-blocks2` and `sector-length2`; and
- region 3. `num-blocks3` and `sector-length3`.

If the uniform and nonuniform properties are set, then both must specify
a flash device with the same total size. It would be better to disallow
both being set, or make `num-blocks0` and `sector-length0` alias
`num-blocks` and `sector-length`, but that would make testing currently
impossible.

Signed-off-by: Stephen Checkoway <stephen.checkoway@oberlin.edu>
Message-Id: <20190426162624.55977-6-stephen.checkoway@oberlin.edu>
Acked-by: Thomas Huth <thuth@redhat.com>
Acked-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
[PMD: Rebased, add assert() on pri_offset]
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
hw/block/pflash_cfi02.c
tests/pflash-cfi02-test.c