Lines Matching +full:modem +full:- +full:init

4  * Copyright (c) 2003-2005 Fabrice Bellard
32 #include "qemu/error-report.h"
46 #include "hw/qdev-properties.h"
53 #include "hw/or-irq.h"
80 #define PROM_FILENAME "openbios-sparc32"
118 #define TYPE_SUN4M_MACHINE MACHINE_TYPE_NAME("sun4m-common")
163 chrp_nvram_create_free_partition(&image[sysp_end], 0x1fd0 - sysp_end); in nvram_init()
169 (k->write)(nvram, i, image[i]); in nvram_init()
175 CPUSPARCState *env = &cpu->env; in cpu_kick_irq()
178 cs->halted = 0; in cpu_kick_irq()
186 CPUSPARCState *env = &cpu->env; in cpu_set_irq()
190 env->pil_in |= 1 << irq; in cpu_set_irq()
194 env->pil_in &= ~(1 << irq); in cpu_set_irq()
220 return addr - 0xf0000000ULL; in translate_kernel_address()
243 RAM_size - KERNEL_LOAD_ADDR, true, in sun4m_load_kernel()
248 RAM_size - KERNEL_LOAD_ADDR); in sun4m_load_kernel()
259 RAM_size - INITRD_LOAD_ADDR); in sun4m_load_kernel()
321 memcpy(mac->a, nd->macaddr.a, sizeof(mac->a)); in sparc32_dma_init()
324 qdev_prop_set_macaddr(DEVICE(lance), "mac", mac->a); in sparc32_dma_init()
336 scsi_bus_legacy_handle_cmdline(&esp->esp.bus); in sparc32_dma_init()
426 /* Modem control */ in slavio_misc_init()
460 if (version == 0) { // SS-600MP only in ecc_init()
484 dev = qdev_new("sun-tcx"); in tcx_init()
516 /* 0/DFB8 : 8-bit plane */ in tcx_init()
522 /* 9/THC24bits : NetBSD writes here even with 8-bit display: dummy */ in tcx_init()
537 qdev_prop_set_uint32(dev, "vram-size", vram_size); in cg3_init()
548 /* 8-bit plane */ in cg3_init()
588 if (!memory_region_init_ram_nomigrate(&s->mem, OBJECT(ds), "sun4m.idreg", in idreg_realize()
593 vmstate_register_ram_global(&s->mem); in idreg_realize()
594 memory_region_set_readonly(&s->mem, true); in idreg_realize()
595 sysbus_init_mmio(dev, &s->mem); in idreg_realize()
602 dc->realize = idreg_realize; in idreg_class_init()
621 /* SS-5 TCX AFX register */
639 if (!memory_region_init_ram_nomigrate(&s->mem, OBJECT(ds), "sun4m.afx", in afx_realize()
644 vmstate_register_ram_global(&s->mem); in afx_realize()
645 sysbus_init_mmio(dev, &s->mem); in afx_realize()
652 dc->realize = afx_realize; in afx_class_init()
677 return addr + *base_addr - PROM_VADDR; in translate_prom_address()
707 ret = -1; in prom_init()
720 if (!memory_region_init_ram_nomigrate(&s->prom, OBJECT(ds), "sun4m.prom", in prom_realize()
725 vmstate_register_ram_global(&s->prom); in prom_realize()
726 memory_region_set_readonly(&s->prom, true); in prom_realize()
727 sysbus_init_mmio(dev, &s->prom); in prom_realize()
734 dc->realize = prom_realize; in prom_class_init()
758 MemoryRegion *ram = host_memory_backend_get_memory(d->memdev); in ram_realize()
767 (Object **)&d->memdev, in ram_initfn()
778 dc->realize = ram_realize; in ram_class_init()
796 env = &cpu->env; in cpu_devinit()
799 object_property_set_bool(OBJECT(cpu), "start-powered-off", id != 0, in cpu_devinit()
804 env->prom_addr = prom_addr; in cpu_devinit()
813 const struct sun4m_hwdef *hwdef = SUN4M_MACHINE_GET_CLASS(machine)->hwdef; in sun4m_hw_init()
825 unsigned int smp_cpus = machine->smp.cpus; in sun4m_hw_init()
826 unsigned int max_cpus = machine->smp.max_cpus; in sun4m_hw_init()
827 HostMemoryBackend *ram_memdev = machine->memdev; in sun4m_hw_init()
830 if (machine->ram_size > hwdef->max_mem) { in sun4m_hw_init()
833 machine->ram_size / MiB, hwdef->max_mem / MiB); in sun4m_hw_init()
837 /* init CPUs */ in sun4m_hw_init()
839 cpu_devinit(machine->cpu_type, i, hwdef->slavio_base, &cpu_irqs[i]); in sun4m_hw_init()
852 if (!hwdef->ecc_base) { in sun4m_hw_init()
853 empty_slot_init("ecc", machine->ram_size, in sun4m_hw_init()
854 hwdef->max_mem - machine->ram_size); in sun4m_hw_init()
857 prom_init(hwdef->slavio_base, machine->firmware); in sun4m_hw_init()
859 slavio_intctl = slavio_intctl_init(hwdef->intctl_base, in sun4m_hw_init()
860 hwdef->intctl_base + 0x10000ULL, in sun4m_hw_init()
870 if (hwdef->idreg_base) { in sun4m_hw_init()
871 idreg_init(hwdef->idreg_base); in sun4m_hw_init()
874 if (hwdef->afx_base) { in sun4m_hw_init()
875 afx_init(hwdef->afx_base); in sun4m_hw_init()
878 iommu_init(hwdef->iommu_base, hwdef->iommu_version, slavio_irq[30]); in sun4m_hw_init()
880 if (hwdef->iommu_pad_base) { in sun4m_hw_init()
881 /* On the real hardware (SS-5, LX) the MMU is not padded, but aliased. in sun4m_hw_init()
886 hwdef->iommu_pad_base, hwdef->iommu_pad_len); in sun4m_hw_init()
889 sparc32_dma_init(hwdef->dma_base, in sun4m_hw_init()
890 hwdef->esp_base, slavio_irq[18], in sun4m_hw_init()
891 hwdef->le_base, slavio_irq[16], &hostid); in sun4m_hw_init()
912 cg3_init(hwdef->tcx_base, slavio_irq[11], 0x00100000, in sun4m_hw_init()
928 tcx_init(hwdef->tcx_base, slavio_irq[11], 0x00100000, in sun4m_hw_init()
936 if (hwdef->vsimm[i].reg_base) { in sun4m_hw_init()
938 empty_slot_init(name, hwdef->vsimm[i].reg_base, 0x2000); in sun4m_hw_init()
943 if (hwdef->sx_base) { in sun4m_hw_init()
944 create_unimplemented_device("sun-sx", hwdef->sx_base, 0x2000); in sun4m_hw_init()
947 dev = qdev_new("sysbus-m48t08"); in sun4m_hw_init()
948 qdev_prop_set_int32(dev, "base-year", 1968); in sun4m_hw_init()
952 sysbus_mmio_map(s, 0, hwdef->nvram_base); in sun4m_hw_init()
955 slavio_timer_init_all(hwdef->counter_base, slavio_irq[19], slavio_cpu_irq, smp_cpus); in sun4m_hw_init()
960 qdev_prop_set_uint32(dev, "disabled", !machine->enable_graphics); in sun4m_hw_init()
969 sysbus_mmio_map(s, 0, hwdef->ms_kb_base); in sun4m_hw_init()
973 object_property_set_int(OBJECT(ms_kb_orgate), "num-lines", 2, &error_fatal); in sun4m_hw_init()
990 sysbus_mmio_map(s, 0, hwdef->serial_base); in sun4m_hw_init()
994 object_property_set_int(OBJECT(serial_orgate), "num-lines", 2, in sun4m_hw_init()
1001 if (hwdef->apc_base) { in sun4m_hw_init()
1002 apc_init(hwdef->apc_base, qemu_allocate_irq(cpu_halt_signal, NULL, 0)); in sun4m_hw_init()
1005 if (hwdef->fd_base) { in sun4m_hw_init()
1009 sun4m_fdctrl_init(slavio_irq[22], hwdef->fd_base, fd, in sun4m_hw_init()
1015 slavio_misc_init(hwdef->slavio_base, hwdef->aux1_base, hwdef->aux2_base, in sun4m_hw_init()
1018 if (hwdef->cs_base) { in sun4m_hw_init()
1019 sysbus_create_simple("sun-CS4231", hwdef->cs_base, in sun4m_hw_init()
1023 if (hwdef->dbri_base) { in sun4m_hw_init()
1026 create_unimplemented_device("sun-DBRI.prom", in sun4m_hw_init()
1027 hwdef->dbri_base + 0x1000, 0x30); in sun4m_hw_init()
1029 create_unimplemented_device("sun-DBRI", in sun4m_hw_init()
1030 hwdef->dbri_base + 0x10000, 0x100); in sun4m_hw_init()
1033 if (hwdef->bpp_base) { in sun4m_hw_init()
1035 create_unimplemented_device("sun-bpp", hwdef->bpp_base, 0x20); in sun4m_hw_init()
1039 kernel_size = sun4m_load_kernel(machine->kernel_filename, in sun4m_hw_init()
1040 machine->initrd_filename, in sun4m_hw_init()
1041 machine->ram_size, &initrd_size); in sun4m_hw_init()
1043 nvram_init(nvram, hostid.a, machine->kernel_cmdline, in sun4m_hw_init()
1044 machine->boot_config.order, machine->ram_size, kernel_size, in sun4m_hw_init()
1046 hwdef->nvram_machine_id, "Sun4m"); in sun4m_hw_init()
1048 if (hwdef->ecc_base) in sun4m_hw_init()
1049 ecc_init(hwdef->ecc_base, slavio_irq[28], in sun4m_hw_init()
1050 hwdef->ecc_version); in sun4m_hw_init()
1065 fw_cfg_add_i64(fw_cfg, FW_CFG_RAM_SIZE, (uint64_t)machine->ram_size); in sun4m_hw_init()
1066 fw_cfg_add_i16(fw_cfg, FW_CFG_MACHINE_ID, hwdef->machine_id); in sun4m_hw_init()
1072 if (machine->kernel_cmdline) { in sun4m_hw_init()
1075 machine->kernel_cmdline); in sun4m_hw_init()
1076 fw_cfg_add_string(fw_cfg, FW_CFG_CMDLINE_DATA, machine->kernel_cmdline); in sun4m_hw_init()
1078 strlen(machine->kernel_cmdline) + 1); in sun4m_hw_init()
1085 fw_cfg_add_i16(fw_cfg, FW_CFG_BOOT_DEVICE, machine->boot_config.order[0]); in sun4m_hw_init()
1105 mc->init = sun4m_hw_init; in sun4m_machine_class_init()
1106 mc->block_default_type = IF_SCSI; in sun4m_machine_class_init()
1107 mc->default_boot_order = "c"; in sun4m_machine_class_init()
1108 mc->default_display = "tcx"; in sun4m_machine_class_init()
1109 mc->default_ram_id = "sun4m.ram"; in sun4m_machine_class_init()
1143 mc->desc = "Sun4m platform, SPARCstation 5"; in ss5_class_init()
1144 mc->is_default = true; in ss5_class_init()
1145 mc->default_cpu_type = SPARC_CPU_TYPE_NAME("Fujitsu-MB86904"); in ss5_class_init()
1146 smc->hwdef = &ss5_hwdef; in ss5_class_init()
1178 mc->desc = "Sun4m platform, SPARCstation 10"; in ss10_class_init()
1179 mc->max_cpus = 4; in ss10_class_init()
1180 mc->default_cpu_type = SPARC_CPU_TYPE_NAME("TI-SuperSparc-II"); in ss10_class_init()
1181 smc->hwdef = &ss10_hwdef; in ss10_class_init()
1211 mc->desc = "Sun4m platform, SPARCserver 600MP"; in ss600mp_class_init()
1212 mc->max_cpus = 4; in ss600mp_class_init()
1213 mc->default_cpu_type = SPARC_CPU_TYPE_NAME("TI-SuperSparc-II"); in ss600mp_class_init()
1214 smc->hwdef = &ss600mp_hwdef; in ss600mp_class_init()
1262 mc->desc = "Sun4m platform, SPARCstation 20"; in ss20_class_init()
1263 mc->max_cpus = 4; in ss20_class_init()
1264 mc->default_cpu_type = SPARC_CPU_TYPE_NAME("TI-SuperSparc-II"); in ss20_class_init()
1265 smc->hwdef = &ss20_hwdef; in ss20_class_init()
1295 mc->desc = "Sun4m platform, SPARCstation Voyager"; in voyager_class_init()
1296 mc->default_cpu_type = SPARC_CPU_TYPE_NAME("Fujitsu-MB86904"); in voyager_class_init()
1297 smc->hwdef = &voyager_hwdef; in voyager_class_init()
1328 mc->desc = "Sun4m platform, SPARCstation LX"; in ss_lx_class_init()
1329 mc->default_cpu_type = SPARC_CPU_TYPE_NAME("TI-MicroSparc-I"); in ss_lx_class_init()
1330 smc->hwdef = &ss_lx_hwdef; in ss_lx_class_init()
1361 mc->desc = "Sun4m platform, SPARCstation 4"; in ss4_class_init()
1362 mc->default_cpu_type = SPARC_CPU_TYPE_NAME("Fujitsu-MB86904"); in ss4_class_init()
1363 smc->hwdef = &ss4_hwdef; in ss4_class_init()
1393 mc->desc = "Sun4m platform, SPARCClassic"; in scls_class_init()
1394 mc->default_cpu_type = SPARC_CPU_TYPE_NAME("TI-MicroSparc-I"); in scls_class_init()
1395 smc->hwdef = &scls_hwdef; in scls_class_init()
1425 mc->desc = "Sun4m platform, SPARCbook"; in sbook_class_init()
1426 mc->default_cpu_type = SPARC_CPU_TYPE_NAME("TI-MicroSparc-I"); in sbook_class_init()
1427 smc->hwdef = &sbook_hwdef; in sbook_class_init()
1432 .name = MACHINE_TYPE_NAME("SS-5"),
1436 .name = MACHINE_TYPE_NAME("SS-10"),
1440 .name = MACHINE_TYPE_NAME("SS-600MP"),
1444 .name = MACHINE_TYPE_NAME("SS-20"),
1456 .name = MACHINE_TYPE_NAME("SS-4"),