From: "Cédric Le Goater" <clg@kaod.org>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: "Andrew Jeffery" <andrew@aj.id.au>,
"Cédric Le Goater" <clg@kaod.org>,
qemu-arm@nongnu.org, "Joel Stanley" <joel@jms.id.au>,
qemu-devel@nongnu.org
Subject: [PATCH v2 18/21] aspeed/sdmc: Simplify calculation of RAM bits
Date: Wed, 19 Aug 2020 12:09:53 +0200 [thread overview]
Message-ID: <20200819100956.2216690-19-clg@kaod.org> (raw)
In-Reply-To: <20200819100956.2216690-1-clg@kaod.org>
Changes in commit 533eb415df2e ("arm/aspeed: actually check RAM size")
introduced a 'valid_ram_sizes' array which can be used to compute the
associated bit field value encoding the RAM size. The field is simply
the index of the array.
Reviewed-by: Joel Stanley <joel@jms.id.au>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
---
hw/misc/aspeed_sdmc.c | 79 ++++++++++++++-----------------------------
1 file changed, 25 insertions(+), 54 deletions(-)
diff --git a/hw/misc/aspeed_sdmc.c b/hw/misc/aspeed_sdmc.c
index 81c73450ab5d..08f856cbda7e 100644
--- a/hw/misc/aspeed_sdmc.c
+++ b/hw/misc/aspeed_sdmc.c
@@ -159,57 +159,6 @@ static const MemoryRegionOps aspeed_sdmc_ops = {
.valid.max_access_size = 4,
};
-static int ast2400_rambits(AspeedSDMCState *s)
-{
- switch (s->ram_size >> 20) {
- case 64:
- return ASPEED_SDMC_DRAM_64MB;
- case 128:
- return ASPEED_SDMC_DRAM_128MB;
- case 256:
- return ASPEED_SDMC_DRAM_256MB;
- case 512:
- return ASPEED_SDMC_DRAM_512MB;
- default:
- g_assert_not_reached();
- break;
- }
-}
-
-static int ast2500_rambits(AspeedSDMCState *s)
-{
- switch (s->ram_size >> 20) {
- case 128:
- return ASPEED_SDMC_AST2500_128MB;
- case 256:
- return ASPEED_SDMC_AST2500_256MB;
- case 512:
- return ASPEED_SDMC_AST2500_512MB;
- case 1024:
- return ASPEED_SDMC_AST2500_1024MB;
- default:
- g_assert_not_reached();
- break;
- }
-}
-
-static int ast2600_rambits(AspeedSDMCState *s)
-{
- switch (s->ram_size >> 20) {
- case 256:
- return ASPEED_SDMC_AST2600_256MB;
- case 512:
- return ASPEED_SDMC_AST2600_512MB;
- case 1024:
- return ASPEED_SDMC_AST2600_1024MB;
- case 2048:
- return ASPEED_SDMC_AST2600_2048MB;
- default:
- g_assert_not_reached();
- break;
- }
-}
-
static void aspeed_sdmc_reset(DeviceState *dev)
{
AspeedSDMCState *s = ASPEED_SDMC(dev);
@@ -324,10 +273,32 @@ static const TypeInfo aspeed_sdmc_info = {
.abstract = true,
};
+static int aspeed_sdmc_get_ram_bits(AspeedSDMCState *s)
+{
+ AspeedSDMCClass *asc = ASPEED_SDMC_GET_CLASS(s);
+ int i;
+
+ /*
+ * The bitfield value encoding the RAM size is the index of the
+ * possible RAM size array
+ */
+ for (i = 0; asc->valid_ram_sizes[i]; i++) {
+ if (s->ram_size == asc->valid_ram_sizes[i]) {
+ return i;
+ }
+ }
+
+ /*
+ * Invalid RAM sizes should have been excluded when setting the
+ * SoC RAM size.
+ */
+ g_assert_not_reached();
+}
+
static uint32_t aspeed_2400_sdmc_compute_conf(AspeedSDMCState *s, uint32_t data)
{
uint32_t fixed_conf = ASPEED_SDMC_VGA_COMPAT |
- ASPEED_SDMC_DRAM_SIZE(ast2400_rambits(s));
+ ASPEED_SDMC_DRAM_SIZE(aspeed_sdmc_get_ram_bits(s));
/* Make sure readonly bits are kept */
data &= ~ASPEED_SDMC_READONLY_MASK;
@@ -385,7 +356,7 @@ static uint32_t aspeed_2500_sdmc_compute_conf(AspeedSDMCState *s, uint32_t data)
uint32_t fixed_conf = ASPEED_SDMC_HW_VERSION(1) |
ASPEED_SDMC_VGA_APERTURE(ASPEED_SDMC_VGA_64MB) |
ASPEED_SDMC_CACHE_INITIAL_DONE |
- ASPEED_SDMC_DRAM_SIZE(ast2500_rambits(s));
+ ASPEED_SDMC_DRAM_SIZE(aspeed_sdmc_get_ram_bits(s));
/* Make sure readonly bits are kept */
data &= ~ASPEED_SDMC_AST2500_READONLY_MASK;
@@ -451,7 +422,7 @@ static uint32_t aspeed_2600_sdmc_compute_conf(AspeedSDMCState *s, uint32_t data)
{
uint32_t fixed_conf = ASPEED_SDMC_HW_VERSION(3) |
ASPEED_SDMC_VGA_APERTURE(ASPEED_SDMC_VGA_64MB) |
- ASPEED_SDMC_DRAM_SIZE(ast2600_rambits(s));
+ ASPEED_SDMC_DRAM_SIZE(aspeed_sdmc_get_ram_bits(s));
/* Make sure readonly bits are kept (use ast2500 mask) */
data &= ~ASPEED_SDMC_AST2500_READONLY_MASK;
--
2.25.4
next prev parent reply other threads:[~2020-08-19 10:13 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-19 10:09 [PATCH v2 00/21] aspeed: cleanups and some extensions Cédric Le Goater
2020-08-19 10:09 ` [PATCH v2 01/21] m25p80: Return the JEDEC ID twice for mx25l25635e Cédric Le Goater
2020-08-19 10:09 ` [PATCH v2 02/21] m25p80: Add support for mx25l25635f Cédric Le Goater
2020-08-28 7:00 ` Cédric Le Goater
2020-08-19 10:09 ` [PATCH v2 03/21] m25p80: Add support for n25q512ax3 Cédric Le Goater
2020-08-19 10:09 ` [PATCH v2 04/21] aspeed/scu: Fix valid access size on AST2400 Cédric Le Goater
2020-08-19 10:09 ` [PATCH v2 05/21] hw/arm/aspeed: Add board model for Supermicro X11 BMC Cédric Le Goater
2020-08-25 14:33 ` Peter Maydell
2020-08-25 14:37 ` Erik Smit
2020-08-25 15:18 ` Peter Maydell
2020-08-28 6:16 ` Cédric Le Goater
2020-08-19 10:09 ` [PATCH v2 06/21] aspeed/smc: Fix MemoryRegionOps definition Cédric Le Goater
2020-08-19 10:09 ` [PATCH v2 07/21] aspeed/smc: Fix max_slaves of the legacy SMC device Cédric Le Goater
2020-08-19 10:09 ` [PATCH v2 08/21] aspeed/sdhci: Fix reset sequence Cédric Le Goater
2020-08-25 5:56 ` Joel Stanley
2020-08-19 10:09 ` [PATCH v2 09/21] ftgmac100: Fix registers that can be read Cédric Le Goater
2020-08-19 10:09 ` [PATCH v2 10/21] ftgmac100: Fix interrupt status "Packet transmitted on ethernet" Cédric Le Goater
2020-08-19 10:09 ` [PATCH v2 11/21] ftgmac100: Fix interrupt status "Packet moved to RX FIFO" Cédric Le Goater
2020-08-19 10:09 ` [PATCH v2 12/21] ftgmac100: Change interrupt status when a DMA error occurs Cédric Le Goater
2020-08-19 10:09 ` [PATCH v2 13/21] ftgmac100: Check for invalid len and address before doing a DMA transfer Cédric Le Goater
2020-08-19 10:09 ` [PATCH v2 14/21] ftgmac100: Fix integer overflow in ftgmac100_do_tx() Cédric Le Goater
2020-08-19 10:09 ` [PATCH v2 15/21] ftgmac100: Improve software reset Cédric Le Goater
2020-08-19 10:09 ` [PATCH v2 16/21] aspeed/sdmc: Perform memory training Cédric Le Goater
2020-08-19 10:09 ` [PATCH v2 17/21] aspeed/sdmc: Allow writes to unprotected registers Cédric Le Goater
2020-08-19 10:09 ` Cédric Le Goater [this message]
2020-08-19 10:09 ` [PATCH v2 19/21] aspeed/smc: Open AHB window of the second chip of the AST2600 FMC controller Cédric Le Goater
2020-08-19 10:09 ` [PATCH v2 20/21] arm: aspeed: add strap define `25HZ` of AST2500 Cédric Le Goater
2020-08-19 10:09 ` [PATCH v2 21/21] hw: add a number of SPI-flash's of m25p80 family Cédric Le Goater
2020-08-25 6:01 ` [PATCH v2 00/21] aspeed: cleanups and some extensions Joel Stanley
2020-08-25 7:20 ` Cédric Le Goater
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200819100956.2216690-19-clg@kaod.org \
--to=clg@kaod.org \
--cc=andrew@aj.id.au \
--cc=joel@jms.id.au \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).