Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/arcmsr/arcmsr.c
Show First 20 Lines • Show All 42 Lines • ▼ Show 20 Lines | |||||
pci_command |= PCIM_CMD_MWRICEN; | pci_command |= PCIM_CMD_MWRICEN; | ||||
/* Enable Busmaster */ | /* Enable Busmaster */ | ||||
pci_write_config(dev, PCIR_COMMAND, pci_command, 2); | pci_write_config(dev, PCIR_COMMAND, pci_command, 2); | ||||
switch(acb->adapter_type) { | switch(acb->adapter_type) { | ||||
case ACB_ADAPTER_TYPE_A: { | case ACB_ADAPTER_TYPE_A: { | ||||
u_int32_t rid0 = PCIR_BAR(0); | u_int32_t rid0 = PCIR_BAR(0); | ||||
vm_offset_t mem_base0; | vm_offset_t mem_base0; | ||||
acb->sys_res_arcmsr[0] = bus_alloc_resource(dev,SYS_RES_MEMORY, &rid0, 0ul, ~0ul, 0x1000, RF_ACTIVE); | acb->sys_res_arcmsr[0] = bus_alloc_resource(dev,SYS_RES_MEMORY, &rid0, 0, ~0, 0x1000, RF_ACTIVE); | ||||
if(acb->sys_res_arcmsr[0] == NULL) { | if(acb->sys_res_arcmsr[0] == NULL) { | ||||
arcmsr_free_resource(acb); | arcmsr_free_resource(acb); | ||||
printf("arcmsr%d: bus_alloc_resource failure!\n", device_get_unit(dev)); | printf("arcmsr%d: bus_alloc_resource failure!\n", device_get_unit(dev)); | ||||
return ENOMEM; | return ENOMEM; | ||||
} | } | ||||
if(rman_get_start(acb->sys_res_arcmsr[0]) <= 0) { | if(rman_get_start(acb->sys_res_arcmsr[0]) <= 0) { | ||||
arcmsr_free_resource(acb); | arcmsr_free_resource(acb); | ||||
printf("arcmsr%d: rman_get_start failure!\n", device_get_unit(dev)); | printf("arcmsr%d: rman_get_start failure!\n", device_get_unit(dev)); | ||||
Show All 18 Lines | |||||
u_long size; | u_long size; | ||||
if (vendor_dev_id == PCIDevVenIDARC1203) | if (vendor_dev_id == PCIDevVenIDARC1203) | ||||
size = sizeof(struct HBB_DOORBELL_1203); | size = sizeof(struct HBB_DOORBELL_1203); | ||||
else | else | ||||
size = sizeof(struct HBB_DOORBELL); | size = sizeof(struct HBB_DOORBELL); | ||||
for(i=0; i < 2; i++) { | for(i=0; i < 2; i++) { | ||||
if(i == 0) { | if(i == 0) { | ||||
acb->sys_res_arcmsr[i] = bus_alloc_resource(dev,SYS_RES_MEMORY, &rid[i], | acb->sys_res_arcmsr[i] = bus_alloc_resource(dev,SYS_RES_MEMORY, &rid[i], | ||||
0ul, ~0ul, size, RF_ACTIVE); | 0, ~0, size, RF_ACTIVE); | ||||
} else { | } else { | ||||
acb->sys_res_arcmsr[i] = bus_alloc_resource(dev, SYS_RES_MEMORY, &rid[i], | acb->sys_res_arcmsr[i] = bus_alloc_resource(dev, SYS_RES_MEMORY, &rid[i], | ||||
0ul, ~0ul, sizeof(struct HBB_RWBUFFER), RF_ACTIVE); | 0, ~0, sizeof(struct HBB_RWBUFFER), RF_ACTIVE); | ||||
} | } | ||||
if(acb->sys_res_arcmsr[i] == NULL) { | if(acb->sys_res_arcmsr[i] == NULL) { | ||||
arcmsr_free_resource(acb); | arcmsr_free_resource(acb); | ||||
printf("arcmsr%d: bus_alloc_resource %d failure!\n", device_get_unit(dev), i); | printf("arcmsr%d: bus_alloc_resource %d failure!\n", device_get_unit(dev), i); | ||||
return ENOMEM; | return ENOMEM; | ||||
} | } | ||||
if(rman_get_start(acb->sys_res_arcmsr[i]) <= 0) { | if(rman_get_start(acb->sys_res_arcmsr[i]) <= 0) { | ||||
arcmsr_free_resource(acb); | arcmsr_free_resource(acb); | ||||
Show All 26 Lines | |||||
phbbmu->iop2drv_doorbell_mask = offsetof(struct HBB_DOORBELL, iop2drv_doorbell_mask); | phbbmu->iop2drv_doorbell_mask = offsetof(struct HBB_DOORBELL, iop2drv_doorbell_mask); | ||||
} | } | ||||
} | } | ||||
break; | break; | ||||
case ACB_ADAPTER_TYPE_C: { | case ACB_ADAPTER_TYPE_C: { | ||||
u_int32_t rid0 = PCIR_BAR(1); | u_int32_t rid0 = PCIR_BAR(1); | ||||
vm_offset_t mem_base0; | vm_offset_t mem_base0; | ||||
acb->sys_res_arcmsr[0] = bus_alloc_resource(dev,SYS_RES_MEMORY, &rid0, 0ul, ~0ul, sizeof(struct HBC_MessageUnit), RF_ACTIVE); | acb->sys_res_arcmsr[0] = bus_alloc_resource(dev,SYS_RES_MEMORY, &rid0, 0, ~0, sizeof(struct HBC_MessageUnit), RF_ACTIVE); | ||||
if(acb->sys_res_arcmsr[0] == NULL) { | if(acb->sys_res_arcmsr[0] == NULL) { | ||||
arcmsr_free_resource(acb); | arcmsr_free_resource(acb); | ||||
printf("arcmsr%d: bus_alloc_resource failure!\n", device_get_unit(dev)); | printf("arcmsr%d: bus_alloc_resource failure!\n", device_get_unit(dev)); | ||||
return ENOMEM; | return ENOMEM; | ||||
} | } | ||||
if(rman_get_start(acb->sys_res_arcmsr[0]) <= 0) { | if(rman_get_start(acb->sys_res_arcmsr[0]) <= 0) { | ||||
arcmsr_free_resource(acb); | arcmsr_free_resource(acb); | ||||
printf("arcmsr%d: rman_get_start failure!\n", device_get_unit(dev)); | printf("arcmsr%d: rman_get_start failure!\n", device_get_unit(dev)); | ||||
Show All 10 Lines | |||||
acb->pmu = (struct MessageUnit_UNION *)mem_base0; | acb->pmu = (struct MessageUnit_UNION *)mem_base0; | ||||
} | } | ||||
break; | break; | ||||
case ACB_ADAPTER_TYPE_D: { | case ACB_ADAPTER_TYPE_D: { | ||||
struct HBD_MessageUnit0 *phbdmu; | struct HBD_MessageUnit0 *phbdmu; | ||||
u_int32_t rid0 = PCIR_BAR(0); | u_int32_t rid0 = PCIR_BAR(0); | ||||
vm_offset_t mem_base0; | vm_offset_t mem_base0; | ||||
acb->sys_res_arcmsr[0] = bus_alloc_resource(dev,SYS_RES_MEMORY, &rid0, 0ul, ~0ul, sizeof(struct HBD_MessageUnit), RF_ACTIVE); | acb->sys_res_arcmsr[0] = bus_alloc_resource(dev,SYS_RES_MEMORY, &rid0, 0, ~0, sizeof(struct HBD_MessageUnit), RF_ACTIVE); | ||||
if(acb->sys_res_arcmsr[0] == NULL) { | if(acb->sys_res_arcmsr[0] == NULL) { | ||||
arcmsr_free_resource(acb); | arcmsr_free_resource(acb); | ||||
printf("arcmsr%d: bus_alloc_resource failure!\n", device_get_unit(dev)); | printf("arcmsr%d: bus_alloc_resource failure!\n", device_get_unit(dev)); | ||||
return ENOMEM; | return ENOMEM; | ||||
} | } | ||||
if(rman_get_start(acb->sys_res_arcmsr[0]) <= 0) { | if(rman_get_start(acb->sys_res_arcmsr[0]) <= 0) { | ||||
arcmsr_free_resource(acb); | arcmsr_free_resource(acb); | ||||
printf("arcmsr%d: rman_get_start failure!\n", device_get_unit(dev)); | printf("arcmsr%d: rman_get_start failure!\n", device_get_unit(dev)); | ||||
▲ Show 20 Lines • Show All 55 Lines • ▼ Show 20 Lines | |||||
acb->pci_unit = unit; | acb->pci_unit = unit; | ||||
if(arcmsr_initialize(dev)) { | if(arcmsr_initialize(dev)) { | ||||
printf("arcmsr%d: initialize failure!\n", unit); | printf("arcmsr%d: initialize failure!\n", unit); | ||||
arcmsr_mutex_destroy(acb); | arcmsr_mutex_destroy(acb); | ||||
return ENXIO; | return ENXIO; | ||||
} | } | ||||
/* After setting up the adapter, map our interrupt */ | /* After setting up the adapter, map our interrupt */ | ||||
rid = 0; | rid = 0; | ||||
irqres = bus_alloc_resource(dev, SYS_RES_IRQ, &rid, 0ul, ~0ul, 1, RF_SHAREABLE | RF_ACTIVE); | irqres = bus_alloc_resource(dev, SYS_RES_IRQ, &rid, 0, ~0, 1, RF_SHAREABLE | RF_ACTIVE); | ||||
jhb: This should just be using bus_alloc_resource_any() (as the rest of this driver probably should… | |||||
Not Done Inline ActionsDeferring this. jhibbits: Deferring this. | |||||
if(irqres == NULL || | if(irqres == NULL || | ||||
#if __FreeBSD_version >= 700025 | #if __FreeBSD_version >= 700025 | ||||
bus_setup_intr(dev, irqres, INTR_TYPE_CAM|INTR_ENTROPY|INTR_MPSAFE, NULL, arcmsr_intr_handler, acb, &acb->ih)) { | bus_setup_intr(dev, irqres, INTR_TYPE_CAM|INTR_ENTROPY|INTR_MPSAFE, NULL, arcmsr_intr_handler, acb, &acb->ih)) { | ||||
#else | #else | ||||
bus_setup_intr(dev, irqres, INTR_TYPE_CAM|INTR_ENTROPY|INTR_MPSAFE, arcmsr_intr_handler, acb, &acb->ih)) { | bus_setup_intr(dev, irqres, INTR_TYPE_CAM|INTR_ENTROPY|INTR_MPSAFE, arcmsr_intr_handler, acb, &acb->ih)) { | ||||
#endif | #endif | ||||
arcmsr_free_resource(acb); | arcmsr_free_resource(acb); | ||||
arcmsr_mutex_destroy(acb); | arcmsr_mutex_destroy(acb); | ||||
▲ Show 20 Lines • Show All 42 Lines • Show Last 20 Lines |
This should just be using bus_alloc_resource_any() (as the rest of this driver probably should be), but that is a separate matter.