Changeset 443695e in mainline for uspace/drv/bus/isa/isa.c


Ignore:
Timestamp:
2024-05-21T11:33:56Z (7 weeks ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master
Children:
3526f4f3
Parents:
1801005
git-author:
Jiri Svoboda <jiri@…> (2024-05-20 17:33:43)
git-committer:
Jiri Svoboda <jiri@…> (2024-05-21 11:33:56)
Message:

Basic PCI-IDE driver (no DMA support)

Also, make sure we avoid attaching ISA IDE and PCI IDE
at the same time. For simplicity, use ISA IDE on ISA systems
and PCI IDE on PCI-based systems.

File:
1 edited

Legend:

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

    r1801005 r443695e  
    7676typedef struct {
    7777        fibril_mutex_t mutex;
     78        bool pci_isa_bridge;
    7879        uint16_t pci_vendor_id;
    7980        uint16_t pci_device_id;
     
    9293        hw_resource_list_t hw_resources;
    9394        link_t bus_link;
     95        isa_bus_t *bus;
    9496} isa_fun_t;
    9597
     
    204206}
    205207
     208static errno_t isa_fun_get_flags(ddf_fun_t *fnode, hw_res_flags_t *rflags)
     209{
     210        isa_fun_t *fun = isa_fun(fnode);
     211        hw_res_flags_t flags;
     212
     213        flags = 0;
     214        if (fun->bus->pci_isa_bridge)
     215                flags |= hwf_isa_bridge;
     216
     217        ddf_msg(LVL_NOTE, "isa_fun_get_flags: returning 0x%x", flags);
     218        *rflags = flags;
     219        return EOK;
     220}
     221
    206222static hw_res_ops_t isa_fun_hw_res_ops = {
    207223        .get_resource_list = isa_fun_get_resources,
     
    211227        .dma_channel_setup = isa_fun_setup_dma,
    212228        .dma_channel_remain = isa_fun_remain_dma,
     229        .get_flags = isa_fun_get_flags
    213230};
    214231
     
    264281        fibril_mutex_initialize(&fun->mutex);
    265282        fun->hw_resources.resources = fun->resources;
     283        fun->bus = isa;
    266284
    267285        fun->fnode = fnode;
     
    743761        if (rc != EOK) {
    744762                ddf_msg(LVL_NOTE, "Cannot read PCI config. Assuming ISA classic.");
     763                isa->pci_isa_bridge = false;
    745764                isa->pci_vendor_id = 0;
    746765                isa->pci_device_id = 0;
    747766                isa->pci_class = BASE_CLASS_BRIDGE;
    748767                isa->pci_subclass = SUB_CLASS_BRIDGE_ISA;
     768        } else {
     769                ddf_msg(LVL_NOTE, "ISA Bridge");
     770                isa->pci_isa_bridge = true;
    749771        }
    750772
Note: See TracChangeset for help on using the changeset viewer.