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
27#ifndef _AIC94XX_SEQ_H_
28#define _AIC94XX_SEQ_H_
29
30#define CSEQ_NUM_VECS	3
31#define LSEQ_NUM_VECS	11
32
33#define SAS_RAZOR_SEQUENCER_FW_FILE "aic94xx-seq.fw"
34#define SAS_RAZOR_SEQUENCER_FW_MAJOR	1
35
36/* Note:  All quantites in the sequencer file are little endian */
37struct sequencer_file_header {
38	/* Checksum of the entire contents of the sequencer excluding
39	 * these four bytes */
40	u32	csum;
41	/* numeric major version */
42	u32	major;
43	/* numeric minor version */
44	u32	minor;
45	/* version string printed by driver */
46	char	version[16];
47	u32	cseq_table_offset;
48	u32	cseq_table_size;
49	u32	lseq_table_offset;
50	u32	lseq_table_size;
51	u32	cseq_code_offset;
52	u32	cseq_code_size;
53	u32	lseq_code_offset;
54	u32	lseq_code_size;
55	u16	mode2_task;
56	u16	cseq_idle_loop;
57	u16	lseq_idle_loop;
58} __attribute__((packed));
59
60#ifdef __KERNEL__
61int asd_init_seqs(struct asd_ha_struct *asd_ha);
62int asd_start_seqs(struct asd_ha_struct *asd_ha);
63int asd_release_firmware(void);
64
65void asd_update_port_links(struct asd_ha_struct *asd_ha, struct asd_phy *phy);
66#endif
67
68#endif
69