Lines Matching +full:port +full:- +full:id
1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * Copyright (c) 1999-2001 Vojtech Pavlik
8 * NS558 based standard IBM game port driver for Linux
53 struct gameport *port; in ns558_isa_probe() local
59 if (!request_region(io, 1, "ns558-isa")) in ns558_isa_probe()
60 return -EBUSY; in ns558_isa_probe()
63 * We must not be able to write arbitrary values to the port. in ns558_isa_probe()
72 return -ENODEV; in ns558_isa_probe()
83 return -ENODEV; in ns558_isa_probe()
95 return -ENODEV; in ns558_isa_probe()
98 * And now find the number of mirrors of the port. in ns558_isa_probe()
103 release_region(io & (-1 << (i - 1)), (1 << (i - 1))); in ns558_isa_probe()
105 if (!request_region(io & (-1 << i), (1 << i), "ns558-isa")) in ns558_isa_probe()
108 outb(0xff, io & (-1 << i)); in ns558_isa_probe()
110 if (inb(io & (-1 << i)) != inb((io & (-1 << i)) + (1 << i) - 1)) b++; in ns558_isa_probe()
114 release_region(io & (-1 << i), (1 << i)); in ns558_isa_probe()
119 i--; in ns558_isa_probe()
122 if (!request_region(io & (-1 << i), (1 << i), "ns558-isa")) in ns558_isa_probe()
123 return -EBUSY; in ns558_isa_probe()
127 port = gameport_allocate_port(); in ns558_isa_probe()
128 if (!ns558 || !port) { in ns558_isa_probe()
130 release_region(io & (-1 << i), (1 << i)); in ns558_isa_probe()
132 gameport_free_port(port); in ns558_isa_probe()
133 return -ENOMEM; in ns558_isa_probe()
136 ns558->io = io; in ns558_isa_probe()
137 ns558->size = 1 << i; in ns558_isa_probe()
138 ns558->gameport = port; in ns558_isa_probe()
140 port->io = io; in ns558_isa_probe()
141 gameport_set_name(port, "NS558 ISA Gameport"); in ns558_isa_probe()
142 gameport_set_phys(port, "isa%04x/gameport0", io & (-1 << i)); in ns558_isa_probe()
144 gameport_register_port(port); in ns558_isa_probe()
146 list_add(&ns558->node, &ns558_list); in ns558_isa_probe()
154 { .id = "@P@0001", .driver_data = 0 }, /* ALS 100 */
155 { .id = "@P@0020", .driver_data = 0 }, /* ALS 200 */
156 { .id = "@P@1001", .driver_data = 0 }, /* ALS 100+ */
157 { .id = "@P@2001", .driver_data = 0 }, /* ALS 120 */
158 { .id = "ASB16fd", .driver_data = 0 }, /* AdLib NSC16 */
159 { .id = "AZT3001", .driver_data = 0 }, /* AZT1008 */
160 { .id = "CDC0001", .driver_data = 0 }, /* Opl3-SAx */
161 { .id = "CSC0001", .driver_data = 0 }, /* CS4232 */
162 { .id = "CSC000f", .driver_data = 0 }, /* CS4236 */
163 { .id = "CSC0101", .driver_data = 0 }, /* CS4327 */
164 { .id = "CTL7001", .driver_data = 0 }, /* SB16 */
165 { .id = "CTL7002", .driver_data = 0 }, /* AWE64 */
166 { .id = "CTL7005", .driver_data = 0 }, /* Vibra16 */
167 { .id = "ENS2020", .driver_data = 0 }, /* SoundscapeVIVO */
168 { .id = "ESS0001", .driver_data = 0 }, /* ES1869 */
169 { .id = "ESS0005", .driver_data = 0 }, /* ES1878 */
170 { .id = "ESS6880", .driver_data = 0 }, /* ES688 */
171 { .id = "IBM0012", .driver_data = 0 }, /* CS4232 */
172 { .id = "OPT0001", .driver_data = 0 }, /* OPTi Audio16 */
173 { .id = "YMH0006", .driver_data = 0 }, /* Opl3-SA */
174 { .id = "YMH0022", .driver_data = 0 }, /* Opl3-SAx */
175 { .id = "PNPb02f", .driver_data = 0 }, /* Generic */
176 { .id = "", },
185 struct gameport *port; in ns558_pnp_probe() local
189 return -ENODEV; in ns558_pnp_probe()
195 if (!request_region(ioport, iolen, "ns558-pnp")) in ns558_pnp_probe()
196 return -EBUSY; in ns558_pnp_probe()
199 port = gameport_allocate_port(); in ns558_pnp_probe()
200 if (!ns558 || !port) { in ns558_pnp_probe()
203 gameport_free_port(port); in ns558_pnp_probe()
204 return -ENOMEM; in ns558_pnp_probe()
207 ns558->io = ioport; in ns558_pnp_probe()
208 ns558->size = iolen; in ns558_pnp_probe()
209 ns558->dev = dev; in ns558_pnp_probe()
210 ns558->gameport = port; in ns558_pnp_probe()
212 gameport_set_name(port, "NS558 PnP Gameport"); in ns558_pnp_probe()
213 gameport_set_phys(port, "pnp%s/gameport0", dev_name(&dev->dev)); in ns558_pnp_probe()
214 port->dev.parent = &dev->dev; in ns558_pnp_probe()
215 port->io = ioport; in ns558_pnp_probe()
217 gameport_register_port(port); in ns558_pnp_probe()
219 list_add_tail(&ns558->node, &ns558_list); in ns558_pnp_probe()
241 if (error && error != -ENODEV) /* should be ENOSYS really */ in ns558_init()
246 * enabled get detected as PnP. This may be suboptimal in multi-device in ns558_init()
253 return list_empty(&ns558_list) && error ? -ENODEV : 0; in ns558_init()
261 gameport_unregister_port(ns558->gameport); in ns558_exit()
262 release_region(ns558->io & ~(ns558->size - 1), ns558->size); in ns558_exit()