Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/pciintel/pci.c

    r40a5d40 rad6857c  
    5959#include <ddi.h>
    6060#include <libarch/ddi.h>
    61 #include <pci_dev_iface.h>
    6261
    6362#include "pci.h"
     
    9493  sysarg_t apic;
    9594  sysarg_t i8259;
    96 
    9795        int irc_phone = -1;
    9896        int irc_service = 0;
     
    104102        }
    105103
    106   if (irc_service == 0)
     104  if (irc_service) {
     105    while (irc_phone < 0)
     106      irc_phone = service_connect_blocking(irc_service, 0, 0);
     107  } else {
    107108                return false;
    108 
    109         irc_phone = service_connect_blocking(irc_service, 0, 0);
    110         if (irc_phone < 0)
    111                 return false;
     109        }
    112110
    113111        size_t i;
     
    115113                if (dev_data->hw_resources.resources[i].type == INTERRUPT) {
    116114                        int irq = dev_data->hw_resources.resources[i].res.interrupt.irq;
    117                         int rc = async_req_1_0(irc_phone, IRC_ENABLE_INTERRUPT, irq);
    118                         if (rc != EOK) {
    119                                 async_hangup(irc_phone);
    120                                 return false;
    121                         }
     115                        async_msg_1(irc_phone, IRC_ENABLE_INTERRUPT, irq);
    122116                }
    123117        }
     
    125119        async_hangup(irc_phone);
    126120        return true;
    127 }
    128 
    129 static int pci_config_space_write_32(
    130     ddf_fun_t *fun, uint32_t address, uint32_t data)
    131 {
    132         if (address > 252)
    133                 return EINVAL;
    134         pci_conf_write_32(PCI_FUN(fun), address, data);
    135         return EOK;
    136 }
    137 
    138 static int pci_config_space_write_16(
    139     ddf_fun_t *fun, uint32_t address, uint16_t data)
    140 {
    141         if (address > 254)
    142                 return EINVAL;
    143         pci_conf_write_16(PCI_FUN(fun), address, data);
    144         return EOK;
    145 }
    146 
    147 static int pci_config_space_write_8(
    148     ddf_fun_t *fun, uint32_t address, uint8_t data)
    149 {
    150         if (address > 255)
    151                 return EINVAL;
    152         pci_conf_write_8(PCI_FUN(fun), address, data);
    153         return EOK;
    154 }
    155 
    156 static int pci_config_space_read_32(
    157     ddf_fun_t *fun, uint32_t address, uint32_t *data)
    158 {
    159         if (address > 252)
    160                 return EINVAL;
    161         *data = pci_conf_read_32(PCI_FUN(fun), address);
    162         return EOK;
    163 }
    164 
    165 static int pci_config_space_read_16(
    166     ddf_fun_t *fun, uint32_t address, uint16_t *data)
    167 {
    168         if (address > 254)
    169                 return EINVAL;
    170         *data = pci_conf_read_16(PCI_FUN(fun), address);
    171         return EOK;
    172 }
    173 
    174 static int pci_config_space_read_8(
    175     ddf_fun_t *fun, uint32_t address, uint8_t *data)
    176 {
    177         if (address > 255)
    178                 return EINVAL;
    179         *data = pci_conf_read_8(PCI_FUN(fun), address);
    180         return EOK;
    181121}
    182122
     
    186126};
    187127
    188 static pci_dev_iface_t pci_dev_ops = {
    189         .config_space_read_8 = &pci_config_space_read_8,
    190         .config_space_read_16 = &pci_config_space_read_16,
    191         .config_space_read_32 = &pci_config_space_read_32,
    192         .config_space_write_8 = &pci_config_space_write_8,
    193         .config_space_write_16 = &pci_config_space_write_16,
    194         .config_space_write_32 = &pci_config_space_write_32
    195 };
    196 
    197 static ddf_dev_ops_t pci_fun_ops = {
    198         .interfaces[HW_RES_DEV_IFACE] = &pciintel_hw_res_ops,
    199         .interfaces[PCI_DEV_IFACE] = &pci_dev_ops
    200 };
     128static ddf_dev_ops_t pci_fun_ops;
    201129
    202130static int pci_add_device(ddf_dev_t *);
     
    665593{
    666594        pci_fun_ops.interfaces[HW_RES_DEV_IFACE] = &pciintel_hw_res_ops;
    667         pci_fun_ops.interfaces[PCI_DEV_IFACE] = &pci_dev_ops;
    668595}
    669596
Note: See TracChangeset for help on using the changeset viewer.