Changeset b25970f in mainline for uspace/drv/bus/isa/isa.c


Ignore:
Timestamp:
2018-10-29T14:11:39Z (5 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
94ab1fe
Parents:
184f2f8a
git-author:
Jiri Svoboda <jiri@…> (2018-10-28 22:10:25)
git-committer:
Jiri Svoboda <jiri@…> (2018-10-29 14:11:39)
Message:

Fix ISA-only PC support.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/isa/isa.c

    r184f2f8a rb25970f  
    11/*
     2 * Copyright (c) 2018 Jiri Svoboda
    23 * Copyright (c) 2010 Lenka Trochtova
    3  * Copyright (c) 2011 Jiri Svoboda
    44 * Copyright (c) 2011 Jan Vesely
    55 * All rights reserved.
     
    697697}
    698698
    699 static errno_t isa_dev_add(ddf_dev_t *dev)
    700 {
    701         async_sess_t *sess;
     699static errno_t isa_read_pci_cfg(isa_bus_t *isa, async_sess_t *sess)
     700{
    702701        errno_t rc;
    703 
    704         ddf_msg(LVL_DEBUG, "isa_dev_add, device handle = %d",
    705             (int) ddf_dev_get_handle(dev));
    706 
    707         isa_bus_t *isa = ddf_dev_data_alloc(dev, sizeof(isa_bus_t));
    708         if (isa == NULL)
    709                 return ENOMEM;
    710 
    711         fibril_mutex_initialize(&isa->mutex);
    712         isa->dev = dev;
    713         list_initialize(&isa->functions);
    714 
    715         sess = ddf_dev_parent_sess_get(dev);
    716         if (sess == NULL) {
    717                 ddf_msg(LVL_ERROR, "isa_dev_add failed to connect to the "
    718                     "parent driver.");
    719                 return ENOENT;
    720         }
    721702
    722703        rc = pci_config_space_read_16(sess, PCI_VENDOR_ID, &isa->pci_vendor_id);
     
    733714                return rc;
    734715
     716        return EOK;
     717}
     718
     719static errno_t isa_dev_add(ddf_dev_t *dev)
     720{
     721        async_sess_t *sess;
     722        errno_t rc;
     723
     724        ddf_msg(LVL_DEBUG, "isa_dev_add, device handle = %d",
     725            (int) ddf_dev_get_handle(dev));
     726
     727        isa_bus_t *isa = ddf_dev_data_alloc(dev, sizeof(isa_bus_t));
     728        if (isa == NULL)
     729                return ENOMEM;
     730
     731        fibril_mutex_initialize(&isa->mutex);
     732        isa->dev = dev;
     733        list_initialize(&isa->functions);
     734
     735        sess = ddf_dev_parent_sess_get(dev);
     736        if (sess == NULL) {
     737                ddf_msg(LVL_ERROR, "isa_dev_add failed to connect to the "
     738                    "parent driver.");
     739                return ENOENT;
     740        }
     741
     742        rc = isa_read_pci_cfg(isa, sess);
     743        if (rc != EOK) {
     744                ddf_msg(LVL_NOTE, "Cannot read PCI config. Assuming ISA classic.");
     745                isa->pci_vendor_id = 0;
     746                isa->pci_device_id = 0;
     747                isa->pci_class = BASE_CLASS_BRIDGE;
     748                isa->pci_subclass = SUB_CLASS_BRIDGE_ISA;
     749        }
     750
    735751        rc = pio_window_get(sess, &isa->pio_win);
    736752        if (rc != EOK) {
Note: See TracChangeset for help on using the changeset viewer.