- if (check_region(io_addr+0x2000,0x40)) {
- CANMSG("Unable to open port: 0x%lx\n",io_addr+0x2000);
- return -ENODEV;
- }
- else if (check_region(io_addr+0x2400,0x40)) {
- CANMSG("Unable to open port: 0x%lx\n",io_addr+0x2400);
- return -ENODEV;
- }
- else if (check_region(io_addr+0x2800,0x40)) {
- CANMSG("Unable to open port: 0x%lx\n",io_addr+0x2800);
- return -ENODEV;
- }
- else if (check_region(io_addr+0x2C00,0x40)) {
- CANMSG("Unable to open port: 0x%lx\n",io_addr+0x2C00);
- return -ENODEV;
- }
- else if (check_region(io_addr+0x3000,0x40)) {
- CANMSG("Unable to open port: 0x%lx\n",io_addr+0x3000);
- return -ENODEV;
- }
- else if (check_region(io_addr+0x3400,0x40)) {
- CANMSG("Unable to open port: 0x%lx\n",io_addr+0x3400);
- return -ENODEV;
- }
- else if (check_region(io_addr+0x3800,0x40)) {
- CANMSG("Unable to open port: 0x%lx\n",io_addr+0x3800);
- return -ENODEV;
- }
- else if (check_region(io_addr+0x3C00,0x40)) {
- CANMSG("Unable to open port: 0x%lx\n",io_addr+0x3C00);
- return -ENODEV;
- }
- else {
- request_region(io_addr+0x2000,0x40,DEVICE_NAME);
- DEBUGMSG("Registered IO-memory: 0x%lx - 0x%lx\n", io_addr+0x2000, io_addr+0x2000+0x40-1);
- request_region(io_addr+0x2400,0x40,DEVICE_NAME);
- DEBUGMSG("Registered IO-memory: 0x%lx - 0x%lx\n", io_addr+0x2400, io_addr+0x2400+0x40-1);
- request_region(io_addr+0x2800,0x40,DEVICE_NAME);
- DEBUGMSG("Registered IO-memory: 0x%lx - 0x%lx\n", io_addr+0x2800, io_addr+0x2800+0x40-1);
- request_region(io_addr+0x2C00,0x40,DEVICE_NAME);
- DEBUGMSG("Registered IO-memory: 0x%lx - 0x%lx\n", io_addr+0x2C00, io_addr+0x2C00+0x40-1);
- request_region(io_addr+0x3000,0x40,DEVICE_NAME);
- DEBUGMSG("Registered IO-memory: 0x%lx - 0x%lx\n", io_addr+0x3000, io_addr+0x3000+0x40-1);
- request_region(io_addr+0x3400,0x40,DEVICE_NAME);
- DEBUGMSG("Registered IO-memory: 0x%lx - 0x%lx\n", io_addr+0x3400, io_addr+0x3400+0x40-1);
- request_region(io_addr+0x3800,0x40,DEVICE_NAME);
- DEBUGMSG("Registered IO-memory: 0x%lx - 0x%lx\n", io_addr+0x3800, io_addr+0x3800+0x40-1);
- request_region(io_addr+0x3C00,0x40,DEVICE_NAME);
- DEBUGMSG("Registered IO-memory: 0x%lx - 0x%lx\n", io_addr+0x3C00, io_addr+0x3C00+0x40-1);
+ for(i=0, io_addr=candev->io_addr+0x2000; i<8; i++, io_addr+=0x400) {
+ if (!can_request_io_region(io_addr,0x40,DEVICE_NAME)) {
+ CANMSG("Unable to open port: 0x%lx\n",io_addr);
+ while(i--){
+ io_addr-=0x400;
+ can_release_io_region(io_addr,0x40);
+ }
+ pccand_release_io(candev);
+ return -ENODEV;
+ }
+ DEBUGMSG("Registered IO-memory: 0x%lx - 0x%lx\n", io_addr, io_addr+0x40-1);