[coreboot-gerrit] Change in coreboot[master]: [WIP]drivers/spi/winbond: Improve structure packing
Patrick Rudolph (Code Review)
gerrit at coreboot.org
Fri Aug 3 09:34:39 CEST 2018
Patrick Rudolph has uploaded this change for review. ( https://review.coreboot.org/27815
Change subject: [WIP]drivers/spi/winbond: Improve structure packing
......................................................................
[WIP]drivers/spi/winbond: Improve structure packing
Use bitfields to pack the struct more tightly.
Change-Id: If1e7a5a3a9504327f987403ec0a7b79b2383792a
Signed-off-by: Patrick Rudolph <patrick.rudolph at 9elements.com>
---
M src/drivers/spi/winbond.c
1 file changed, 86 insertions(+), 84 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/15/27815/1
diff --git a/src/drivers/spi/winbond.c b/src/drivers/spi/winbond.c
index a191f14..bb778fa 100644
--- a/src/drivers/spi/winbond.c
+++ b/src/drivers/spi/winbond.c
@@ -27,111 +27,110 @@
#define CMD_W25_RES 0xab /* Release from DP, and Read Signature */
struct winbond_spi_flash_params {
- uint16_t id;
- /* Log2 of page size in power-of-two mode */
- uint8_t l2_page_size;
- uint16_t pages_per_sector;
- uint16_t sectors_per_block;
- uint16_t nr_blocks;
- const char *name;
+ uint16_t id;
+ uint8_t l2_page_size_shift;
+ uint8_t pages_per_sector_shift : 4;
+ uint8_t sectors_per_block_shift : 4;
+ uint8_t nr_blocks_shift;
+ char name[10];
};
static const struct winbond_spi_flash_params winbond_spi_flash_table[] = {
{
- .id = 0x3015,
- .l2_page_size = 8,
- .pages_per_sector = 16,
- .sectors_per_block = 16,
- .nr_blocks = 32,
- .name = "W25X16",
+ .id = 0x3015,
+ .l2_page_size_shift = 3,
+ .pages_per_sector_shift = 4,
+ .sectors_per_block_shift = 4,
+ .nr_blocks_shift = 5,
+ .name = "W25X16",
},
{
- .id = 0x3016,
- .l2_page_size = 8,
- .pages_per_sector = 16,
- .sectors_per_block = 16,
- .nr_blocks = 64,
- .name = "W25X32",
+ .id = 0x3016,
+ .l2_page_size_shift = 3,
+ .pages_per_sector_shift = 4,
+ .sectors_per_block_shift = 4,
+ .nr_blocks_shift = 6,
+ .name = "W25X32",
},
{
- .id = 0x3017,
- .l2_page_size = 8,
- .pages_per_sector = 16,
- .sectors_per_block = 16,
- .nr_blocks = 128,
- .name = "W25X64",
+ .id = 0x3017,
+ .l2_page_size_shift = 3,
+ .pages_per_sector_shift = 4,
+ .sectors_per_block_shift = 4,
+ .nr_blocks_shift = 7,
+ .name = "W25X64",
},
{
- .id = 0x4014,
- .l2_page_size = 8,
- .pages_per_sector = 16,
- .sectors_per_block = 16,
- .nr_blocks = 16,
- .name = "W25Q80",
+ .id = 0x4014,
+ .l2_page_size_shift = 3,
+ .pages_per_sector_shift = 4,
+ .sectors_per_block_shift = 4,
+ .nr_blocks_shift = 4,
+ .name = "W25Q80",
},
{
- .id = 0x4015,
- .l2_page_size = 8,
- .pages_per_sector = 16,
- .sectors_per_block = 16,
- .nr_blocks = 32,
- .name = "W25Q16",
+ .id = 0x4015,
+ .l2_page_size_shift = 3,
+ .pages_per_sector_shift = 4,
+ .sectors_per_block_shift = 4,
+ .nr_blocks_shift = 5,
+ .name = "W25Q16",
},
{
- .id = 0x4016,
- .l2_page_size = 8,
- .pages_per_sector = 16,
- .sectors_per_block = 16,
- .nr_blocks = 64,
- .name = "W25Q32",
+ .id = 0x4016,
+ .l2_page_size_shift = 3,
+ .pages_per_sector_shift = 4,
+ .sectors_per_block_shift = 4,
+ .nr_blocks_shift = 6,
+ .name = "W25Q32",
},
{
- .id = 0x6016,
- .l2_page_size = 8,
- .pages_per_sector = 16,
- .sectors_per_block = 16,
- .nr_blocks = 64,
- .name = "W25Q32DW",
+ .id = 0x6016,
+ .l2_page_size_shift = 3,
+ .pages_per_sector_shift = 4,
+ .sectors_per_block_shift = 4,
+ .nr_blocks_shift = 6,
+ .name = "W25Q32DW",
},
{
- .id = 0x4017,
- .l2_page_size = 8,
- .pages_per_sector = 16,
- .sectors_per_block = 16,
- .nr_blocks = 128,
- .name = "W25Q64",
+ .id = 0x4017,
+ .l2_page_size_shift = 3,
+ .pages_per_sector_shift = 4,
+ .sectors_per_block_shift = 4,
+ .nr_blocks_shift = 7,
+ .name = "W25Q64",
},
{
- .id = 0x6017,
- .l2_page_size = 8,
- .pages_per_sector = 16,
- .sectors_per_block = 16,
- .nr_blocks = 128,
- .name = "W25Q64DW",
+ .id = 0x6017,
+ .l2_page_size_shift = 3,
+ .pages_per_sector_shift = 4,
+ .sectors_per_block_shift = 4,
+ .nr_blocks_shift = 7,
+ .name = "W25Q64DW",
},
{
- .id = 0x4018,
- .l2_page_size = 8,
- .pages_per_sector = 16,
- .sectors_per_block = 16,
- .nr_blocks = 256,
- .name = "W25Q128",
+ .id = 0x4018,
+ .l2_page_size_shift = 3,
+ .pages_per_sector_shift = 4,
+ .sectors_per_block_shift = 4,
+ .nr_blocks_shift = 8,
+ .name = "W25Q128",
},
{
- .id = 0x6018,
- .l2_page_size = 8,
- .pages_per_sector = 16,
- .sectors_per_block = 16,
- .nr_blocks = 256,
- .name = "W25Q128FW",
+ .id = 0x6018,
+ .l2_page_size_shift = 3,
+ .pages_per_sector_shift = 4,
+ .sectors_per_block_shift = 4,
+ .nr_blocks_shift = 8,
+ .name = "W25Q128FW",
},
{
- .id = 0x4019,
- .l2_page_size = 8,
- .pages_per_sector = 16,
- .sectors_per_block = 16,
- .nr_blocks = 512,
- .name = "W25Q256",
+ .id = 0x4019,
+ .l2_page_size_shift = 3,
+ .pages_per_sector_shift = 4,
+ .sectors_per_block_shift = 4,
+ .nr_blocks_shift = 9,
+ .name = "W25Q256",
},
};
@@ -223,11 +222,14 @@
memcpy(&flash->spi, spi, sizeof(*spi));
flash->name = params->name;
- /* Assuming power-of-two page size initially. */
- flash->page_size = 1 << params->l2_page_size;
- flash->sector_size = flash->page_size * params->pages_per_sector;
- flash->size = flash->sector_size * params->sectors_per_block *
- params->nr_blocks;
+
+ /* Params are in power-of-two. */
+ flash->page_size = 1 << params->l2_page_size_shift;
+ flash->sector_size = flash->page_size *
+ (1 << params->pages_per_sector_shift);
+ flash->size = flash->sector_size *
+ (1 << params->sectors_per_block_shift) *
+ (1 << params->nr_blocks_shift);
flash->erase_cmd = CMD_W25_SE;
flash->status_cmd = CMD_W25_RDSR;
--
To view, visit https://review.coreboot.org/27815
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: If1e7a5a3a9504327f987403ec0a7b79b2383792a
Gerrit-Change-Number: 27815
Gerrit-PatchSet: 1
Gerrit-Owner: Patrick Rudolph <patrick.rudolph at 9elements.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.coreboot.org/pipermail/coreboot-gerrit/attachments/20180803/364da91a/attachment-0001.html>
More information about the coreboot-gerrit
mailing list