Lines Matching +full:data +full:- +full:sheet

2  * SPDX-License-Identifier: GPL-2.0-or-later
5 * ASPEED APB-OPB FSI interface
6 * IBM On-chip Peripheral Bus
16 #include "hw/qdev-core.h"
66 * The following magic values came from AST2600 data sheet
83 memory_region_set_address(&fsi->iomem, addr); in fsi_opb_fsi_master_address()
90 memory_region_set_address(&fsi->opb2fsi, addr); in fsi_opb_opb2fsi_address()
109 return s->regs[reg]; in fsi_aspeed_apb2opb_read()
113 MemTxAttrs attrs, uint32_t *data, in fsi_aspeed_apb2opb_rw() argument
121 address_space_stl_le(as, addr, *data, attrs, &res); in fsi_aspeed_apb2opb_rw()
124 address_space_stw_le(as, addr, *data, attrs, &res); in fsi_aspeed_apb2opb_rw()
127 address_space_stb(as, addr, *data, attrs, &res); in fsi_aspeed_apb2opb_rw()
135 *data = address_space_ldl_le(as, addr, attrs, &res); in fsi_aspeed_apb2opb_rw()
138 *data = address_space_lduw_le(as, addr, attrs, &res); in fsi_aspeed_apb2opb_rw()
141 *data = address_space_ldub(as, addr, attrs, &res); in fsi_aspeed_apb2opb_rw()
150 static void fsi_aspeed_apb2opb_write(void *opaque, hwaddr addr, uint64_t data, in fsi_aspeed_apb2opb_write() argument
156 trace_fsi_aspeed_apb2opb_write(addr, size, data); in fsi_aspeed_apb2opb_write()
167 fsi_opb_fsi_master_address(&s->fsi[0], in fsi_aspeed_apb2opb_write()
168 data & APB2OPB_CONTROL_OFF); in fsi_aspeed_apb2opb_write()
171 fsi_opb_opb2fsi_address(&s->fsi[0], in fsi_aspeed_apb2opb_write()
172 data & APB2OPB_OPB2FSI_OFF); in fsi_aspeed_apb2opb_write()
175 if (data != APB2OPB_OPB0_WRITE_WORD_ENDIAN_BE) { in fsi_aspeed_apb2opb_write()
182 if (data != APB2OPB_OPB0_WRITE_BYTE_ENDIAN_BE) { in fsi_aspeed_apb2opb_write()
189 if (data != APB2OPB_OPB0_READ_WORD_ENDIAN_BE) { in fsi_aspeed_apb2opb_write()
203 assert((s->regs[APB2OPB_OPB0_SEL] & APB2OPB_OPB_SEL_EN) ^ in fsi_aspeed_apb2opb_write()
204 (s->regs[APB2OPB_OPB1_SEL] & APB2OPB_OPB_SEL_EN)); in fsi_aspeed_apb2opb_write()
206 if (s->regs[APB2OPB_OPB0_SEL] & APB2OPB_OPB_SEL_EN) { in fsi_aspeed_apb2opb_write()
208 op_mode = s->regs[APB2OPB_OPB0_MODE]; in fsi_aspeed_apb2opb_write()
209 op_size = s->regs[APB2OPB_OPB0_XFER]; in fsi_aspeed_apb2opb_write()
210 op_addr = s->regs[APB2OPB_OPB0_ADDR]; in fsi_aspeed_apb2opb_write()
211 op_data = s->regs[APB2OPB_OPB0_WRITE_DATA]; in fsi_aspeed_apb2opb_write()
212 } else if (s->regs[APB2OPB_OPB1_SEL] & APB2OPB_OPB_SEL_EN) { in fsi_aspeed_apb2opb_write()
214 op_mode = s->regs[APB2OPB_OPB1_MODE]; in fsi_aspeed_apb2opb_write()
215 op_size = s->regs[APB2OPB_OPB1_XFER]; in fsi_aspeed_apb2opb_write()
216 op_addr = s->regs[APB2OPB_OPB1_ADDR]; in fsi_aspeed_apb2opb_write()
217 op_data = s->regs[APB2OPB_OPB1_WRITE_DATA]; in fsi_aspeed_apb2opb_write()
235 as = &s->opb[opb].as; in fsi_aspeed_apb2opb_write()
246 s->regs[index] = op_data; in fsi_aspeed_apb2opb_write()
249 s->regs[APB2OPB_IRQ_STS] |= opb ? APB2OPB_IRQ_STS_OPB1_TX_ACK in fsi_aspeed_apb2opb_write()
255 s->regs[reg] = data; in fsi_aspeed_apb2opb_write()
274 object_initialize_child(o, "fsi-master[*]", &s->fsi[i], in fsi_aspeed_apb2opb_init()
288 * device-introspect-test. To avoid a memory corruption and a QEMU in fsi_aspeed_apb2opb_realize()
293 qbus_init(&s->opb[i], sizeof(s->opb[i]), TYPE_OP_BUS, DEVICE(s), in fsi_aspeed_apb2opb_realize()
297 sysbus_init_irq(sbd, &s->irq); in fsi_aspeed_apb2opb_realize()
299 memory_region_init_io(&s->iomem, OBJECT(s), &aspeed_apb2opb_ops, s, in fsi_aspeed_apb2opb_realize()
301 sysbus_init_mmio(sbd, &s->iomem); in fsi_aspeed_apb2opb_realize()
304 if (!qdev_realize(DEVICE(&s->fsi[i]), BUS(&s->opb[i]), errp)) { in fsi_aspeed_apb2opb_realize()
308 memory_region_add_subregion(&s->opb[i].mr, 0x80000000, in fsi_aspeed_apb2opb_realize()
309 &s->fsi[i].iomem); in fsi_aspeed_apb2opb_realize()
311 memory_region_add_subregion(&s->opb[i].mr, 0xa0000000, in fsi_aspeed_apb2opb_realize()
312 &s->fsi[i].opb2fsi); in fsi_aspeed_apb2opb_realize()
320 memcpy(s->regs, aspeed_apb2opb_reset, ASPEED_APB2OPB_NR_REGS); in fsi_aspeed_apb2opb_reset()
323 static void fsi_aspeed_apb2opb_class_init(ObjectClass *klass, const void *data) in fsi_aspeed_apb2opb_class_init() argument
327 dc->desc = "ASPEED APB2OPB Bridge"; in fsi_aspeed_apb2opb_class_init()
328 dc->realize = fsi_aspeed_apb2opb_realize; in fsi_aspeed_apb2opb_class_init()
351 memory_region_init(&opb->mr, 0, TYPE_FSI_OPB, UINT32_MAX); in fsi_opb_init()
352 address_space_init(&opb->as, &opb->mr, TYPE_FSI_OPB); in fsi_opb_init()