Lines Matching +full:neo +full:- +full:8
1 // SPDX-License-Identifier: GPL-2.0-or-later
7 * 2000-01-01 Added quirks handling for buggy hardware
8 * Peter Denison <peterd@pnd-pc.demon.co.uk>
9 * 2000-06-14 Added isapnp_probe_devs() and isapnp_activate_dev()
11 * 2001-06-03 Added release_region calls to correspond with
14 * 2001-11-07 Added isapnp_{,un}register_driver calls along the lines
17 * 2002-06-06 Made the use of dma channel 0 configurable
19 * 2002-10-06 Ported to PnP Layer - Adam Belay <ambx1@neo.rr.com>
20 * 2003-08-11 Resource Management Updates - Adam Belay <ambx1@neo.rr.com>
79 #define ISAPNP_CFG_PORT 0x60 /* 8 * word */
85 * See PNP-ISA-v1.0a.pdf, Appendix A.
88 #define ISAPNP_MAX_PORT 8
126 val = (val << 8) + isapnp_read_byte(idx + 1); in isapnp_read_word()
138 isapnp_write_byte(idx, val >> 8); in isapnp_write_word()
160 /* place all pnp cards in wait-for-key state */
238 return -1; in isapnp_next_rdp()
267 return -1; in isapnp_isolate_rdp_select()
292 return -1; in isapnp_isolate()
296 data = read_data() << 8; in isapnp_isolate()
308 data = read_data() << 8; in isapnp_isolate()
313 chksum |= (1 << (i - 65)); in isapnp_isolate()
331 return -1; in isapnp_isolate()
356 return -1; in isapnp_read_tag()
360 *size = (tmp[1] << 8) | tmp[0]; in isapnp_read_tag()
366 return -1; in isapnp_read_tag()
387 char id[8]; in isapnp_parse_device()
390 eisa_id = tmp[0] | tmp[1] << 8 | tmp[2] << 16 | tmp[3] << 24; in isapnp_parse_device()
397 dev->card = card; in isapnp_parse_device()
398 dev->capabilities |= PNP_CONFIGURABLE; in isapnp_parse_device()
399 dev->capabilities |= PNP_READ; in isapnp_parse_device()
400 dev->capabilities |= PNP_WRITE; in isapnp_parse_device()
401 dev->capabilities |= PNP_DISABLE; in isapnp_parse_device()
419 bits = (tmp[1] << 8) | tmp[0]; in isapnp_parse_irq_resource()
455 min = (tmp[2] << 8) | tmp[1]; in isapnp_parse_port_resource()
456 max = (tmp[4] << 8) | tmp[3]; in isapnp_parse_port_resource()
475 base = (tmp[1] << 8) | tmp[0]; in isapnp_parse_fixed_port_resource()
493 min = ((tmp[2] << 8) | tmp[1]) << 8; in isapnp_parse_mem_resource()
494 max = ((tmp[4] << 8) | tmp[3]) << 8; in isapnp_parse_mem_resource()
495 align = (tmp[6] << 8) | tmp[5]; in isapnp_parse_mem_resource()
496 len = ((tmp[8] << 8) | tmp[7]) << 8; in isapnp_parse_mem_resource()
503 * Add 32-bit memory resource to resources list.
514 min = (tmp[4] << 24) | (tmp[3] << 16) | (tmp[2] << 8) | tmp[1]; in isapnp_parse_mem32_resource()
515 max = (tmp[8] << 24) | (tmp[7] << 16) | (tmp[6] << 8) | tmp[5]; in isapnp_parse_mem32_resource()
516 align = (tmp[12] << 24) | (tmp[11] << 16) | (tmp[10] << 8) | tmp[9]; in isapnp_parse_mem32_resource()
517 len = (tmp[16] << 24) | (tmp[15] << 16) | (tmp[14] << 8) | tmp[13]; in isapnp_parse_mem32_resource()
524 * Add 32-bit fixed memory resource to resources list.
535 base = (tmp[4] << 24) | (tmp[3] << 16) | (tmp[2] << 8) | tmp[1]; in isapnp_parse_fixed_mem32_resource()
536 len = (tmp[8] << 24) | (tmp[7] << 16) | (tmp[6] << 8) | tmp[5]; in isapnp_parse_fixed_mem32_resource()
549 *size >= name_max ? (name_max - 1) : *size; in isapnp_parse_name()
552 *size -= size1; in isapnp_parse_name()
555 while (size1 > 0 && name[--size1] == ' ') in isapnp_parse_name()
571 char id[8]; in isapnp_create_device()
602 eisa_id = tmp[0] | tmp[1] << 8 | in isapnp_create_device()
660 isapnp_parse_name(dev->name, sizeof(dev->name), &size); in isapnp_create_device()
686 dev_err(&dev->dev, "unknown tag %#x (card %i), " in isapnp_create_device()
687 "ignored\n", type, card->number); in isapnp_create_device()
712 card->pnpver = tmp[0]; in isapnp_parse_resource_map()
713 card->productver = tmp[1]; in isapnp_parse_resource_map()
726 isapnp_parse_name(card->name, sizeof(card->name), in isapnp_parse_resource_map()
740 dev_err(&card->dev, "unknown tag %#x, ignored\n", in isapnp_parse_resource_map()
758 char id[8]; in isapnp_build_device_list()
765 eisa_id = header[0] | header[1] << 8 | in isapnp_build_device_list()
772 INIT_LIST_HEAD(&card->devices); in isapnp_build_device_list()
773 card->serial = in isapnp_build_device_list()
774 (header[7] << 24) | (header[6] << 16) | (header[5] << 8) | in isapnp_build_device_list()
779 dev_err(&card->dev, "invalid checksum %#x\n", in isapnp_build_device_list()
781 card->checksum = isapnp_checksum_value; in isapnp_build_device_list()
798 if (card->protocol == &isapnp_protocol) in isapnp_present()
807 return -EINVAL; in isapnp_cfg_begin()
816 /* Jens Thoms Toerring <[email protected]-berlin.de> */ in isapnp_cfg_begin()
852 pnp_dbg(&dev->dev, "get resources\n"); in isapnp_get_resources()
854 isapnp_cfg_begin(dev->card->number, dev->number); in isapnp_get_resources()
855 dev->active = isapnp_read_byte(ISAPNP_CFG_ACTIVATE); in isapnp_get_resources()
856 if (!dev->active) in isapnp_get_resources()
865 ret = isapnp_read_word(ISAPNP_CFG_MEM + (i << 3)) << 8; in isapnp_get_resources()
870 ret = isapnp_read_word(ISAPNP_CFG_IRQ + (i << 1)) >> 8; in isapnp_get_resources()
890 pnp_dbg(&dev->dev, "set resources\n"); in isapnp_set_resources()
891 isapnp_cfg_begin(dev->card->number, dev->number); in isapnp_set_resources()
892 dev->active = 1; in isapnp_set_resources()
896 pnp_dbg(&dev->dev, " set io %d to %#llx\n", in isapnp_set_resources()
897 tmp, (unsigned long long) res->start); in isapnp_set_resources()
899 res->start); in isapnp_set_resources()
905 int irq = res->start; in isapnp_set_resources()
908 pnp_dbg(&dev->dev, " set irq %d to %d\n", tmp, irq); in isapnp_set_resources()
915 pnp_dbg(&dev->dev, " set dma %d to %lld\n", in isapnp_set_resources()
916 tmp, (unsigned long long) res->start); in isapnp_set_resources()
917 isapnp_write_byte(ISAPNP_CFG_DMA + tmp, res->start); in isapnp_set_resources()
923 pnp_dbg(&dev->dev, " set mem %d to %#llx\n", in isapnp_set_resources()
924 tmp, (unsigned long long) res->start); in isapnp_set_resources()
926 (res->start >> 8) & 0xffff); in isapnp_set_resources()
930 isapnp_activate(dev->number); in isapnp_set_resources()
937 if (!dev->active) in isapnp_disable_resources()
938 return -EINVAL; in isapnp_disable_resources()
939 isapnp_cfg_begin(dev->card->number, dev->number); in isapnp_disable_resources()
940 isapnp_deactivate(dev->number); in isapnp_disable_resources()
941 dev->active = 0; in isapnp_disable_resources()
965 return -EINVAL; in isapnp_init()
971 return -EBUSY; in isapnp_init()
981 return -EBUSY; in isapnp_init()
985 return -EBUSY; in isapnp_init()
1003 return -EBUSY; in isapnp_init()
1026 dev_info(&card->dev, "card '%s'\n", in isapnp_init()
1027 card->name[0] ? card->name : "unknown"); in isapnp_init()
1031 dev_info(&card->dev, "device '%s'\n", in isapnp_init()
1032 dev->name[0] ? dev->name : "unknown"); in isapnp_init()