aic94xx_seq.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /*
  2. * Aic94xx SAS/SATA driver sequencer interface header file.
  3. *
  4. * Copyright (C) 2005 Adaptec, Inc. All rights reserved.
  5. * Copyright (C) 2005 Luben Tuikov <luben_tuikov@adaptec.com>
  6. *
  7. * This file is licensed under GPLv2.
  8. *
  9. * This file is part of the aic94xx driver.
  10. *
  11. * The aic94xx driver is free software; you can redistribute it and/or
  12. * modify it under the terms of the GNU General Public License as
  13. * published by the Free Software Foundation; version 2 of the
  14. * License.
  15. *
  16. * The aic94xx driver is distributed in the hope that it will be useful,
  17. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  18. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  19. * General Public License for more details.
  20. *
  21. * You should have received a copy of the GNU General Public License
  22. * along with the aic94xx driver; if not, write to the Free Software
  23. * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  24. *
  25. */
  26. #ifndef _AIC94XX_SEQ_H_
  27. #define _AIC94XX_SEQ_H_
  28. #define CSEQ_NUM_VECS 3
  29. #define LSEQ_NUM_VECS 11
  30. #define SAS_RAZOR_SEQUENCER_FW_FILE "aic94xx-seq.fw"
  31. /* Note: All quantites in the sequencer file are little endian */
  32. struct sequencer_file_header {
  33. /* Checksum of the entire contents of the sequencer excluding
  34. * these four bytes */
  35. u32 csum;
  36. /* numeric major version */
  37. u32 major;
  38. /* numeric minor version */
  39. u32 minor;
  40. /* version string printed by driver */
  41. char version[16];
  42. u32 cseq_table_offset;
  43. u32 cseq_table_size;
  44. u32 lseq_table_offset;
  45. u32 lseq_table_size;
  46. u32 cseq_code_offset;
  47. u32 cseq_code_size;
  48. u32 lseq_code_offset;
  49. u32 lseq_code_size;
  50. u16 mode2_task;
  51. u16 cseq_idle_loop;
  52. u16 lseq_idle_loop;
  53. } __attribute__((packed));
  54. #ifdef __KERNEL__
  55. int asd_pause_cseq(struct asd_ha_struct *asd_ha);
  56. int asd_unpause_cseq(struct asd_ha_struct *asd_ha);
  57. int asd_pause_lseq(struct asd_ha_struct *asd_ha, u8 lseq_mask);
  58. int asd_unpause_lseq(struct asd_ha_struct *asd_ha, u8 lseq_mask);
  59. int asd_init_seqs(struct asd_ha_struct *asd_ha);
  60. int asd_start_seqs(struct asd_ha_struct *asd_ha);
  61. void asd_update_port_links(struct asd_sas_phy *phy);
  62. #endif
  63. #endif