Hi all,

I finally got some time to do the simple MFC for ida driver. It enables
the automatic drive rebuild on Integrated SmartArray controllers.
I tested enclosed patch on DL380 (controller firmware 1.42) and it works
fine.

Could someone please have a look and commit this simple MFC into -stable ?

        Enjoy! ... and thanks in advance for occasional commit ;-)
        Milon
--
[EMAIL PROTECTED]


-------------------- cut here --------------------
*** sys/dev/ida.stable/ida_eisa.c       Thu Mar  1 02:57:33 2001
--- sys/dev/ida/ida_eisa.c      Wed May  2 09:14:27 2001
*************** static struct ida_access ida_v2_access =
*** 180,192 ****
  };
  
  static struct ida_board board_id[] = {
!       { 0x0e114001, "Compaq IDA controller",              &ida_v1_access
},
!       { 0x0e114002, "Compaq IDA-2 controller",            &ida_v1_access
},      
!       { 0x0e114010, "Compaq IAES controller",             &ida_v1_access
},
!       { 0x0e114020, "Compaq SMART array controller",      &ida_v1_access
},
!       { 0x0e114030, "Compaq SMART-2/E array controller",  &ida_v2_access
},
  
!       { 0, "", 0 }
  };
  
  static struct         ida_board *ida_eisa_match(eisa_id_t);
--- 180,197 ----
  };
  
  static struct ida_board board_id[] = {
!       { 0x0e114001, "Compaq IDA controller",
!           &ida_v1_access, 0 },
!       { 0x0e114002, "Compaq IDA-2 controller",
!           &ida_v1_access, 0 },        
!       { 0x0e114010, "Compaq IAES controller",
!           &ida_v1_access, 0 },
!       { 0x0e114020, "Compaq SMART array controller",
!           &ida_v1_access, 0 },
!       { 0x0e114030, "Compaq SMART-2/E array controller",
!           &ida_v2_access, 0 },
  
!       { 0, "", 0, 0 }
  };
  
  static struct         ida_board *ida_eisa_match(eisa_id_t);
*************** ida_eisa_attach(device_t dev)
*** 274,279 ****
--- 279,285 ----
  
        board = ida_eisa_match(eisa_get_id(dev));
        ida->cmd = *board->accessor;
+       ida->flags = board->flags;
  
        ida->regs_res_type = SYS_RES_IOPORT;
        ida->regs_res_id = 0;
*************** ida_eisa_attach(device_t dev)
*** 321,327 ****
                return (ENOMEM);
        }
  
-       ida->flags = 0;
        error = ida_init(ida);
        if (error) {
                ida_free(ida);
--- 327,332 ----
*** sys/dev/ida.stable/ida_pci.c        Thu Mar  1 02:57:33 2001
--- sys/dev/ida/ida_pci.c       Thu May  3 05:34:19 2001
*************** static struct ida_access ida_v4_access =
*** 149,167 ****
  };
  
  static struct ida_board board_id[] = {
!       { 0x40300E11, "Compaq SMART-2/P array controller",    &ida_v3_access
},
!       { 0x40310E11, "Compaq SMART-2SL array controller",    &ida_v3_access
},
!       { 0x40320E11, "Compaq Smart Array 3200 controller",   &ida_v3_access
},
!       { 0x40330E11, "Compaq Smart Array 3100ES controller", &ida_v3_access
},
!       { 0x40340E11, "Compaq Smart Array 221 controller",    &ida_v3_access
},
! 
!       { 0x40400E11, "Compaq Integrated Array controller",   &ida_v4_access
},
!       { 0x40480E11, "Compaq RAID LC2 controller",           &ida_v4_access
},
!       { 0x40500E11, "Compaq Smart Array 4200 controller",   &ida_v4_access
},
!       { 0x40510E11, "Compaq Smart Array 4250ES controller", &ida_v4_access
},
!       { 0x40580E11, "Compaq Smart Array 431 controller",    &ida_v4_access
},
  
!       { 0, "", 0 },
  };
  
  static int ida_pci_probe(device_t dev);
--- 149,177 ----
  };
  
  static struct ida_board board_id[] = {
!       { 0x40300E11, "Compaq SMART-2/P array controller",
!           &ida_v3_access, 0 },
!       { 0x40310E11, "Compaq SMART-2SL array controller",
!           &ida_v3_access, 0 },
!       { 0x40320E11, "Compaq Smart Array 3200 controller",
!           &ida_v3_access, 0 },
!       { 0x40330E11, "Compaq Smart Array 3100ES controller",
!           &ida_v3_access, 0 },
!       { 0x40340E11, "Compaq Smart Array 221 controller",
!           &ida_v3_access, 0 },
! 
!       { 0x40400E11, "Compaq Integrated Array controller",
!           &ida_v4_access, IDA_FIRMWARE },
!       { 0x40480E11, "Compaq RAID LC2 controller",
!             &ida_v4_access, IDA_FIRMWARE },
!       { 0x40500E11, "Compaq Smart Array 4200 controller",
!           &ida_v4_access, 0 },
!       { 0x40510E11, "Compaq Smart Array 4250ES controller",
!           &ida_v4_access, 0 },
!       { 0x40580E11, "Compaq Smart Array 431 controller",
!           &ida_v4_access, 0 },
  
!       { 0, "", 0, 0 },
  };
  
  static int ida_pci_probe(device_t dev);
*************** ida_pci_attach(device_t dev)
*** 238,243 ****
--- 248,254 ----
        ida = (struct ida_softc *)device_get_softc(dev);
        ida->dev = dev;
        ida->cmd = *board->accessor;
+       ida->flags = board->flags;
  
        ida->regs_res_type = SYS_RES_MEMORY;
        ida->regs_res_id = IDA_PCI_MEMADDR;
*************** ida_pci_attach(device_t dev)
*** 279,285 ****
                return (ENOMEM);
        }
  
-       ida->flags = 0;
        error = ida_init(ida);
        if (error) {
                  ida_free(ida);
--- 290,295 ----
*** sys/dev/ida.stable/idavar.h Thu Mar  1 02:57:33 2001
--- sys/dev/ida/idavar.h        Wed May  2 09:09:33 2001
*************** struct ida_board {
*** 185,190 ****
--- 185,191 ----
        u_int32_t       board;
        char            *desc;
        struct          ida_access *accessor;
+       int             flags;
  };
  
  extern int ida_detach(device_t dev);


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to