1*bb3d5ea8SPhilippe Mathieu-Daudé /* 2*bb3d5ea8SPhilippe Mathieu-Daudé * QEMU Parallel PORT (ISA bus helpers) 3*bb3d5ea8SPhilippe Mathieu-Daudé * 4*bb3d5ea8SPhilippe Mathieu-Daudé * Copyright (c) 2003 Fabrice Bellard 5*bb3d5ea8SPhilippe Mathieu-Daudé * 6*bb3d5ea8SPhilippe Mathieu-Daudé * SPDX-License-Identifier: MIT 7*bb3d5ea8SPhilippe Mathieu-Daudé */ 8*bb3d5ea8SPhilippe Mathieu-Daudé #include "qemu/osdep.h" 9*bb3d5ea8SPhilippe Mathieu-Daudé #include "sysemu/sysemu.h" 10*bb3d5ea8SPhilippe Mathieu-Daudé #include "hw/isa/isa.h" 11*bb3d5ea8SPhilippe Mathieu-Daudé #include "hw/char/parallel.h" 12*bb3d5ea8SPhilippe Mathieu-Daudé 13*bb3d5ea8SPhilippe Mathieu-Daudé static void parallel_init(ISABus *bus, int index, Chardev *chr) 14*bb3d5ea8SPhilippe Mathieu-Daudé { 15*bb3d5ea8SPhilippe Mathieu-Daudé DeviceState *dev; 16*bb3d5ea8SPhilippe Mathieu-Daudé ISADevice *isadev; 17*bb3d5ea8SPhilippe Mathieu-Daudé 18*bb3d5ea8SPhilippe Mathieu-Daudé isadev = isa_create(bus, "isa-parallel"); 19*bb3d5ea8SPhilippe Mathieu-Daudé dev = DEVICE(isadev); 20*bb3d5ea8SPhilippe Mathieu-Daudé qdev_prop_set_uint32(dev, "index", index); 21*bb3d5ea8SPhilippe Mathieu-Daudé qdev_prop_set_chr(dev, "chardev", chr); 22*bb3d5ea8SPhilippe Mathieu-Daudé qdev_init_nofail(dev); 23*bb3d5ea8SPhilippe Mathieu-Daudé } 24*bb3d5ea8SPhilippe Mathieu-Daudé 25*bb3d5ea8SPhilippe Mathieu-Daudé void parallel_hds_isa_init(ISABus *bus, int n) 26*bb3d5ea8SPhilippe Mathieu-Daudé { 27*bb3d5ea8SPhilippe Mathieu-Daudé int i; 28*bb3d5ea8SPhilippe Mathieu-Daudé 29*bb3d5ea8SPhilippe Mathieu-Daudé assert(n <= MAX_PARALLEL_PORTS); 30*bb3d5ea8SPhilippe Mathieu-Daudé 31*bb3d5ea8SPhilippe Mathieu-Daudé for (i = 0; i < n; i++) { 32*bb3d5ea8SPhilippe Mathieu-Daudé if (parallel_hds[i]) { 33*bb3d5ea8SPhilippe Mathieu-Daudé parallel_init(bus, i, parallel_hds[i]); 34*bb3d5ea8SPhilippe Mathieu-Daudé } 35*bb3d5ea8SPhilippe Mathieu-Daudé } 36*bb3d5ea8SPhilippe Mathieu-Daudé } 37