arcmsr.c (295790) | arcmsr.c (296135) |
---|---|
1/* 2******************************************************************************** 3** OS : FreeBSD 4** FILE NAME : arcmsr.c 5** BY : Erich Chen, Ching Huang 6** Description: SCSI RAID Device Driver for 7** ARECA (ARC11XX/ARC12XX/ARC13XX/ARC16XX/ARC188x) 8** SATA/SAS RAID HOST Adapter --- 67 unchanged lines hidden (view full) --- 76** 1.20.00.27 05/06/2013 Ching Huang Fixed out standing cmd full on ARC-12x4 77** 1.20.00.28 09/13/2013 Ching Huang Removed recursive mutex in arcmsr_abort_dr_ccbs 78** 1.20.00.29 12/18/2013 Ching Huang Change simq allocation number, support ARC1883 79** 1.30.00.00 11/30/2015 Ching Huang Added support ARC1203 80****************************************************************************************** 81*/ 82 83#include <sys/cdefs.h> | 1/* 2******************************************************************************** 3** OS : FreeBSD 4** FILE NAME : arcmsr.c 5** BY : Erich Chen, Ching Huang 6** Description: SCSI RAID Device Driver for 7** ARECA (ARC11XX/ARC12XX/ARC13XX/ARC16XX/ARC188x) 8** SATA/SAS RAID HOST Adapter --- 67 unchanged lines hidden (view full) --- 76** 1.20.00.27 05/06/2013 Ching Huang Fixed out standing cmd full on ARC-12x4 77** 1.20.00.28 09/13/2013 Ching Huang Removed recursive mutex in arcmsr_abort_dr_ccbs 78** 1.20.00.29 12/18/2013 Ching Huang Change simq allocation number, support ARC1883 79** 1.30.00.00 11/30/2015 Ching Huang Added support ARC1203 80****************************************************************************************** 81*/ 82 83#include <sys/cdefs.h> |
84__FBSDID("$FreeBSD: head/sys/dev/arcmsr/arcmsr.c 295790 2016-02-19 03:37:56Z jhibbits $"); | 84__FBSDID("$FreeBSD: head/sys/dev/arcmsr/arcmsr.c 296135 2016-02-27 03:34:01Z jhibbits $"); |
85 86#if 0 87#define ARCMSR_DEBUG1 1 88#endif 89#include <sys/param.h> 90#include <sys/systm.h> 91#include <sys/malloc.h> 92#include <sys/kernel.h> --- 4045 unchanged lines hidden (view full) --- 4138 pci_command |= PCIM_CMD_MWRICEN; 4139 /* Enable Busmaster */ 4140 pci_write_config(dev, PCIR_COMMAND, pci_command, 2); 4141 switch(acb->adapter_type) { 4142 case ACB_ADAPTER_TYPE_A: { 4143 u_int32_t rid0 = PCIR_BAR(0); 4144 vm_offset_t mem_base0; 4145 | 85 86#if 0 87#define ARCMSR_DEBUG1 1 88#endif 89#include <sys/param.h> 90#include <sys/systm.h> 91#include <sys/malloc.h> 92#include <sys/kernel.h> --- 4045 unchanged lines hidden (view full) --- 4138 pci_command |= PCIM_CMD_MWRICEN; 4139 /* Enable Busmaster */ 4140 pci_write_config(dev, PCIR_COMMAND, pci_command, 2); 4141 switch(acb->adapter_type) { 4142 case ACB_ADAPTER_TYPE_A: { 4143 u_int32_t rid0 = PCIR_BAR(0); 4144 vm_offset_t mem_base0; 4145 |
4146 acb->sys_res_arcmsr[0] = bus_alloc_resource(dev,SYS_RES_MEMORY, &rid0, 0ul, ~0ul, 0x1000, RF_ACTIVE); | 4146 acb->sys_res_arcmsr[0] = bus_alloc_resource_any(dev,SYS_RES_MEMORY, &rid0, RF_ACTIVE); |
4147 if(acb->sys_res_arcmsr[0] == NULL) { 4148 arcmsr_free_resource(acb); 4149 printf("arcmsr%d: bus_alloc_resource failure!\n", device_get_unit(dev)); 4150 return ENOMEM; 4151 } 4152 if(rman_get_start(acb->sys_res_arcmsr[0]) <= 0) { 4153 arcmsr_free_resource(acb); 4154 printf("arcmsr%d: rman_get_start failure!\n", device_get_unit(dev)); --- 17 unchanged lines hidden (view full) --- 4172 vm_offset_t mem_base[]={0,0}; 4173 u_long size; 4174 if (vendor_dev_id == PCIDevVenIDARC1203) 4175 size = sizeof(struct HBB_DOORBELL_1203); 4176 else 4177 size = sizeof(struct HBB_DOORBELL); 4178 for(i=0; i < 2; i++) { 4179 if(i == 0) { | 4147 if(acb->sys_res_arcmsr[0] == NULL) { 4148 arcmsr_free_resource(acb); 4149 printf("arcmsr%d: bus_alloc_resource failure!\n", device_get_unit(dev)); 4150 return ENOMEM; 4151 } 4152 if(rman_get_start(acb->sys_res_arcmsr[0]) <= 0) { 4153 arcmsr_free_resource(acb); 4154 printf("arcmsr%d: rman_get_start failure!\n", device_get_unit(dev)); --- 17 unchanged lines hidden (view full) --- 4172 vm_offset_t mem_base[]={0,0}; 4173 u_long size; 4174 if (vendor_dev_id == PCIDevVenIDARC1203) 4175 size = sizeof(struct HBB_DOORBELL_1203); 4176 else 4177 size = sizeof(struct HBB_DOORBELL); 4178 for(i=0; i < 2; i++) { 4179 if(i == 0) { |
4180 acb->sys_res_arcmsr[i] = bus_alloc_resource(dev,SYS_RES_MEMORY, &rid[i], 4181 0ul, ~0ul, size, RF_ACTIVE); | 4180 acb->sys_res_arcmsr[i] = bus_alloc_resource_any(dev,SYS_RES_MEMORY, &rid[i], 4181 RF_ACTIVE); |
4182 } else { | 4182 } else { |
4183 acb->sys_res_arcmsr[i] = bus_alloc_resource(dev, SYS_RES_MEMORY, &rid[i], 4184 0ul, ~0ul, sizeof(struct HBB_RWBUFFER), RF_ACTIVE); | 4183 acb->sys_res_arcmsr[i] = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid[i], 4184 RF_ACTIVE); |
4185 } 4186 if(acb->sys_res_arcmsr[i] == NULL) { 4187 arcmsr_free_resource(acb); 4188 printf("arcmsr%d: bus_alloc_resource %d failure!\n", device_get_unit(dev), i); 4189 return ENOMEM; 4190 } 4191 if(rman_get_start(acb->sys_res_arcmsr[i]) <= 0) { 4192 arcmsr_free_resource(acb); --- 26 unchanged lines hidden (view full) --- 4219 phbbmu->iop2drv_doorbell_mask = offsetof(struct HBB_DOORBELL, iop2drv_doorbell_mask); 4220 } 4221 } 4222 break; 4223 case ACB_ADAPTER_TYPE_C: { 4224 u_int32_t rid0 = PCIR_BAR(1); 4225 vm_offset_t mem_base0; 4226 | 4185 } 4186 if(acb->sys_res_arcmsr[i] == NULL) { 4187 arcmsr_free_resource(acb); 4188 printf("arcmsr%d: bus_alloc_resource %d failure!\n", device_get_unit(dev), i); 4189 return ENOMEM; 4190 } 4191 if(rman_get_start(acb->sys_res_arcmsr[i]) <= 0) { 4192 arcmsr_free_resource(acb); --- 26 unchanged lines hidden (view full) --- 4219 phbbmu->iop2drv_doorbell_mask = offsetof(struct HBB_DOORBELL, iop2drv_doorbell_mask); 4220 } 4221 } 4222 break; 4223 case ACB_ADAPTER_TYPE_C: { 4224 u_int32_t rid0 = PCIR_BAR(1); 4225 vm_offset_t mem_base0; 4226 |
4227 acb->sys_res_arcmsr[0] = bus_alloc_resource(dev,SYS_RES_MEMORY, &rid0, 0ul, ~0ul, sizeof(struct HBC_MessageUnit), RF_ACTIVE); | 4227 acb->sys_res_arcmsr[0] = bus_alloc_resource_any(dev,SYS_RES_MEMORY, &rid0, RF_ACTIVE); |
4228 if(acb->sys_res_arcmsr[0] == NULL) { 4229 arcmsr_free_resource(acb); 4230 printf("arcmsr%d: bus_alloc_resource failure!\n", device_get_unit(dev)); 4231 return ENOMEM; 4232 } 4233 if(rman_get_start(acb->sys_res_arcmsr[0]) <= 0) { 4234 arcmsr_free_resource(acb); 4235 printf("arcmsr%d: rman_get_start failure!\n", device_get_unit(dev)); --- 10 unchanged lines hidden (view full) --- 4246 acb->pmu = (struct MessageUnit_UNION *)mem_base0; 4247 } 4248 break; 4249 case ACB_ADAPTER_TYPE_D: { 4250 struct HBD_MessageUnit0 *phbdmu; 4251 u_int32_t rid0 = PCIR_BAR(0); 4252 vm_offset_t mem_base0; 4253 | 4228 if(acb->sys_res_arcmsr[0] == NULL) { 4229 arcmsr_free_resource(acb); 4230 printf("arcmsr%d: bus_alloc_resource failure!\n", device_get_unit(dev)); 4231 return ENOMEM; 4232 } 4233 if(rman_get_start(acb->sys_res_arcmsr[0]) <= 0) { 4234 arcmsr_free_resource(acb); 4235 printf("arcmsr%d: rman_get_start failure!\n", device_get_unit(dev)); --- 10 unchanged lines hidden (view full) --- 4246 acb->pmu = (struct MessageUnit_UNION *)mem_base0; 4247 } 4248 break; 4249 case ACB_ADAPTER_TYPE_D: { 4250 struct HBD_MessageUnit0 *phbdmu; 4251 u_int32_t rid0 = PCIR_BAR(0); 4252 vm_offset_t mem_base0; 4253 |
4254 acb->sys_res_arcmsr[0] = bus_alloc_resource(dev,SYS_RES_MEMORY, &rid0, 0ul, ~0ul, sizeof(struct HBD_MessageUnit), RF_ACTIVE); | 4254 acb->sys_res_arcmsr[0] = bus_alloc_resource_any(dev,SYS_RES_MEMORY, &rid0, RF_ACTIVE); |
4255 if(acb->sys_res_arcmsr[0] == NULL) { 4256 arcmsr_free_resource(acb); 4257 printf("arcmsr%d: bus_alloc_resource failure!\n", device_get_unit(dev)); 4258 return ENOMEM; 4259 } 4260 if(rman_get_start(acb->sys_res_arcmsr[0]) <= 0) { 4261 arcmsr_free_resource(acb); 4262 printf("arcmsr%d: rman_get_start failure!\n", device_get_unit(dev)); --- 300 unchanged lines hidden --- | 4255 if(acb->sys_res_arcmsr[0] == NULL) { 4256 arcmsr_free_resource(acb); 4257 printf("arcmsr%d: bus_alloc_resource failure!\n", device_get_unit(dev)); 4258 return ENOMEM; 4259 } 4260 if(rman_get_start(acb->sys_res_arcmsr[0]) <= 0) { 4261 arcmsr_free_resource(acb); 4262 printf("arcmsr%d: rman_get_start failure!\n", device_get_unit(dev)); --- 300 unchanged lines hidden --- |