Linux Audio

Check our new training course

Loading...
v6.13.7
  1**************************************************************************
  2** History
  3**
  4**   REV#         DATE             NAME         DESCRIPTION
  5** 1.00.00.00    3/31/2004       Erich Chen     First release
  6** 1.10.00.04    7/28/2004       Erich Chen     modify for ioctl
  7** 1.10.00.06    8/28/2004       Erich Chen     modify for 2.6.x
  8** 1.10.00.08    9/28/2004       Erich Chen     modify for x86_64
  9** 1.10.00.10   10/10/2004       Erich Chen     bug fix for SMP & ioctl
 10** 1.20.00.00   11/29/2004       Erich Chen     bug fix with arcmsr_bus_reset when PHY error
 11** 1.20.00.02   12/09/2004       Erich Chen     bug fix with over 2T bytes RAID Volume
 12** 1.20.00.04    1/09/2005       Erich Chen     fits for Debian linux kernel version 2.2.xx
 13** 1.20.00.05    2/20/2005       Erich Chen     cleanly as look like a Linux driver at 2.6.x
 14**                                              thanks for peoples kindness comment
 15**						Kornel Wieliczek
 16**						Christoph Hellwig
 17**						Adrian Bunk
 18**						Andrew Morton
 19**						Christoph Hellwig
 20**						James Bottomley
 21**						Arjan van de Ven
 22** 1.20.00.06    3/12/2005       Erich Chen     fix with arcmsr_pci_unmap_dma "unsigned long" cast,
 23**						modify PCCB POOL allocated by "dma_alloc_coherent"
 24**						(Kornel Wieliczek's comment)
 25** 1.20.00.07    3/23/2005       Erich Chen     bug fix with arcmsr_scsi_host_template_init
 26**						occur segmentation fault,
 27**						if RAID adapter does not on PCI slot
 28**						and modprobe/rmmod this driver twice.
 29**						bug fix enormous stack usage (Adrian Bunk's comment)
 30** 1.20.00.08    6/23/2005       Erich Chen     bug fix with abort command,
 31**						in case of heavy loading when sata cable
 32**						working on low quality connection
 33** 1.20.00.09    9/12/2005       Erich Chen     bug fix with abort command handling, firmware version check
 34**						and firmware update notify for hardware bug fix
 35** 1.20.00.10    9/23/2005       Erich Chen     enhance sysfs function for change driver's max tag Q number.
 36**						add DMA_64BIT_MASK for backward compatible with all 2.6.x
 37**						add some useful message for abort command
 38**						add ioctl code 'ARCMSR_IOCTL_FLUSH_ADAPTER_CACHE'
 39**						customer can send this command for sync raid volume data
 40** 1.20.00.11    9/29/2005       Erich Chen     by comment of Arjan van de Ven fix incorrect msleep redefine
 41**						cast off sizeof(dma_addr_t) condition for 64bit pci_set_dma_mask
 42** 1.20.00.12    9/30/2005       Erich Chen     bug fix with 64bit platform's ccbs using if over 4G system memory
 43**						change 64bit pci_set_consistent_dma_mask into 32bit
 44**						increcct adapter count if adapter initialize fail.
 45**						miss edit at arcmsr_build_ccb....
 46**						psge += sizeof(struct _SG64ENTRY *) =>
 47**						psge += sizeof(struct _SG64ENTRY)
 48**						64 bits sg entry would be incorrectly calculated
 49**						thanks Kornel Wieliczek give me kindly notify
 50**						and detail description
 51** 1.20.00.13   11/15/2005       Erich Chen     scheduling pending ccb with FIFO
 52**						change the architecture of arcmsr command queue list
 53**						for linux standard list
 54**						enable usage of pci message signal interrupt
 55**						follow Randy.Danlup kindness suggestion cleanup this code
 56** 1.20.00.14   05/02/2007	 Erich Chen & Nick Cheng
 57**						1.implement PCI-Express error recovery function and AER capability
 58**						2.implement the selection of ARCMSR_MAX_XFER_SECTORS_B=4096
 59**				 		if firmware version is newer than 1.42
 60**						3.modify arcmsr_iop_reset to improve the ability
 61**						4.modify the ISR, arcmsr_interrupt routine,to prevent the
 62**						inconsistency with sg_mod driver if application	directly calls
 63**						the arcmsr driver w/o passing through scsi mid layer
 64**						specially thanks to Yanmin Zhang's openhanded help about AER
 65** 1.20.00.15   08/30/2007	 Erich Chen & Nick Cheng
 66**						1. support ARC1200/1201/1202 SATA RAID adapter, which is named
 67**						ACB_ADAPTER_TYPE_B
 68**						2. modify the arcmsr_pci_slot_reset function
 69**						3. modify the arcmsr_pci_ers_disconnect_forepart function
 70**						4. modify the arcmsr_pci_ers_need_reset_forepart function
 71** 1.20.00.15   09/27/2007	 Erich Chen & Nick Cheng
 72**						1. add arcmsr_enable_eoi_mode() on adapter Type B
 73** 						2. add readl(reg->iop2drv_doorbell_reg) in arcmsr_handle_hbb_isr()
 74**						in case of the doorbell interrupt clearance is cached
 75** 1.20.00.15   10/01/2007	 Erich Chen & Nick Cheng
 76**						1. modify acb->devstate[i][j]
 77**						as ARECA_RAID_GOOD instead of
 78**						ARECA_RAID_GONE in arcmsr_alloc_ccb_pool
 79** 1.20.00.15   11/06/2007       Erich Chen & Nick Cheng
 80**						1. add conditional declaration for
 81** 						arcmsr_pci_error_detected() and
 82**						arcmsr_pci_slot_reset
 83** 1.20.00.15	11/23/2007       Erich Chen & Nick Cheng
 84**						1.check if the sg list member number
 85**						exceeds arcmsr default limit in arcmsr_build_ccb()
 86**						2.change the returned value type of arcmsr_build_ccb()
 87**						from "void" to "int"
 88**						3.add the conditional check if arcmsr_build_ccb()
 89**						returns FAILED
 90** 1.20.00.15	12/04/2007	 Erich Chen & Nick Cheng
 91**						1. modify arcmsr_drain_donequeue() to ignore unknown
 92**						command and let kernel process command timeout.
 93**						This could handle IO request violating max. segments
 94**						while Linux XFS over DM-CRYPT.
 95**						Thanks to Milan Broz's comments <mbroz@redhat.com>
 96** 1.20.00.15	12/24/2007	 Erich Chen & Nick Cheng
 97**						1.fix the portability problems
 98**						2.fix type B where we should _not_ iounmap() acb->pmu;
 99**						it's not ioremapped.
100**						3.add return -ENOMEM if ioremap() fails
101**						4.transfer IS_SG64_ADDR w/ cpu_to_le32()
102**						in arcmsr_build_ccb
103**						5. modify acb->devstate[i][j] as ARECA_RAID_GONE instead of
104**						ARECA_RAID_GOOD in arcmsr_alloc_ccb_pool()
105**						6.fix arcmsr_cdb->Context as (unsigned long)arcmsr_cdb
106**						7.add the checking state of
107**						(outbound_intstatus & ARCMSR_MU_OUTBOUND_HANDLE_INT) == 0
108**						in arcmsr_handle_hba_isr
109**						8.replace pci_alloc_consistent()/pci_free_consistent() with kmalloc()/kfree() in arcmsr_iop_message_xfer()
110**						9. fix the release of dma memory for type B in arcmsr_free_ccb_pool()
111**						10.fix the arcmsr_polling_hbb_ccbdone()
112** 1.20.00.15	02/27/2008	Erich Chen & Nick Cheng
113**						1.arcmsr_iop_message_xfer() is called from atomic context under the
114**						queuecommand scsi_host_template handler. James Bottomley pointed out
115**						that the current GFP_KERNEL|GFP_DMA flags are wrong: firstly we are in
116**						atomic context, secondly this memory is not used for DMA.
117**						Also removed some unneeded casts. Thanks to Daniel Drake <dsd@gentoo.org>
118**************************************************************************
v3.5.6
  1**************************************************************************
  2** History
  3**
  4**   REV#         DATE             NAME         DESCRIPTION
  5** 1.00.00.00    3/31/2004       Erich Chen     First release
  6** 1.10.00.04    7/28/2004       Erich Chen     modify for ioctl
  7** 1.10.00.06    8/28/2004       Erich Chen     modify for 2.6.x
  8** 1.10.00.08    9/28/2004       Erich Chen     modify for x86_64
  9** 1.10.00.10   10/10/2004       Erich Chen     bug fix for SMP & ioctl
 10** 1.20.00.00   11/29/2004       Erich Chen     bug fix with arcmsr_bus_reset when PHY error
 11** 1.20.00.02   12/09/2004       Erich Chen     bug fix with over 2T bytes RAID Volume
 12** 1.20.00.04    1/09/2005       Erich Chen     fits for Debian linux kernel version 2.2.xx
 13** 1.20.00.05    2/20/2005       Erich Chen     cleanly as look like a Linux driver at 2.6.x
 14**                                              thanks for peoples kindness comment
 15**						Kornel Wieliczek
 16**						Christoph Hellwig
 17**						Adrian Bunk
 18**						Andrew Morton
 19**						Christoph Hellwig
 20**						James Bottomley
 21**						Arjan van de Ven
 22** 1.20.00.06    3/12/2005       Erich Chen     fix with arcmsr_pci_unmap_dma "unsigned long" cast,
 23**						modify PCCB POOL allocated by "dma_alloc_coherent"
 24**						(Kornel Wieliczek's comment)
 25** 1.20.00.07    3/23/2005       Erich Chen     bug fix with arcmsr_scsi_host_template_init
 26**						occur segmentation fault,
 27**						if RAID adapter does not on PCI slot
 28**						and modprobe/rmmod this driver twice.
 29**						bug fix enormous stack usage (Adrian Bunk's comment)
 30** 1.20.00.08    6/23/2005       Erich Chen     bug fix with abort command,
 31**						in case of heavy loading when sata cable
 32**						working on low quality connection
 33** 1.20.00.09    9/12/2005       Erich Chen     bug fix with abort command handling, firmware version check
 34**						and firmware update notify for hardware bug fix
 35** 1.20.00.10    9/23/2005       Erich Chen     enhance sysfs function for change driver's max tag Q number.
 36**						add DMA_64BIT_MASK for backward compatible with all 2.6.x
 37**						add some useful message for abort command
 38**						add ioctl code 'ARCMSR_IOCTL_FLUSH_ADAPTER_CACHE'
 39**						customer can send this command for sync raid volume data
 40** 1.20.00.11    9/29/2005       Erich Chen     by comment of Arjan van de Ven fix incorrect msleep redefine
 41**						cast off sizeof(dma_addr_t) condition for 64bit pci_set_dma_mask
 42** 1.20.00.12    9/30/2005       Erich Chen     bug fix with 64bit platform's ccbs using if over 4G system memory
 43**						change 64bit pci_set_consistent_dma_mask into 32bit
 44**						increcct adapter count if adapter initialize fail.
 45**						miss edit at arcmsr_build_ccb....
 46**						psge += sizeof(struct _SG64ENTRY *) =>
 47**						psge += sizeof(struct _SG64ENTRY)
 48**						64 bits sg entry would be incorrectly calculated
 49**						thanks Kornel Wieliczek give me kindly notify
 50**						and detail description
 51** 1.20.00.13   11/15/2005       Erich Chen     scheduling pending ccb with FIFO
 52**						change the architecture of arcmsr command queue list
 53**						for linux standard list
 54**						enable usage of pci message signal interrupt
 55**						follow Randy.Danlup kindness suggestion cleanup this code
 56** 1.20.00.14   05/02/2007	 Erich Chen & Nick Cheng
 57**						1.implement PCI-Express error recovery function and AER capability
 58**						2.implement the selection of ARCMSR_MAX_XFER_SECTORS_B=4096
 59**				 		if firmware version is newer than 1.42
 60**						3.modify arcmsr_iop_reset to improve the ability
 61**						4.modify the ISR, arcmsr_interrupt routine,to prevent the
 62**						inconsistency with sg_mod driver if application	directly calls
 63**						the arcmsr driver w/o passing through scsi mid layer
 64**						specially thanks to Yanmin Zhang's openhanded help about AER
 65** 1.20.00.15   08/30/2007	 Erich Chen & Nick Cheng
 66**						1. support ARC1200/1201/1202 SATA RAID adapter, which is named
 67**						ACB_ADAPTER_TYPE_B
 68**						2. modify the arcmsr_pci_slot_reset function
 69**						3. modify the arcmsr_pci_ers_disconnect_forepart function
 70**						4. modify the arcmsr_pci_ers_need_reset_forepart function
 71** 1.20.00.15   09/27/2007	 Erich Chen & Nick Cheng
 72**						1. add arcmsr_enable_eoi_mode() on adapter Type B
 73** 						2. add readl(reg->iop2drv_doorbell_reg) in arcmsr_handle_hbb_isr()
 74**						in case of the doorbell interrupt clearance is cached
 75** 1.20.00.15   10/01/2007	 Erich Chen & Nick Cheng
 76**						1. modify acb->devstate[i][j]
 77**						as ARECA_RAID_GOOD instead of
 78**						ARECA_RAID_GONE in arcmsr_alloc_ccb_pool
 79** 1.20.00.15   11/06/2007       Erich Chen & Nick Cheng
 80**						1. add conditional declaration for
 81** 						arcmsr_pci_error_detected() and
 82**						arcmsr_pci_slot_reset
 83** 1.20.00.15	11/23/2007       Erich Chen & Nick Cheng
 84**						1.check if the sg list member number
 85**						exceeds arcmsr default limit in arcmsr_build_ccb()
 86**						2.change the returned value type of arcmsr_build_ccb()
 87**						from "void" to "int"
 88**						3.add the conditional check if arcmsr_build_ccb()
 89**						returns FAILED
 90** 1.20.00.15	12/04/2007	 Erich Chen & Nick Cheng
 91**						1. modify arcmsr_drain_donequeue() to ignore unknown
 92**						command and let kernel process command timeout.
 93**						This could handle IO request violating max. segments
 94**						while Linux XFS over DM-CRYPT.
 95**						Thanks to Milan Broz's comments <mbroz@redhat.com>
 96** 1.20.00.15	12/24/2007	 Erich Chen & Nick Cheng
 97**						1.fix the portability problems
 98**						2.fix type B where we should _not_ iounmap() acb->pmu;
 99**						it's not ioremapped.
100**						3.add return -ENOMEM if ioremap() fails
101**						4.transfer IS_SG64_ADDR w/ cpu_to_le32()
102**						in arcmsr_build_ccb
103**						5. modify acb->devstate[i][j] as ARECA_RAID_GONE instead of
104**						ARECA_RAID_GOOD in arcmsr_alloc_ccb_pool()
105**						6.fix arcmsr_cdb->Context as (unsigned long)arcmsr_cdb
106**						7.add the checking state of
107**						(outbound_intstatus & ARCMSR_MU_OUTBOUND_HANDLE_INT) == 0
108**						in arcmsr_handle_hba_isr
109**						8.replace pci_alloc_consistent()/pci_free_consistent() with kmalloc()/kfree() in arcmsr_iop_message_xfer()
110**						9. fix the release of dma memory for type B in arcmsr_free_ccb_pool()
111**						10.fix the arcmsr_polling_hbb_ccbdone()
112** 1.20.00.15	02/27/2008	Erich Chen & Nick Cheng
113**						1.arcmsr_iop_message_xfer() is called from atomic context under the
114**						queuecommand scsi_host_template handler. James Bottomley pointed out
115**						that the current GFP_KERNEL|GFP_DMA flags are wrong: firstly we are in
116**						atomic context, secondly this memory is not used for DMA.
117**						Also removed some unneeded casts. Thanks to Daniel Drake <dsd@gentoo.org>
118**************************************************************************