diff options
author | Eddie James <eajames@linux.ibm.com> | 2020-07-09 14:17:43 -0500 |
---|---|---|
committer | Joel Stanley <joel@jms.id.au> | 2020-09-10 12:22:46 +0930 |
commit | 6e0ef7d2cee1abf8a8ff4862f528067c58b3bcc1 (patch) | |
tree | d1b3267e1be5a52e491d3edcd572a536a9f382d4 /drivers/fsi/fsi-master-aspeed.c | |
parent | 8a1939829f9cf4ec2354afeaf592735b6eb77ab9 (diff) |
fsi: aspeed: Enable 23-bit addressing
In order to access more than the second hub link, 23-bit addressing is
required. The core provides the highest two bits of address as the slave
ID to the master.
Signed-off-by: Eddie James <eajames@linux.ibm.com>
Acked-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Joel Stanley <joel@jms.id.au>
Diffstat (limited to 'drivers/fsi/fsi-master-aspeed.c')
-rw-r--r-- | drivers/fsi/fsi-master-aspeed.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/fsi/fsi-master-aspeed.c b/drivers/fsi/fsi-master-aspeed.c index f49742b310c2..b49dccf14315 100644 --- a/drivers/fsi/fsi-master-aspeed.c +++ b/drivers/fsi/fsi-master-aspeed.c @@ -241,9 +241,10 @@ static int aspeed_master_read(struct fsi_master *master, int link, struct fsi_master_aspeed *aspeed = to_fsi_master_aspeed(master); int ret; - if (id != 0) + if (id > 0x3) return -EINVAL; + addr |= id << 21; addr += link * FSI_HUB_LINK_SIZE; switch (size) { @@ -273,9 +274,10 @@ static int aspeed_master_write(struct fsi_master *master, int link, struct fsi_master_aspeed *aspeed = to_fsi_master_aspeed(master); int ret; - if (id != 0) + if (id > 0x3) return -EINVAL; + addr |= id << 21; addr += link * FSI_HUB_LINK_SIZE; switch (size) { |