Lines Matching +full:parent +full:- +full:locked

7  * the COPYING file in the top-level directory.
13 #include "qemu/error-report.h"
15 #include "hw/qdev-properties.h"
102 * what we care about right now as it is checked by U-Boot to
164 if (addr >= ARRAY_SIZE(s->regs)) { in aspeed_sdmc_read()
166 "%s: Out-of-bounds read at offset 0x%" HWADDR_PRIx "\n", in aspeed_sdmc_read()
171 trace_aspeed_sdmc_read(addr, s->regs[addr]); in aspeed_sdmc_read()
172 return s->regs[addr]; in aspeed_sdmc_read()
183 if (addr >= ARRAY_SIZE(s->regs)) { in aspeed_sdmc_write()
185 "%s: Out-of-bounds write at offset 0x%" HWADDR_PRIx "\n", in aspeed_sdmc_write()
191 asc->write(s, addr, data); in aspeed_sdmc_write()
207 memset(s->regs, 0, sizeof(s->regs)); in aspeed_sdmc_reset()
210 s->regs[R_CONF] = asc->compute_conf(s, 0); in aspeed_sdmc_reset()
214 * - set phy status ok (set bit 1) in aspeed_sdmc_reset()
215 * - initial PVT calibration ok (clear bit 3) in aspeed_sdmc_reset()
216 * - runtime calibration ok (clear bit 5) in aspeed_sdmc_reset()
218 s->regs[0x100] = BIT(1); in aspeed_sdmc_reset()
221 s->regs[0x100 | (0x68 / 4)] = 0xff; in aspeed_sdmc_reset()
222 s->regs[0x100 | (0x7c / 4)] = 0xff; in aspeed_sdmc_reset()
223 s->regs[0x100 | (0x50 / 4)] = 0xfffffff; in aspeed_sdmc_reset()
230 int64_t value = s->ram_size; in aspeed_sdmc_get_ram_size()
248 for (i = 0; asc->valid_ram_sizes[i]; i++) { in aspeed_sdmc_set_ram_size()
249 if (value == asc->valid_ram_sizes[i]) { in aspeed_sdmc_set_ram_size()
250 s->ram_size = value; in aspeed_sdmc_set_ram_size()
262 object_property_add(obj, "ram-size", "int", in aspeed_sdmc_initfn()
273 assert(asc->max_ram_size < 4 * GiB || asc->is_bus64bit); in aspeed_sdmc_realize()
275 if (!s->ram_size) { in aspeed_sdmc_realize()
280 s->max_ram_size = asc->max_ram_size; in aspeed_sdmc_realize()
282 memory_region_init_io(&s->iomem, OBJECT(s), &aspeed_sdmc_ops, s, in aspeed_sdmc_realize()
284 sysbus_init_mmio(sbd, &s->iomem); in aspeed_sdmc_realize()
298 DEFINE_PROP_UINT64("max-ram-size", AspeedSDMCState, max_ram_size, 0),
305 dc->realize = aspeed_sdmc_realize; in aspeed_sdmc_class_init()
307 dc->desc = "ASPEED SDRAM Memory Controller"; in aspeed_sdmc_class_init()
308 dc->vmsd = &vmstate_aspeed_sdmc; in aspeed_sdmc_class_init()
314 .parent = TYPE_SYS_BUS_DEVICE,
331 for (i = 0; asc->valid_ram_sizes[i]; i++) { in aspeed_sdmc_get_ram_bits()
332 if (s->ram_size == asc->valid_ram_sizes[i]) { in aspeed_sdmc_get_ram_bits()
359 s->regs[reg] = in aspeed_2400_sdmc_write()
364 if (!s->regs[R_PROT]) { in aspeed_2400_sdmc_write()
365 qemu_log_mask(LOG_GUEST_ERROR, "%s: SDMC is locked!\n", __func__); in aspeed_2400_sdmc_write()
377 s->regs[reg] = data; in aspeed_2400_sdmc_write()
388 dc->desc = "ASPEED 2400 SDRAM Memory Controller"; in aspeed_2400_sdmc_class_init()
389 asc->max_ram_size = 512 * MiB; in aspeed_2400_sdmc_class_init()
390 asc->compute_conf = aspeed_2400_sdmc_compute_conf; in aspeed_2400_sdmc_class_init()
391 asc->write = aspeed_2400_sdmc_write; in aspeed_2400_sdmc_class_init()
392 asc->valid_ram_sizes = aspeed_2400_ram_sizes; in aspeed_2400_sdmc_class_init()
397 .parent = TYPE_ASPEED_SDMC,
418 s->regs[reg] = in aspeed_2500_sdmc_write()
423 if (!s->regs[R_PROT]) { in aspeed_2500_sdmc_write()
424 qemu_log_mask(LOG_GUEST_ERROR, "%s: SDMC is locked!\n", __func__); in aspeed_2500_sdmc_write()
445 s->regs[reg] = data; in aspeed_2500_sdmc_write()
456 dc->desc = "ASPEED 2500 SDRAM Memory Controller"; in aspeed_2500_sdmc_class_init()
457 asc->max_ram_size = 1 * GiB; in aspeed_2500_sdmc_class_init()
458 asc->compute_conf = aspeed_2500_sdmc_compute_conf; in aspeed_2500_sdmc_class_init()
459 asc->write = aspeed_2500_sdmc_write; in aspeed_2500_sdmc_class_init()
460 asc->valid_ram_sizes = aspeed_2500_ram_sizes; in aspeed_2500_sdmc_class_init()
465 .parent = TYPE_ASPEED_SDMC,
494 s->regs[reg] = data; in aspeed_2600_sdmc_write()
498 if (s->regs[R_PROT] == PROT_HARDLOCKED) { in aspeed_2600_sdmc_write()
500 "%s: SDMC is locked until system reset!\n", in aspeed_2600_sdmc_write()
505 if (reg != R_PROT && s->regs[R_PROT] == PROT_SOFTLOCKED) { in aspeed_2600_sdmc_write()
507 "%s: SDMC is locked! (write to MCR%02x blocked)\n", in aspeed_2600_sdmc_write()
539 s->regs[reg] = data; in aspeed_2600_sdmc_write()
550 dc->desc = "ASPEED 2600 SDRAM Memory Controller"; in aspeed_2600_sdmc_class_init()
551 asc->max_ram_size = 2 * GiB; in aspeed_2600_sdmc_class_init()
552 asc->compute_conf = aspeed_2600_sdmc_compute_conf; in aspeed_2600_sdmc_class_init()
553 asc->write = aspeed_2600_sdmc_write; in aspeed_2600_sdmc_class_init()
554 asc->valid_ram_sizes = aspeed_2600_ram_sizes; in aspeed_2600_sdmc_class_init()
559 .parent = TYPE_ASPEED_SDMC,
568 memset(s->regs, 0, sizeof(s->regs)); in aspeed_2700_sdmc_reset()
571 s->regs[R_MAIN_CONF] = asc->compute_conf(s, 0); in aspeed_2700_sdmc_reset()
573 if (s->unlocked) { in aspeed_2700_sdmc_reset()
574 s->regs[R_2700_PROT] = PROT_UNLOCKED; in aspeed_2700_sdmc_reset()
627 s->regs[reg] = data; in aspeed_2700_sdmc_write()
631 if (s->regs[R_2700_PROT] == PROT_HARDLOCKED) { in aspeed_2700_sdmc_write()
633 "%s: SDMC is locked until system reset!\n", in aspeed_2700_sdmc_write()
638 if (reg != R_2700_PROT && s->regs[R_2700_PROT] == PROT_SOFTLOCKED) { in aspeed_2700_sdmc_write()
640 "%s: SDMC is locked! (write to MCR%02x blocked)\n", in aspeed_2700_sdmc_write()
666 s->regs[reg] = data; in aspeed_2700_sdmc_write()
678 dc->desc = "ASPEED 2700 SDRAM Memory Controller"; in aspeed_2700_sdmc_class_init()
681 asc->is_bus64bit = true; in aspeed_2700_sdmc_class_init()
682 asc->max_ram_size = 8 * GiB; in aspeed_2700_sdmc_class_init()
683 asc->compute_conf = aspeed_2700_sdmc_compute_conf; in aspeed_2700_sdmc_class_init()
684 asc->write = aspeed_2700_sdmc_write; in aspeed_2700_sdmc_class_init()
685 asc->valid_ram_sizes = aspeed_2700_ram_sizes; in aspeed_2700_sdmc_class_init()
690 .parent = TYPE_ASPEED_SDMC,