[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