Changes in uspace/drv/pciintel/pci.c [40a5d40:ad6857c] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/pciintel/pci.c
r40a5d40 rad6857c 59 59 #include <ddi.h> 60 60 #include <libarch/ddi.h> 61 #include <pci_dev_iface.h>62 61 63 62 #include "pci.h" … … 94 93 sysarg_t apic; 95 94 sysarg_t i8259; 96 97 95 int irc_phone = -1; 98 96 int irc_service = 0; … … 104 102 } 105 103 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 { 107 108 return false; 108 109 irc_phone = service_connect_blocking(irc_service, 0, 0); 110 if (irc_phone < 0) 111 return false; 109 } 112 110 113 111 size_t i; … … 115 113 if (dev_data->hw_resources.resources[i].type == INTERRUPT) { 116 114 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); 122 116 } 123 117 } … … 125 119 async_hangup(irc_phone); 126 120 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;181 121 } 182 122 … … 186 126 }; 187 127 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 }; 128 static ddf_dev_ops_t pci_fun_ops; 201 129 202 130 static int pci_add_device(ddf_dev_t *); … … 665 593 { 666 594 pci_fun_ops.interfaces[HW_RES_DEV_IFACE] = &pciintel_hw_res_ops; 667 pci_fun_ops.interfaces[PCI_DEV_IFACE] = &pci_dev_ops;668 595 } 669 596
Note:
See TracChangeset
for help on using the changeset viewer.