qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 1/3] qtest: Add functions for accessing devices on Aspeed I2C


From: Cédric Le Goater
Subject: Re: [PATCH 1/3] qtest: Add functions for accessing devices on Aspeed I2C controller
Date: Tue, 28 Mar 2023 15:10:12 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.9.0

On 3/28/23 14:26, Stefan Berger wrote:


On 3/28/23 02:39, Cédric Le Goater wrote:
On 3/27/23 22:24, Stefan Berger wrote:
Add read and write functions for accessing registers of I2C devices
connected to the Aspeed I2C controller.

Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>

Reviewed-by: Cédric Le Goater <clg@kaod.org>

[... ]

+#ifndef QTEST_ASPEED_H
+#define QTEST_ASPEED_H
+
+#include <stdint.h>
+
+#define AST2600_ASPEED_I2C_BASE_ADDR 0x1e78a000
+
+static inline uint32_t ast2600_aspeed_i2c_calc_dev_addr(uint8_t bus_num)

I think you could simplify the name ast2600_aspeed_i2c_calc_dev_addr()
to aspeed_i2c_calc_bus_addr() and add a comment saying it implements only
the AST2600 I2C controller. I don't think we will need the others.


What are 'the others'?

AST2400 and AST2500 SoC.

+{
+    return AST2600_ASPEED_I2C_BASE_ADDR + 0x80 + bus_num * 0x80;
+}

The formula is :

    return soc_base + (soc_i2c_offset + bus_num) * soc_i2c_reg_size;

That's what I thought:

return soc_base + soc_i2c_offset + (bus_num * soc_i2c_reg_size);

I will keep it as it is, though.

It should work also for the AST2600

FYI, see the layouts below,

Thanks,

C.


AST2400

    000000001e78a000-000000001e78afff (prio 0, i/o): aspeed.i2c
      000000001e78a040-000000001e78a07f (prio 0, i/o): aspeed.i2c.bus.0
      000000001e78a080-000000001e78a0bf (prio 0, i/o): aspeed.i2c.bus.1
      000000001e78a0c0-000000001e78a0ff (prio 0, i/o): aspeed.i2c.bus.2
      000000001e78a100-000000001e78a13f (prio 0, i/o): aspeed.i2c.bus.3
      000000001e78a140-000000001e78a17f (prio 0, i/o): aspeed.i2c.bus.4
      000000001e78a180-000000001e78a1bf (prio 0, i/o): aspeed.i2c.bus.5
      000000001e78a1c0-000000001e78a1ff (prio 0, i/o): aspeed.i2c.bus.6
      000000001e78a300-000000001e78a33f (prio 0, i/o): aspeed.i2c.bus.7
      000000001e78a340-000000001e78a37f (prio 0, i/o): aspeed.i2c.bus.8
      000000001e78a380-000000001e78a3bf (prio 0, i/o): aspeed.i2c.bus.9
      000000001e78a3c0-000000001e78a3ff (prio 0, i/o): aspeed.i2c.bus.10
      000000001e78a400-000000001e78a43f (prio 0, i/o): aspeed.i2c.bus.11
      000000001e78a440-000000001e78a47f (prio 0, i/o): aspeed.i2c.bus.12
      000000001e78a480-000000001e78a4bf (prio 0, i/o): aspeed.i2c.bus.13
      000000001e78a800-000000001e78afff (prio 0, i/o): aspeed.i2c-pool

AST2500

    000000001e78a000-000000001e78afff (prio 0, i/o): aspeed.i2c
      000000001e78a040-000000001e78a07f (prio 0, i/o): aspeed.i2c.bus.0
      000000001e78a080-000000001e78a0bf (prio 0, i/o): aspeed.i2c.bus.1
      000000001e78a0c0-000000001e78a0ff (prio 0, i/o): aspeed.i2c.bus.2
      000000001e78a100-000000001e78a13f (prio 0, i/o): aspeed.i2c.bus.3
      000000001e78a140-000000001e78a17f (prio 0, i/o): aspeed.i2c.bus.4
      000000001e78a180-000000001e78a1bf (prio 0, i/o): aspeed.i2c.bus.5
      000000001e78a1c0-000000001e78a1ff (prio 0, i/o): aspeed.i2c.bus.6
      000000001e78a200-000000001e78a2ff (prio 0, i/o): aspeed.i2c-pool
      000000001e78a300-000000001e78a33f (prio 0, i/o): aspeed.i2c.bus.7
      000000001e78a340-000000001e78a37f (prio 0, i/o): aspeed.i2c.bus.8
      000000001e78a380-000000001e78a3bf (prio 0, i/o): aspeed.i2c.bus.9
      000000001e78a3c0-000000001e78a3ff (prio 0, i/o): aspeed.i2c.bus.10
      000000001e78a400-000000001e78a43f (prio 0, i/o): aspeed.i2c.bus.11
      000000001e78a440-000000001e78a47f (prio 0, i/o): aspeed.i2c.bus.12
      000000001e78a480-000000001e78a4bf (prio 0, i/o): aspeed.i2c.bus.13

AST2600

    000000001e78a000-000000001e78afff (prio 0, i/o): aspeed.i2c
      000000001e78a080-000000001e78a0ff (prio 0, i/o): aspeed.i2c.bus.0
      000000001e78a100-000000001e78a17f (prio 0, i/o): aspeed.i2c.bus.1
      000000001e78a180-000000001e78a1ff (prio 0, i/o): aspeed.i2c.bus.2
      000000001e78a200-000000001e78a27f (prio 0, i/o): aspeed.i2c.bus.3
      000000001e78a280-000000001e78a2ff (prio 0, i/o): aspeed.i2c.bus.4
      000000001e78a300-000000001e78a37f (prio 0, i/o): aspeed.i2c.bus.5
      000000001e78a380-000000001e78a3ff (prio 0, i/o): aspeed.i2c.bus.6
      000000001e78a400-000000001e78a47f (prio 0, i/o): aspeed.i2c.bus.7
      000000001e78a480-000000001e78a4ff (prio 0, i/o): aspeed.i2c.bus.8
      000000001e78a500-000000001e78a57f (prio 0, i/o): aspeed.i2c.bus.9
      000000001e78a580-000000001e78a5ff (prio 0, i/o): aspeed.i2c.bus.10
      000000001e78a600-000000001e78a67f (prio 0, i/o): aspeed.i2c.bus.11
      000000001e78a680-000000001e78a6ff (prio 0, i/o): aspeed.i2c.bus.12
      000000001e78a700-000000001e78a77f (prio 0, i/o): aspeed.i2c.bus.13
      000000001e78a780-000000001e78a7ff (prio 0, i/o): aspeed.i2c.bus.14
      000000001e78a800-000000001e78a87f (prio 0, i/o): aspeed.i2c.bus.15
      000000001e78ac00-000000001e78adff (prio 0, i/o): aspeed.i2c-pool




reply via email to

[Prev in Thread] Current Thread [Next in Thread]