16f231dda68080759f1aed3769896e94c73099f0fDan Williams/*
26f231dda68080759f1aed3769896e94c73099f0fDan Williams * This file is provided under a dual BSD/GPLv2 license.  When using or
36f231dda68080759f1aed3769896e94c73099f0fDan Williams * redistributing this file, you may do so under either license.
46f231dda68080759f1aed3769896e94c73099f0fDan Williams *
56f231dda68080759f1aed3769896e94c73099f0fDan Williams * GPL LICENSE SUMMARY
66f231dda68080759f1aed3769896e94c73099f0fDan Williams *
76f231dda68080759f1aed3769896e94c73099f0fDan Williams * Copyright(c) 2008 - 2011 Intel Corporation. All rights reserved.
86f231dda68080759f1aed3769896e94c73099f0fDan Williams *
96f231dda68080759f1aed3769896e94c73099f0fDan Williams * This program is free software; you can redistribute it and/or modify
106f231dda68080759f1aed3769896e94c73099f0fDan Williams * it under the terms of version 2 of the GNU General Public License as
116f231dda68080759f1aed3769896e94c73099f0fDan Williams * published by the Free Software Foundation.
126f231dda68080759f1aed3769896e94c73099f0fDan Williams *
136f231dda68080759f1aed3769896e94c73099f0fDan Williams * This program is distributed in the hope that it will be useful, but
146f231dda68080759f1aed3769896e94c73099f0fDan Williams * WITHOUT ANY WARRANTY; without even the implied warranty of
156f231dda68080759f1aed3769896e94c73099f0fDan Williams * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
166f231dda68080759f1aed3769896e94c73099f0fDan Williams * General Public License for more details.
176f231dda68080759f1aed3769896e94c73099f0fDan Williams *
186f231dda68080759f1aed3769896e94c73099f0fDan Williams * You should have received a copy of the GNU General Public License
196f231dda68080759f1aed3769896e94c73099f0fDan Williams * along with this program; if not, write to the Free Software
206f231dda68080759f1aed3769896e94c73099f0fDan Williams * Foundation, Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
216f231dda68080759f1aed3769896e94c73099f0fDan Williams * The full GNU General Public License is included in this distribution
226f231dda68080759f1aed3769896e94c73099f0fDan Williams * in the file called LICENSE.GPL.
236f231dda68080759f1aed3769896e94c73099f0fDan Williams *
246f231dda68080759f1aed3769896e94c73099f0fDan Williams * BSD LICENSE
256f231dda68080759f1aed3769896e94c73099f0fDan Williams *
266f231dda68080759f1aed3769896e94c73099f0fDan Williams * Copyright(c) 2008 - 2011 Intel Corporation. All rights reserved.
276f231dda68080759f1aed3769896e94c73099f0fDan Williams * All rights reserved.
286f231dda68080759f1aed3769896e94c73099f0fDan Williams *
296f231dda68080759f1aed3769896e94c73099f0fDan Williams * Redistribution and use in source and binary forms, with or without
306f231dda68080759f1aed3769896e94c73099f0fDan Williams * modification, are permitted provided that the following conditions
316f231dda68080759f1aed3769896e94c73099f0fDan Williams * are met:
326f231dda68080759f1aed3769896e94c73099f0fDan Williams *
336f231dda68080759f1aed3769896e94c73099f0fDan Williams *   * Redistributions of source code must retain the above copyright
346f231dda68080759f1aed3769896e94c73099f0fDan Williams *     notice, this list of conditions and the following disclaimer.
356f231dda68080759f1aed3769896e94c73099f0fDan Williams *   * Redistributions in binary form must reproduce the above copyright
366f231dda68080759f1aed3769896e94c73099f0fDan Williams *     notice, this list of conditions and the following disclaimer in
376f231dda68080759f1aed3769896e94c73099f0fDan Williams *     the documentation and/or other materials provided with the
386f231dda68080759f1aed3769896e94c73099f0fDan Williams *     distribution.
396f231dda68080759f1aed3769896e94c73099f0fDan Williams *   * Neither the name of Intel Corporation nor the names of its
406f231dda68080759f1aed3769896e94c73099f0fDan Williams *     contributors may be used to endorse or promote products derived
416f231dda68080759f1aed3769896e94c73099f0fDan Williams *     from this software without specific prior written permission.
426f231dda68080759f1aed3769896e94c73099f0fDan Williams *
436f231dda68080759f1aed3769896e94c73099f0fDan Williams * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
446f231dda68080759f1aed3769896e94c73099f0fDan Williams * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
456f231dda68080759f1aed3769896e94c73099f0fDan Williams * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
466f231dda68080759f1aed3769896e94c73099f0fDan Williams * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
476f231dda68080759f1aed3769896e94c73099f0fDan Williams * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
486f231dda68080759f1aed3769896e94c73099f0fDan Williams * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
496f231dda68080759f1aed3769896e94c73099f0fDan Williams * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
506f231dda68080759f1aed3769896e94c73099f0fDan Williams * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
516f231dda68080759f1aed3769896e94c73099f0fDan Williams * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
526f231dda68080759f1aed3769896e94c73099f0fDan Williams * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
536f231dda68080759f1aed3769896e94c73099f0fDan Williams * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
546f231dda68080759f1aed3769896e94c73099f0fDan Williams */
556f231dda68080759f1aed3769896e94c73099f0fDan Williams
566f231dda68080759f1aed3769896e94c73099f0fDan Williams#ifndef _SCU_REGISTERS_H_
576f231dda68080759f1aed3769896e94c73099f0fDan Williams#define _SCU_REGISTERS_H_
586f231dda68080759f1aed3769896e94c73099f0fDan Williams
596f231dda68080759f1aed3769896e94c73099f0fDan Williams/**
606f231dda68080759f1aed3769896e94c73099f0fDan Williams * This file contains the constants and structures for the SCU memory mapped
616f231dda68080759f1aed3769896e94c73099f0fDan Williams *    registers.
626f231dda68080759f1aed3769896e94c73099f0fDan Williams *
636f231dda68080759f1aed3769896e94c73099f0fDan Williams *
646f231dda68080759f1aed3769896e94c73099f0fDan Williams */
656f231dda68080759f1aed3769896e94c73099f0fDan Williams
6663a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_VIIT_ENTRY_ID_MASK         (0xC0000000)
6763a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_VIIT_ENTRY_ID_SHIFT        (30)
686f231dda68080759f1aed3769896e94c73099f0fDan Williams
6963a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_VIIT_ENTRY_FUNCTION_MASK   (0x0FF00000)
7063a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_VIIT_ENTRY_FUNCTION_SHIFT  (20)
7163a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams
7263a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_VIIT_ENTRY_IPPTMODE_MASK   (0x0001F800)
7363a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_VIIT_ENTRY_IPPTMODE_SHIFT  (12)
7463a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams
7563a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_VIIT_ENTRY_LPVIE_MASK      (0x00000F00)
7663a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_VIIT_ENTRY_LPVIE_SHIFT     (8)
7763a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams
7863a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_VIIT_ENTRY_STATUS_MASK     (0x000000FF)
7963a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_VIIT_ENTRY_STATUS_SHIFT    (0)
8063a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams
8163a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_VIIT_ENTRY_ID_INVALID   (0 << SCU_VIIT_ENTRY_ID_SHIFT)
8263a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_VIIT_ENTRY_ID_VIIT      (1 << SCU_VIIT_ENTRY_ID_SHIFT)
8363a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_VIIT_ENTRY_ID_IIT       (2 << SCU_VIIT_ENTRY_ID_SHIFT)
8463a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_VIIT_ENTRY_ID_VIRT_EXP  (3 << SCU_VIIT_ENTRY_ID_SHIFT)
8563a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams
8663a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_VIIT_IPPT_SSP_INITIATOR (0x01 << SCU_VIIT_ENTRY_IPPTMODE_SHIFT)
8763a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_VIIT_IPPT_SMP_INITIATOR (0x02 << SCU_VIIT_ENTRY_IPPTMODE_SHIFT)
8863a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_VIIT_IPPT_STP_INITIATOR (0x04 << SCU_VIIT_ENTRY_IPPTMODE_SHIFT)
8963a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_VIIT_IPPT_INITIATOR	    \
9063a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams	(\
9163a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams		SCU_VIIT_IPPT_SSP_INITIATOR  \
9263a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams		| SCU_VIIT_IPPT_SMP_INITIATOR  \
9363a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams		| SCU_VIIT_IPPT_STP_INITIATOR  \
9463a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams	)
9563a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams
9663a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_VIIT_STATUS_RNC_VALID      (0x01 << SCU_VIIT_ENTRY_STATUS_SHIFT)
9763a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_VIIT_STATUS_ADDRESS_VALID  (0x02 << SCU_VIIT_ENTRY_STATUS_SHIFT)
9863a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_VIIT_STATUS_RNI_VALID      (0x04 << SCU_VIIT_ENTRY_STATUS_SHIFT)
9963a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_VIIT_STATUS_ALL_VALID      \
10063a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams	(\
10163a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams		SCU_VIIT_STATUS_RNC_VALID	\
10263a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams		| SCU_VIIT_STATUS_ADDRESS_VALID	  \
10363a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams		| SCU_VIIT_STATUS_RNI_VALID	  \
10463a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams	)
10563a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams
10663a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_VIIT_IPPT_SMP_TARGET    (0x10 << SCU_VIIT_ENTRY_IPPTMODE_SHIFT)
10763a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams
10863a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams/**
10963a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams * struct scu_viit_entry - This is the SCU Virtual Initiator Table Entry
11063a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams *
11163a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams *
11263a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams */
11363a3a15fb00ef49e50e98ff675094afcd92f113aDan Williamsstruct scu_viit_entry {
11463a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams	/**
11563a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams	 * This must be encoded as to the type of initiator that is being constructed
11663a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams	 * for this port.
11763a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams	 */
11863a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams	u32 status;
11963a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams
12063a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams	/**
12163a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams	 * Virtual initiator high SAS Address
12263a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams	 */
12363a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams	u32 initiator_sas_address_hi;
12463a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams
12563a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams	/**
12663a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams	 * Virtual initiator low SAS Address
12763a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams	 */
12863a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams	u32 initiator_sas_address_lo;
12963a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams
13063a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams	/**
13163a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams	 * This must be 0
13263a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams	 */
13363a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams	u32 reserved;
13463a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams
13563a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams};
13663a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams
13763a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams
13863a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams/* IIT Status Defines */
13963a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_IIT_ENTRY_ID_MASK                (0xC0000000)
14063a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_IIT_ENTRY_ID_SHIFT               (30)
14163a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams
14263a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_IIT_ENTRY_STATUS_UPDATE_MASK     (0x20000000)
14363a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_IIT_ENTRY_STATUS_UPDATE_SHIFT    (29)
14463a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams
14563a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_IIT_ENTRY_LPI_MASK               (0x00000F00)
14663a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_IIT_ENTRY_LPI_SHIFT              (8)
14763a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams
14863a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_IIT_ENTRY_STATUS_MASK            (0x000000FF)
14963a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_IIT_ENTRY_STATUS_SHIFT           (0)
15063a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams
15163a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams/* IIT Remote Initiator Defines */
15263a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_IIT_ENTRY_REMOTE_TAG_MASK  (0x0000FFFF)
15363a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_IIT_ENTRY_REMOTE_TAG_SHIFT (0)
15463a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams
15563a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_IIT_ENTRY_REMOTE_RNC_MASK  (0x0FFF0000)
15663a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_IIT_ENTRY_REMOTE_RNC_SHIFT (16)
15763a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams
15863a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_IIT_ENTRY_ID_INVALID   (0 << SCU_IIT_ENTRY_ID_SHIFT)
15963a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_IIT_ENTRY_ID_VIIT      (1 << SCU_IIT_ENTRY_ID_SHIFT)
16063a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_IIT_ENTRY_ID_IIT       (2 << SCU_IIT_ENTRY_ID_SHIFT)
16163a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams#define SCU_IIT_ENTRY_ID_VIRT_EXP  (3 << SCU_IIT_ENTRY_ID_SHIFT)
16263a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams
16363a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams/**
16463a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams * struct scu_iit_entry - This will be implemented later when we support
16563a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams *    virtual functions
16663a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams *
16763a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams *
16863a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams */
16963a3a15fb00ef49e50e98ff675094afcd92f113aDan Williamsstruct scu_iit_entry {
17063a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams	u32 status;
17163a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams	u32 remote_initiator_sas_address_hi;
17263a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams	u32 remote_initiator_sas_address_lo;
17363a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams	u32 remote_initiator;
17463a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams
17563a3a15fb00ef49e50e98ff675094afcd92f113aDan Williams};
1766f231dda68080759f1aed3769896e94c73099f0fDan Williams
1776f231dda68080759f1aed3769896e94c73099f0fDan Williams/* Generate a value for an SCU register */
1786f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_GEN_VALUE(name, value) \
1796f231dda68080759f1aed3769896e94c73099f0fDan Williams	(((value) << name ## _SHIFT) & (name ## _MASK))
1806f231dda68080759f1aed3769896e94c73099f0fDan Williams
1816f231dda68080759f1aed3769896e94c73099f0fDan Williams/*
1826f231dda68080759f1aed3769896e94c73099f0fDan Williams * Generate a bit value for an SCU register
1836f231dda68080759f1aed3769896e94c73099f0fDan Williams * Make sure that the register MASK is just a single bit */
1846f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_GEN_BIT(name) \
1856f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_VALUE(name, ((u32)1))
1866f231dda68080759f1aed3769896e94c73099f0fDan Williams
1876f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SET_BIT(name, reg_value) \
1886f231dda68080759f1aed3769896e94c73099f0fDan Williams	((reg_value) | SCU_GEN_BIT(name))
1896f231dda68080759f1aed3769896e94c73099f0fDan Williams
1906f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_CLEAR_BIT(name, reg_value) \
1916f231dda68080759f1aed3769896e94c73099f0fDan Williams	((reg_value)$ ~(SCU_GEN_BIT(name)))
1926f231dda68080759f1aed3769896e94c73099f0fDan Williams
1936f231dda68080759f1aed3769896e94c73099f0fDan Williams/*
1946f231dda68080759f1aed3769896e94c73099f0fDan Williams * *****************************************************************************
1956f231dda68080759f1aed3769896e94c73099f0fDan Williams * Unions for bitfield definitions of SCU Registers
1966f231dda68080759f1aed3769896e94c73099f0fDan Williams * SMU Post Context Port
1976f231dda68080759f1aed3769896e94c73099f0fDan Williams * ***************************************************************************** */
1986f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_POST_CONTEXT_PORT_CONTEXT_INDEX_SHIFT         (0)
1996f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_POST_CONTEXT_PORT_CONTEXT_INDEX_MASK          (0x00000FFF)
2006f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_POST_CONTEXT_PORT_LOGICAL_PORT_INDEX_SHIFT    (12)
2016f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_POST_CONTEXT_PORT_LOGICAL_PORT_INDEX_MASK     (0x0000F000)
2026f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_POST_CONTEXT_PORT_PROTOCOL_ENGINE_SHIFT       (16)
2036f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_POST_CONTEXT_PORT_PROTOCOL_ENGINE_MASK        (0x00030000)
2046f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_POST_CONTEXT_PORT_COMMAND_CONTEXT_SHIFT       (18)
2056f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_POST_CONTEXT_PORT_COMMAND_CONTEXT_MASK        (0x00FC0000)
2066f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_POST_CONTEXT_PORT_RESERVED_MASK               (0xFF000000)
2076f231dda68080759f1aed3769896e94c73099f0fDan Williams
2086f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_PCP_GEN_VAL(name, value) \
2096f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_VALUE(SMU_POST_CONTEXT_PORT_ ## name, value)
2106f231dda68080759f1aed3769896e94c73099f0fDan Williams
2116f231dda68080759f1aed3769896e94c73099f0fDan Williams/* ***************************************************************************** */
2126f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_INTERRUPT_STATUS_COMPLETION_SHIFT       (31)
2136f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_INTERRUPT_STATUS_COMPLETION_MASK        (0x80000000)
2146f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_INTERRUPT_STATUS_QUEUE_SUSPEND_SHIFT    (1)
2156f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_INTERRUPT_STATUS_QUEUE_SUSPEND_MASK     (0x00000002)
2166f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_INTERRUPT_STATUS_QUEUE_ERROR_SHIFT      (0)
2176f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_INTERRUPT_STATUS_QUEUE_ERROR_MASK       (0x00000001)
2186f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_INTERRUPT_STATUS_RESERVED_MASK          (0x7FFFFFFC)
2196f231dda68080759f1aed3769896e94c73099f0fDan Williams
2206f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_ISR_GEN_BIT(name) \
2216f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_BIT(SMU_INTERRUPT_STATUS_ ## name)
2226f231dda68080759f1aed3769896e94c73099f0fDan Williams
2236f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_ISR_QUEUE_ERROR   SMU_ISR_GEN_BIT(QUEUE_ERROR)
2246f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_ISR_QUEUE_SUSPEND SMU_ISR_GEN_BIT(QUEUE_SUSPEND)
2256f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_ISR_COMPLETION    SMU_ISR_GEN_BIT(COMPLETION)
2266f231dda68080759f1aed3769896e94c73099f0fDan Williams
2276f231dda68080759f1aed3769896e94c73099f0fDan Williams/* ***************************************************************************** */
2286f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_INTERRUPT_MASK_COMPLETION_SHIFT         (31)
2296f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_INTERRUPT_MASK_COMPLETION_MASK          (0x80000000)
2306f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_INTERRUPT_MASK_QUEUE_SUSPEND_SHIFT      (1)
2316f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_INTERRUPT_MASK_QUEUE_SUSPEND_MASK       (0x00000002)
2326f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_INTERRUPT_MASK_QUEUE_ERROR_SHIFT        (0)
2336f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_INTERRUPT_MASK_QUEUE_ERROR_MASK         (0x00000001)
2346f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_INTERRUPT_MASK_RESERVED_MASK            (0x7FFFFFFC)
2356f231dda68080759f1aed3769896e94c73099f0fDan Williams
2366f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_IMR_GEN_BIT(name) \
2376f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_BIT(SMU_INTERRUPT_MASK_ ## name)
2386f231dda68080759f1aed3769896e94c73099f0fDan Williams
2396f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_IMR_QUEUE_ERROR   SMU_IMR_GEN_BIT(QUEUE_ERROR)
2406f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_IMR_QUEUE_SUSPEND SMU_IMR_GEN_BIT(QUEUE_SUSPEND)
2416f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_IMR_COMPLETION    SMU_IMR_GEN_BIT(COMPLETION)
2426f231dda68080759f1aed3769896e94c73099f0fDan Williams
2436f231dda68080759f1aed3769896e94c73099f0fDan Williams/* ***************************************************************************** */
2446f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_INTERRUPT_COALESCING_CONTROL_TIMER_SHIFT    (0)
2456f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_INTERRUPT_COALESCING_CONTROL_TIMER_MASK     (0x0000001F)
2466f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_INTERRUPT_COALESCING_CONTROL_NUMBER_SHIFT   (8)
2476f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_INTERRUPT_COALESCING_CONTROL_NUMBER_MASK    (0x0000FF00)
2486f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_INTERRUPT_COALESCING_CONTROL_RESERVED_MASK  (0xFFFF00E0)
2496f231dda68080759f1aed3769896e94c73099f0fDan Williams
2506f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_ICC_GEN_VAL(name, value) \
2516f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_VALUE(SMU_INTERRUPT_COALESCING_CONTROL_ ## name, value)
2526f231dda68080759f1aed3769896e94c73099f0fDan Williams
2536f231dda68080759f1aed3769896e94c73099f0fDan Williams/* ***************************************************************************** */
2546f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_TASK_CONTEXT_RANGE_START_SHIFT      (0)
2556f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_TASK_CONTEXT_RANGE_START_MASK       (0x00000FFF)
2566f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_TASK_CONTEXT_RANGE_ENDING_SHIFT     (16)
2576f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_TASK_CONTEXT_RANGE_ENDING_MASK      (0x0FFF0000)
2586f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_TASK_CONTEXT_RANGE_ENABLE_SHIFT     (31)
2596f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_TASK_CONTEXT_RANGE_ENABLE_MASK      (0x80000000)
2606f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_TASK_CONTEXT_RANGE_RESERVED_MASK    (0x7000F000)
2616f231dda68080759f1aed3769896e94c73099f0fDan Williams
2626f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_TCR_GEN_VAL(name, value) \
2636f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_VALUE(SMU_TASK_CONTEXT_RANGE_ ## name, value)
2646f231dda68080759f1aed3769896e94c73099f0fDan Williams
2656f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_TCR_GEN_BIT(name, value) \
2666f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_BIT(SMU_TASK_CONTEXT_RANGE_ ## name)
2676f231dda68080759f1aed3769896e94c73099f0fDan Williams
2686f231dda68080759f1aed3769896e94c73099f0fDan Williams/* ***************************************************************************** */
2696f231dda68080759f1aed3769896e94c73099f0fDan Williams
2706f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_COMPLETION_QUEUE_PUT_POINTER_SHIFT          (0)
2716f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_COMPLETION_QUEUE_PUT_POINTER_MASK           (0x00003FFF)
2726f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_COMPLETION_QUEUE_PUT_CYCLE_BIT_SHIFT        (15)
2736f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_COMPLETION_QUEUE_PUT_CYCLE_BIT_MASK         (0x00008000)
2746f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_COMPLETION_QUEUE_PUT_EVENT_POINTER_SHIFT    (16)
2756f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_COMPLETION_QUEUE_PUT_EVENT_POINTER_MASK     (0x03FF0000)
2766f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_COMPLETION_QUEUE_PUT_EVENT_CYCLE_BIT_SHIFT  (26)
2776f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_COMPLETION_QUEUE_PUT_EVENT_CYCLE_BIT_MASK   (0x04000000)
2786f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_COMPLETION_QUEUE_PUT_RESERVED_MASK          (0xF8004000)
2796f231dda68080759f1aed3769896e94c73099f0fDan Williams
2806f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_CQPR_GEN_VAL(name, value) \
2816f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_VALUE(SMU_COMPLETION_QUEUE_PUT_ ## name, value)
2826f231dda68080759f1aed3769896e94c73099f0fDan Williams
2836f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_CQPR_GEN_BIT(name) \
2846f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_BIT(SMU_COMPLETION_QUEUE_PUT_ ## name)
2856f231dda68080759f1aed3769896e94c73099f0fDan Williams
2866f231dda68080759f1aed3769896e94c73099f0fDan Williams/* ***************************************************************************** */
2876f231dda68080759f1aed3769896e94c73099f0fDan Williams
2886f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_COMPLETION_QUEUE_GET_POINTER_SHIFT          (0)
2896f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_COMPLETION_QUEUE_GET_POINTER_MASK           (0x00003FFF)
2906f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_COMPLETION_QUEUE_GET_CYCLE_BIT_SHIFT        (15)
2916f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_COMPLETION_QUEUE_GET_CYCLE_BIT_MASK         (0x00008000)
2926f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_COMPLETION_QUEUE_GET_EVENT_POINTER_SHIFT    (16)
2936f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_COMPLETION_QUEUE_GET_EVENT_POINTER_MASK     (0x03FF0000)
2946f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_COMPLETION_QUEUE_GET_EVENT_CYCLE_BIT_SHIFT  (26)
2956f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_COMPLETION_QUEUE_GET_EVENT_CYCLE_BIT_MASK   (0x04000000)
2966f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_COMPLETION_QUEUE_GET_ENABLE_SHIFT           (30)
2976f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_COMPLETION_QUEUE_GET_ENABLE_MASK            (0x40000000)
2986f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_COMPLETION_QUEUE_GET_EVENT_ENABLE_SHIFT     (31)
2996f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_COMPLETION_QUEUE_GET_EVENT_ENABLE_MASK      (0x80000000)
3006f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_COMPLETION_QUEUE_GET_RESERVED_MASK          (0x38004000)
3016f231dda68080759f1aed3769896e94c73099f0fDan Williams
3026f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_CQGR_GEN_VAL(name, value) \
3036f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_VALUE(SMU_COMPLETION_QUEUE_GET_ ## name, value)
3046f231dda68080759f1aed3769896e94c73099f0fDan Williams
3056f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_CQGR_GEN_BIT(name) \
3066f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_BIT(SMU_COMPLETION_QUEUE_GET_ ## name)
3076f231dda68080759f1aed3769896e94c73099f0fDan Williams
3086f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_CQGR_CYCLE_BIT \
3096f231dda68080759f1aed3769896e94c73099f0fDan Williams	SMU_CQGR_GEN_BIT(CYCLE_BIT)
3106f231dda68080759f1aed3769896e94c73099f0fDan Williams
3116f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_CQGR_EVENT_CYCLE_BIT \
3126f231dda68080759f1aed3769896e94c73099f0fDan Williams	SMU_CQGR_GEN_BIT(EVENT_CYCLE_BIT)
3136f231dda68080759f1aed3769896e94c73099f0fDan Williams
3146f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_CQGR_GET_POINTER_SET(value)	\
3156f231dda68080759f1aed3769896e94c73099f0fDan Williams	SMU_CQGR_GEN_VAL(POINTER, value)
3166f231dda68080759f1aed3769896e94c73099f0fDan Williams
3176f231dda68080759f1aed3769896e94c73099f0fDan Williams
3186f231dda68080759f1aed3769896e94c73099f0fDan Williams/* ***************************************************************************** */
3196f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_COMPLETION_QUEUE_CONTROL_QUEUE_LIMIT_SHIFT  (0)
3206f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_COMPLETION_QUEUE_CONTROL_QUEUE_LIMIT_MASK   (0x00003FFF)
3216f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_COMPLETION_QUEUE_CONTROL_EVENT_LIMIT_SHIFT  (16)
3226f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_COMPLETION_QUEUE_CONTROL_EVENT_LIMIT_MASK   (0x03FF0000)
3236f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_COMPLETION_QUEUE_CONTROL_RESERVED_MASK      (0xFC00C000)
3246f231dda68080759f1aed3769896e94c73099f0fDan Williams
3256f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_CQC_GEN_VAL(name, value) \
3266f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_VALUE(SMU_COMPLETION_QUEUE_CONTROL_ ## name, value)
3276f231dda68080759f1aed3769896e94c73099f0fDan Williams
3286f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_CQC_QUEUE_LIMIT_SET(value) \
3296f231dda68080759f1aed3769896e94c73099f0fDan Williams	SMU_CQC_GEN_VAL(QUEUE_LIMIT, value)
3306f231dda68080759f1aed3769896e94c73099f0fDan Williams
3316f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_CQC_EVENT_LIMIT_SET(value) \
3326f231dda68080759f1aed3769896e94c73099f0fDan Williams	SMU_CQC_GEN_VAL(EVENT_LIMIT, value)
3336f231dda68080759f1aed3769896e94c73099f0fDan Williams
3346f231dda68080759f1aed3769896e94c73099f0fDan Williams
3356f231dda68080759f1aed3769896e94c73099f0fDan Williams/* ***************************************************************************** */
3366f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_DEVICE_CONTEXT_CAPACITY_MAX_TC_SHIFT    (0)
3376f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_DEVICE_CONTEXT_CAPACITY_MAX_TC_MASK     (0x00000FFF)
3386f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_DEVICE_CONTEXT_CAPACITY_MAX_LP_SHIFT    (12)
3396f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_DEVICE_CONTEXT_CAPACITY_MAX_LP_MASK     (0x00007000)
3406f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_DEVICE_CONTEXT_CAPACITY_MAX_RNC_SHIFT   (15)
3416f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_DEVICE_CONTEXT_CAPACITY_MAX_RNC_MASK    (0x07FF8000)
3426f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_DEVICE_CONTEXT_CAPACITY_MAX_PEG_SHIFT   (27)
3436f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_DEVICE_CONTEXT_CAPACITY_MAX_PEG_MASK    (0x08000000)
3446f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_DEVICE_CONTEXT_CAPACITY_RESERVED_MASK   (0xF0000000)
3456f231dda68080759f1aed3769896e94c73099f0fDan Williams
3466f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_DCC_GEN_VAL(name, value) \
3476f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_VALUE(SMU_DEVICE_CONTEXT_CAPACITY_ ## name, value)
3486f231dda68080759f1aed3769896e94c73099f0fDan Williams
3496f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_DCC_GET_MAX_PEG(value) \
3506f231dda68080759f1aed3769896e94c73099f0fDan Williams	(\
3516f231dda68080759f1aed3769896e94c73099f0fDan Williams		((value) & SMU_DEVICE_CONTEXT_CAPACITY_MAX_PEG_MASK) \
3526f231dda68080759f1aed3769896e94c73099f0fDan Williams		>> SMU_DEVICE_CONTEXT_CAPACITY_MAX_LP_SHIFT \
3536f231dda68080759f1aed3769896e94c73099f0fDan Williams	)
3546f231dda68080759f1aed3769896e94c73099f0fDan Williams
3556f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_DCC_GET_MAX_LP(value) \
3566f231dda68080759f1aed3769896e94c73099f0fDan Williams	(\
3576f231dda68080759f1aed3769896e94c73099f0fDan Williams		((value) & SMU_DEVICE_CONTEXT_CAPACITY_MAX_LP_MASK) \
3586f231dda68080759f1aed3769896e94c73099f0fDan Williams		>> SMU_DEVICE_CONTEXT_CAPACITY_MAX_LP_SHIFT \
3596f231dda68080759f1aed3769896e94c73099f0fDan Williams	)
3606f231dda68080759f1aed3769896e94c73099f0fDan Williams
3616f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_DCC_GET_MAX_TC(value) \
3626f231dda68080759f1aed3769896e94c73099f0fDan Williams	(\
3636f231dda68080759f1aed3769896e94c73099f0fDan Williams		((value) & SMU_DEVICE_CONTEXT_CAPACITY_MAX_TC_MASK) \
3646f231dda68080759f1aed3769896e94c73099f0fDan Williams		>> SMU_DEVICE_CONTEXT_CAPACITY_MAX_TC_SHIFT \
3656f231dda68080759f1aed3769896e94c73099f0fDan Williams	)
3666f231dda68080759f1aed3769896e94c73099f0fDan Williams
3676f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_DCC_GET_MAX_RNC(value) \
3686f231dda68080759f1aed3769896e94c73099f0fDan Williams	(\
3696f231dda68080759f1aed3769896e94c73099f0fDan Williams		((value) & SMU_DEVICE_CONTEXT_CAPACITY_MAX_RNC_MASK) \
3706f231dda68080759f1aed3769896e94c73099f0fDan Williams		>> SMU_DEVICE_CONTEXT_CAPACITY_MAX_RNC_SHIFT \
3716f231dda68080759f1aed3769896e94c73099f0fDan Williams	)
3726f231dda68080759f1aed3769896e94c73099f0fDan Williams
373e5cc6aa4b6ef34c3f054af8c61a4f73c157589c3Marcin Tomczak/* ***************************************************************************** */
374e5cc6aa4b6ef34c3f054af8c61a4f73c157589c3Marcin Tomczak#define SMU_CLOCK_GATING_CONTROL_IDLE_ENABLE_SHIFT    (0)
375e5cc6aa4b6ef34c3f054af8c61a4f73c157589c3Marcin Tomczak#define SMU_CLOCK_GATING_CONTROL_IDLE_ENABLE_MASK     (0x00000001)
376e5cc6aa4b6ef34c3f054af8c61a4f73c157589c3Marcin Tomczak#define SMU_CLOCK_GATING_CONTROL_XCLK_ENABLE_SHIFT    (1)
377e5cc6aa4b6ef34c3f054af8c61a4f73c157589c3Marcin Tomczak#define SMU_CLOCK_GATING_CONTROL_XCLK_ENABLE_MASK     (0x00000002)
378e5cc6aa4b6ef34c3f054af8c61a4f73c157589c3Marcin Tomczak#define SMU_CLOCK_GATING_CONTROL_TXCLK_ENABLE_SHIFT   (2)
379e5cc6aa4b6ef34c3f054af8c61a4f73c157589c3Marcin Tomczak#define SMU_CLOCK_GATING_CONTROL_TXCLK_ENABLE_MASK    (0x00000004)
380e5cc6aa4b6ef34c3f054af8c61a4f73c157589c3Marcin Tomczak#define SMU_CLOCK_GATING_CONTROL_REGCLK_ENABLE_SHIFT  (3)
381e5cc6aa4b6ef34c3f054af8c61a4f73c157589c3Marcin Tomczak#define SMU_CLOCK_GATING_CONTROL_REGCLK_ENABLE_MASK   (0x00000008)
382e5cc6aa4b6ef34c3f054af8c61a4f73c157589c3Marcin Tomczak#define SMU_CLOCK_GATING_CONTROL_IDLE_TIMEOUT_SHIFT   (16)
383e5cc6aa4b6ef34c3f054af8c61a4f73c157589c3Marcin Tomczak#define SMU_CLOCK_GATING_CONTROL_IDLE_TIMEOUT_MASK    (0x000F0000)
384e5cc6aa4b6ef34c3f054af8c61a4f73c157589c3Marcin Tomczak#define SMU_CLOCK_GATING_CONTROL_FORCE_IDLE_SHIFT     (31)
385e5cc6aa4b6ef34c3f054af8c61a4f73c157589c3Marcin Tomczak#define SMU_CLOCK_GATING_CONTROL_FORCE_IDLE_MASK      (0x80000000)
386e5cc6aa4b6ef34c3f054af8c61a4f73c157589c3Marcin Tomczak#define SMU_CLOCK_GATING_CONTROL_RESERVED_MASK        (0x7FF0FFF0)
387e5cc6aa4b6ef34c3f054af8c61a4f73c157589c3Marcin Tomczak
388e5cc6aa4b6ef34c3f054af8c61a4f73c157589c3Marcin Tomczak#define SMU_CGUCR_GEN_VAL(name, value) \
389e5cc6aa4b6ef34c3f054af8c61a4f73c157589c3Marcin Tomczak	SCU_GEN_VALUE(SMU_CLOCK_GATING_CONTROL_##name, value)
390e5cc6aa4b6ef34c3f054af8c61a4f73c157589c3Marcin Tomczak
391e5cc6aa4b6ef34c3f054af8c61a4f73c157589c3Marcin Tomczak#define SMU_CGUCR_GEN_BIT(name) \
392e5cc6aa4b6ef34c3f054af8c61a4f73c157589c3Marcin Tomczak	SCU_GEN_BIT(SMU_CLOCK_GATING_CONTROL_##name)
393e5cc6aa4b6ef34c3f054af8c61a4f73c157589c3Marcin Tomczak
3946f231dda68080759f1aed3769896e94c73099f0fDan Williams/* -------------------------------------------------------------------------- */
3956f231dda68080759f1aed3769896e94c73099f0fDan Williams
3966f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_CONTROL_STATUS_TASK_CONTEXT_RANGE_ENABLE_SHIFT      (0)
3976f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_CONTROL_STATUS_TASK_CONTEXT_RANGE_ENABLE_MASK       (0x00000001)
3986f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_CONTROL_STATUS_COMPLETION_BYTE_SWAP_ENABLE_SHIFT    (1)
3996f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_CONTROL_STATUS_COMPLETION_BYTE_SWAP_ENABLE_MASK     (0x00000002)
4006f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_CONTROL_STATUS_CONTEXT_RAM_INIT_COMPLETED_SHIFT     (16)
4016f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_CONTROL_STATUS_CONTEXT_RAM_INIT_COMPLETED_MASK      (0x00010000)
4026f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_CONTROL_STATUS_SCHEDULER_RAM_INIT_COMPLETED_SHIFT   (17)
4036f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_CONTROL_STATUS_SCHEDULER_RAM_INIT_COMPLETED_MASK    (0x00020000)
4046f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_CONTROL_STATUS_RESERVED_MASK                        (0xFFFCFFFC)
4056f231dda68080759f1aed3769896e94c73099f0fDan Williams
4066f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SMUCSR_GEN_BIT(name) \
4076f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_BIT(SMU_CONTROL_STATUS_ ## name)
4086f231dda68080759f1aed3769896e94c73099f0fDan Williams
4096f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SMUCSR_SCHEDULER_RAM_INIT_COMPLETED	\
4106f231dda68080759f1aed3769896e94c73099f0fDan Williams	(SMU_SMUCSR_GEN_BIT(SCHEDULER_RAM_INIT_COMPLETED))
4116f231dda68080759f1aed3769896e94c73099f0fDan Williams
4126f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SMUCSR_CONTEXT_RAM_INIT_COMPLETED	\
4136f231dda68080759f1aed3769896e94c73099f0fDan Williams	(SMU_SMUCSR_GEN_BIT(CONTEXT_RAM_INIT_COMPLETED))
4146f231dda68080759f1aed3769896e94c73099f0fDan Williams
4156f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_RAM_INIT_COMPLETED \
4166f231dda68080759f1aed3769896e94c73099f0fDan Williams	(\
4176f231dda68080759f1aed3769896e94c73099f0fDan Williams		SMU_SMUCSR_CONTEXT_RAM_INIT_COMPLETED \
4186f231dda68080759f1aed3769896e94c73099f0fDan Williams		| SMU_SMUCSR_SCHEDULER_RAM_INIT_COMPLETED \
4196f231dda68080759f1aed3769896e94c73099f0fDan Williams	)
4206f231dda68080759f1aed3769896e94c73099f0fDan Williams
4216f231dda68080759f1aed3769896e94c73099f0fDan Williams/* -------------------------------------------------------------------------- */
4226f231dda68080759f1aed3769896e94c73099f0fDan Williams
4236f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SOFTRESET_CONTROL_RESET_PEG0_PE0_SHIFT  (0)
4246f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SOFTRESET_CONTROL_RESET_PEG0_PE0_MASK   (0x00000001)
4256f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SOFTRESET_CONTROL_RESET_PEG0_PE1_SHIFT  (1)
4266f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SOFTRESET_CONTROL_RESET_PEG0_PE1_MASK   (0x00000002)
4276f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SOFTRESET_CONTROL_RESET_PEG0_PE2_SHIFT  (2)
4286f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SOFTRESET_CONTROL_RESET_PEG0_PE2_MASK   (0x00000004)
4296f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SOFTRESET_CONTROL_RESET_PEG0_PE3_SHIFT  (3)
4306f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SOFTRESET_CONTROL_RESET_PEG0_PE3_MASK   (0x00000008)
4316f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SOFTRESET_CONTROL_RESET_PEG1_PE0_SHIFT  (8)
4326f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SOFTRESET_CONTROL_RESET_PEG1_PE0_MASK   (0x00000100)
4336f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SOFTRESET_CONTROL_RESET_PEG1_PE1_SHIFT  (9)
4346f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SOFTRESET_CONTROL_RESET_PEG1_PE1_MASK   (0x00000200)
4356f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SOFTRESET_CONTROL_RESET_PEG1_PE2_SHIFT  (10)
4366f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SOFTRESET_CONTROL_RESET_PEG1_PE2_MASK   (0x00000400)
4376f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SOFTRESET_CONTROL_RESET_PEG1_PE3_SHIFT  (11)
4386f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SOFTRESET_CONTROL_RESET_PEG1_PE3_MASK   (0x00000800)
4396f231dda68080759f1aed3769896e94c73099f0fDan Williams
4406f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_RESET_PROTOCOL_ENGINE(peg, pe) \
4416f231dda68080759f1aed3769896e94c73099f0fDan Williams	((1 << (pe)) << ((peg) * 8))
4426f231dda68080759f1aed3769896e94c73099f0fDan Williams
4436f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_RESET_PEG_PROTOCOL_ENGINES(peg) \
4446f231dda68080759f1aed3769896e94c73099f0fDan Williams	(\
4456f231dda68080759f1aed3769896e94c73099f0fDan Williams		SMU_RESET_PROTOCOL_ENGINE(peg, 0) \
4466f231dda68080759f1aed3769896e94c73099f0fDan Williams		| SMU_RESET_PROTOCOL_ENGINE(peg, 1) \
4476f231dda68080759f1aed3769896e94c73099f0fDan Williams		| SMU_RESET_PROTOCOL_ENGINE(peg, 2) \
4486f231dda68080759f1aed3769896e94c73099f0fDan Williams		| SMU_RESET_PROTOCOL_ENGINE(peg, 3) \
4496f231dda68080759f1aed3769896e94c73099f0fDan Williams	)
4506f231dda68080759f1aed3769896e94c73099f0fDan Williams
4516f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_RESET_ALL_PROTOCOL_ENGINES() \
4526f231dda68080759f1aed3769896e94c73099f0fDan Williams	(\
4536f231dda68080759f1aed3769896e94c73099f0fDan Williams		SMU_RESET_PEG_PROTOCOL_ENGINES(0) \
4546f231dda68080759f1aed3769896e94c73099f0fDan Williams		| SMU_RESET_PEG_PROTOCOL_ENGINES(1) \
4556f231dda68080759f1aed3769896e94c73099f0fDan Williams	)
4566f231dda68080759f1aed3769896e94c73099f0fDan Williams
4576f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SOFTRESET_CONTROL_RESET_WIDE_PORT_PEG0_LP0_SHIFT  (16)
4586f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SOFTRESET_CONTROL_RESET_WIDE_PORT_PEG0_LP0_MASK   (0x00010000)
4596f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SOFTRESET_CONTROL_RESET_WIDE_PORT_PEG0_LP2_SHIFT  (17)
4606f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SOFTRESET_CONTROL_RESET_WIDE_PORT_PEG0_LP2_MASK   (0x00020000)
4616f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SOFTRESET_CONTROL_RESET_WIDE_PORT_PEG1_LP0_SHIFT  (18)
4626f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SOFTRESET_CONTROL_RESET_WIDE_PORT_PEG1_LP0_MASK   (0x00040000)
4636f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SOFTRESET_CONTROL_RESET_WIDE_PORT_PEG1_LP2_SHIFT  (19)
4646f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SOFTRESET_CONTROL_RESET_WIDE_PORT_PEG1_LP2_MASK   (0x00080000)
4656f231dda68080759f1aed3769896e94c73099f0fDan Williams
4666f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_RESET_WIDE_PORT_QUEUE(peg, wide_port) \
4676f231dda68080759f1aed3769896e94c73099f0fDan Williams	((1 << ((wide_port) / 2)) << ((peg) * 2) << 16)
4686f231dda68080759f1aed3769896e94c73099f0fDan Williams
4696f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SOFTRESET_CONTROL_RESET_PEG0_SHIFT      (20)
4706f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SOFTRESET_CONTROL_RESET_PEG0_MASK       (0x00100000)
4716f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SOFTRESET_CONTROL_RESET_PEG1_SHIFT      (21)
4726f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SOFTRESET_CONTROL_RESET_PEG1_MASK       (0x00200000)
4736f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SOFTRESET_CONTROL_RESET_SCU_SHIFT       (22)
4746f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_SOFTRESET_CONTROL_RESET_SCU_MASK        (0x00400000)
4756f231dda68080759f1aed3769896e94c73099f0fDan Williams
4766f231dda68080759f1aed3769896e94c73099f0fDan Williams/*
4776f231dda68080759f1aed3769896e94c73099f0fDan Williams * It seems to make sense that if you are going to reset the protocol
4786f231dda68080759f1aed3769896e94c73099f0fDan Williams * engine group that you would also reset all of the protocol engines */
4796f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_RESET_PROTOCOL_ENGINE_GROUP(peg) \
4806f231dda68080759f1aed3769896e94c73099f0fDan Williams	(\
4816f231dda68080759f1aed3769896e94c73099f0fDan Williams		(1 << ((peg) + 20)) \
4826f231dda68080759f1aed3769896e94c73099f0fDan Williams		| SMU_RESET_WIDE_PORT_QUEUE(peg, 0) \
4836f231dda68080759f1aed3769896e94c73099f0fDan Williams		| SMU_RESET_WIDE_PORT_QUEUE(peg, 1) \
4846f231dda68080759f1aed3769896e94c73099f0fDan Williams		| SMU_RESET_PEG_PROTOCOL_ENGINES(peg) \
4856f231dda68080759f1aed3769896e94c73099f0fDan Williams	)
4866f231dda68080759f1aed3769896e94c73099f0fDan Williams
4876f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_RESET_ALL_PROTOCOL_ENGINE_GROUPS() \
4886f231dda68080759f1aed3769896e94c73099f0fDan Williams	(\
4896f231dda68080759f1aed3769896e94c73099f0fDan Williams		SMU_RESET_PROTOCOL_ENGINE_GROUP(0) \
4906f231dda68080759f1aed3769896e94c73099f0fDan Williams		| SMU_RESET_PROTOCOL_ENGINE_GROUP(1) \
4916f231dda68080759f1aed3769896e94c73099f0fDan Williams	)
4926f231dda68080759f1aed3769896e94c73099f0fDan Williams
4936f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_RESET_SCU()  (0xFFFFFFFF)
4946f231dda68080759f1aed3769896e94c73099f0fDan Williams
4956f231dda68080759f1aed3769896e94c73099f0fDan Williams
4966f231dda68080759f1aed3769896e94c73099f0fDan Williams
4976f231dda68080759f1aed3769896e94c73099f0fDan Williams/* ***************************************************************************** */
4986f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_TASK_CONTEXT_ASSIGNMENT_STARTING_SHIFT              (0)
4996f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_TASK_CONTEXT_ASSIGNMENT_STARTING_MASK               (0x00000FFF)
5006f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_TASK_CONTEXT_ASSIGNMENT_ENDING_SHIFT                (16)
5016f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_TASK_CONTEXT_ASSIGNMENT_ENDING_MASK                 (0x0FFF0000)
5026f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_TASK_CONTEXT_ASSIGNMENT_RANGE_CHECK_ENABLE_SHIFT    (31)
5036f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_TASK_CONTEXT_ASSIGNMENT_RANGE_CHECK_ENABLE_MASK     (0x80000000)
5046f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_TASK_CONTEXT_ASSIGNMENT_RESERVED_MASK               (0x7000F000)
5056f231dda68080759f1aed3769896e94c73099f0fDan Williams
5066f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_TCA_GEN_VAL(name, value) \
5076f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_VALUE(SMU_TASK_CONTEXT_ASSIGNMENT_ ## name, value)
5086f231dda68080759f1aed3769896e94c73099f0fDan Williams
5096f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SMU_TCA_GEN_BIT(name) \
5106f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_BIT(SMU_TASK_CONTEXT_ASSIGNMENT_ ## name)
5116f231dda68080759f1aed3769896e94c73099f0fDan Williams
5126f231dda68080759f1aed3769896e94c73099f0fDan Williams/* ***************************************************************************** */
5136f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SDMA_UNSOLICITED_FRAME_QUEUE_CONTROL_QUEUE_SIZE_SHIFT   (0)
5146f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SDMA_UNSOLICITED_FRAME_QUEUE_CONTROL_QUEUE_SIZE_MASK    (0x00000FFF)
5156f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SDMA_UNSOLICITED_FRAME_QUEUE_CONTROL_RESERVED_MASK      (0xFFFFF000)
5166f231dda68080759f1aed3769896e94c73099f0fDan Williams
5176f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_UFQC_GEN_VAL(name, value) \
5186f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_VALUE(SCU_SDMA_UNSOLICITED_FRAME_QUEUE_CONTROL_ ## name, value)
5196f231dda68080759f1aed3769896e94c73099f0fDan Williams
5206f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_UFQC_QUEUE_SIZE_SET(value) \
5216f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_UFQC_GEN_VAL(QUEUE_SIZE, value)
5226f231dda68080759f1aed3769896e94c73099f0fDan Williams
5236f231dda68080759f1aed3769896e94c73099f0fDan Williams/* ***************************************************************************** */
5246f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SDMA_UNSOLICITED_FRAME_QUEUE_PUT_POINTER_SHIFT      (0)
5256f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SDMA_UNSOLICITED_FRAME_QUEUE_PUT_POINTER_MASK       (0x00000FFF)
5266f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SDMA_UNSOLICITED_FRAME_QUEUE_PUT_CYCLE_BIT_SHIFT    (12)
5276f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SDMA_UNSOLICITED_FRAME_QUEUE_PUT_CYCLE_BIT_MASK     (0x00001000)
5286f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SDMA_UNSOLICITED_FRAME_QUEUE_PUT_RESERVED_MASK      (0xFFFFE000)
5296f231dda68080759f1aed3769896e94c73099f0fDan Williams
5306f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_UFQPP_GEN_VAL(name, value) \
5316f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_VALUE(SCU_SDMA_UNSOLICITED_FRAME_QUEUE_PUT_ ## name, value)
5326f231dda68080759f1aed3769896e94c73099f0fDan Williams
5336f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_UFQPP_GEN_BIT(name)	\
5346f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_BIT(SCU_SDMA_UNSOLICITED_FRAME_QUEUE_PUT_ ## name)
5356f231dda68080759f1aed3769896e94c73099f0fDan Williams
5366f231dda68080759f1aed3769896e94c73099f0fDan Williams/*
5376f231dda68080759f1aed3769896e94c73099f0fDan Williams * *****************************************************************************
5386f231dda68080759f1aed3769896e94c73099f0fDan Williams * * SDMA Registers
5396f231dda68080759f1aed3769896e94c73099f0fDan Williams * ***************************************************************************** */
5406f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SDMA_UNSOLICITED_FRAME_QUEUE_GET_POINTER_SHIFT      (0)
5416f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SDMA_UNSOLICITED_FRAME_QUEUE_GET_POINTER_MASK       (0x00000FFF)
5426f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SDMA_UNSOLICITED_FRAME_QUEUE_GET_CYCLE_BIT_SHIFT    (12)
5436f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SDMA_UNSOLICITED_FRAME_QUEUE_GET_CYCLE_BIT_MASK     (12)
5446f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SDMA_UNSOLICITED_FRAME_QUEUE_GET_ENABLE_BIT_SHIFT   (31)
5456f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SDMA_UNSOLICITED_FRAME_QUEUE_GET_ENABLE_BIT_MASK    (0x80000000)
5466f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SDMA_UNSOLICITED_FRAME_QUEUE_GET_RESERVED_MASK      (0x7FFFE000)
5476f231dda68080759f1aed3769896e94c73099f0fDan Williams
5486f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_UFQGP_GEN_VAL(name, value) \
5496f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_VALUE(SCU_SDMA_UNSOLICITED_FRAME_QUEUE_GET_ ## name, value)
5506f231dda68080759f1aed3769896e94c73099f0fDan Williams
5516f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_UFQGP_GEN_BIT(name)	\
5526f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_BIT(SCU_SDMA_UNSOLICITED_FRAME_QUEUE_GET_ ## name)
5536f231dda68080759f1aed3769896e94c73099f0fDan Williams
5546f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_UFQGP_CYCLE_BIT(value) \
5556f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_UFQGP_GEN_BIT(CYCLE_BIT, value)
5566f231dda68080759f1aed3769896e94c73099f0fDan Williams
5576f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_UFQGP_GET_POINTER(value) \
5586f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_UFQGP_GEN_VALUE(POINTER, value)
5596f231dda68080759f1aed3769896e94c73099f0fDan Williams
5606f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_UFQGP_ENABLE(value)	\
5616f231dda68080759f1aed3769896e94c73099f0fDan Williams	(SCU_UFQGP_GEN_BIT(ENABLE) | value)
5626f231dda68080759f1aed3769896e94c73099f0fDan Williams
5636f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_UFQGP_DISABLE(value) \
5646f231dda68080759f1aed3769896e94c73099f0fDan Williams	(~SCU_UFQGP_GEN_BIT(ENABLE) & value)
5656f231dda68080759f1aed3769896e94c73099f0fDan Williams
5666f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_UFQGP_VALUE(bit, value) \
5676f231dda68080759f1aed3769896e94c73099f0fDan Williams	(SCU_UFQGP_CYCLE_BIT(bit) | SCU_UFQGP_GET_POINTER(value))
5686f231dda68080759f1aed3769896e94c73099f0fDan Williams
5696f231dda68080759f1aed3769896e94c73099f0fDan Williams/* ***************************************************************************** */
5706f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PDMA_CONFIGURATION_ADDRESS_MODIFIER_SHIFT                               (0)
5716f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PDMA_CONFIGURATION_ADDRESS_MODIFIER_MASK                                (0x0000FFFF)
5726f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PDMA_CONFIGURATION_PCI_RELAXED_ORDERING_ENABLE_SHIFT                    (16)
5736f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PDMA_CONFIGURATION_PCI_RELAXED_ORDERING_ENABLE_MASK                     (0x00010000)
5746f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PDMA_CONFIGURATION_PCI_NO_SNOOP_ENABLE_SHIFT                            (17)
5756f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PDMA_CONFIGURATION_PCI_NO_SNOOP_ENABLE_MASK                             (0x00020000)
5766f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PDMA_CONFIGURATION_BIG_ENDIAN_CONTROL_BYTE_SWAP_SHIFT                   (18)
5776f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PDMA_CONFIGURATION_BIG_ENDIAN_CONTROL_BYTE_SWAP_MASK                    (0x00040000)
5786f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PDMA_CONFIGURATION_BIG_ENDIAN_CONTROL_XPI_SGL_FETCH_SHIFT               (19)
5796f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PDMA_CONFIGURATION_BIG_ENDIAN_CONTROL_XPI_SGL_FETCH_MASK                (0x00080000)
5806f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PDMA_CONFIGURATION_BIG_ENDIAN_CONTROL_XPI_RX_HEADER_RAM_WRITE_SHIFT     (20)
5816f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PDMA_CONFIGURATION_BIG_ENDIAN_CONTROL_XPI_RX_HEADER_RAM_WRITE_MASK      (0x00100000)
5826f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PDMA_CONFIGURATION_BIG_ENDIAN_CONTROL_XPI_UF_ADDRESS_FETCH_SHIFT        (21)
5836f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PDMA_CONFIGURATION_BIG_ENDIAN_CONTROL_XPI_UF_ADDRESS_FETCH_MASK         (0x00200000)
5846f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PDMA_CONFIGURATION_ADDRESS_MODIFIER_SELECT_SHIFT                        (22)
5856f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PDMA_CONFIGURATION_ADDRESS_MODIFIER_SELECT_MASK                         (0x00400000)
5866f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PDMA_CONFIGURATION_RESERVED_MASK                                        (0xFF800000)
5876f231dda68080759f1aed3769896e94c73099f0fDan Williams
5886f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PDMACR_GEN_VALUE(name, value) \
5896f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_VALUE(SCU_PDMA_CONFIGURATION_ ## name, value)
5906f231dda68080759f1aed3769896e94c73099f0fDan Williams
5916f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PDMACR_GEN_BIT(name) \
5926f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_BIT(SCU_PDMA_CONFIGURATION_ ## name)
5936f231dda68080759f1aed3769896e94c73099f0fDan Williams
5946f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PDMACR_BE_GEN_BIT(name) \
5956f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_PCMACR_GEN_BIT(BIG_ENDIAN_CONTROL_ ## name)
5966f231dda68080759f1aed3769896e94c73099f0fDan Williams
5976f231dda68080759f1aed3769896e94c73099f0fDan Williams/* ***************************************************************************** */
5986f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_CDMA_CONFIGURATION_PCI_RELAXED_ORDERING_ENABLE_SHIFT                    (8)
5996f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_CDMA_CONFIGURATION_PCI_RELAXED_ORDERING_ENABLE_MASK                     (0x00000100)
6006f231dda68080759f1aed3769896e94c73099f0fDan Williams
6016f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_CDMACR_GEN_BIT(name) \
6026f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_BIT(SCU_CDMA_CONFIGURATION_ ## name)
6036f231dda68080759f1aed3769896e94c73099f0fDan Williams
6046f231dda68080759f1aed3769896e94c73099f0fDan Williams/*
6056f231dda68080759f1aed3769896e94c73099f0fDan Williams * *****************************************************************************
6066f231dda68080759f1aed3769896e94c73099f0fDan Williams * * SCU Link Layer Registers
6076f231dda68080759f1aed3769896e94c73099f0fDan Williams * ***************************************************************************** */
6086f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_SPEED_NEGOTIATION_TIMER_VALUES_TIMEOUT_SHIFT             (0)
6096f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_SPEED_NEGOTIATION_TIMER_VALUES_TIMEOUT_MASK              (0x000000FF)
6106f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_SPEED_NEGOTIATION_TIMER_VALUES_LOCK_TIME_SHIFT           (8)
6116f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_SPEED_NEGOTIATION_TIMER_VALUES_LOCK_TIME_MASK            (0x0000FF00)
6126f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_SPEED_NEGOTIATION_TIMER_VALUES_RATE_CHANGE_DELAY_SHIFT   (16)
6136f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_SPEED_NEGOTIATION_TIMER_VALUES_RATE_CHANGE_DELAY_MASK    (0x00FF0000)
6146f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_SPEED_NEGOTIATION_TIMER_VALUES_DWORD_SYNC_TIMEOUT_SHIFT  (24)
6156f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_SPEED_NEGOTIATION_TIMER_VALUES_DWORD_SYNC_TIMEOUT_MASK   (0xFF000000)
6166f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_SPEED_NECGOIATION_TIMER_VALUES_REQUIRED_MASK             (0x00000000)
6176f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_SPEED_NECGOIATION_TIMER_VALUES_DEFAULT_MASK              (0x7D00676F)
6186f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_SPEED_NECGOIATION_TIMER_VALUES_RESERVED_MASK             (0x00FF0000)
6196f231dda68080759f1aed3769896e94c73099f0fDan Williams
6206f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_SPDTOV_GEN_VALUE(name, value) \
6216f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_VALUE(SCU_LINK_LAYER_SPEED_NEGOTIATION_TIMER_VALUES_ ## name, value)
6226f231dda68080759f1aed3769896e94c73099f0fDan Williams
6236f231dda68080759f1aed3769896e94c73099f0fDan Williams
6246f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_STATUS_DWORD_SYNC_AQUIRED_SHIFT            (2)
6256f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_STATUS_DWORD_SYNC_AQUIRED_MASK             (0x00000004)
6266f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_STATUS_TRANSMIT_PORT_SELECTION_DONE_SHIFT  (4)
6276f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_STATUS_TRANSMIT_PORT_SELECTION_DONE_MASK   (0x00000010)
6286f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_STATUS_RECEIVER_CREDIT_EXHAUSTED_SHIFT     (5)
6296f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_STATUS_RECEIVER_CREDIT_EXHAUSTED_MASK      (0x00000020)
6306f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_STATUS_RESERVED_MASK                       (0xFFFFFFCD)
6316f231dda68080759f1aed3769896e94c73099f0fDan Williams
6326f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_LLSTA_GEN_BIT(name) \
6336f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_BIT(SCU_LINK_STATUS_ ## name)
6346f231dda68080759f1aed3769896e94c73099f0fDan Williams
6356f231dda68080759f1aed3769896e94c73099f0fDan Williams
6366f231dda68080759f1aed3769896e94c73099f0fDan Williams/* TODO: Where is the SATA_PSELTOV register? */
6376f231dda68080759f1aed3769896e94c73099f0fDan Williams
6386f231dda68080759f1aed3769896e94c73099f0fDan Williams/*
6396f231dda68080759f1aed3769896e94c73099f0fDan Williams * *****************************************************************************
6406f231dda68080759f1aed3769896e94c73099f0fDan Williams * * SCU SAS Maximum Arbitration Wait Time Timeout Register
6416f231dda68080759f1aed3769896e94c73099f0fDan Williams * ***************************************************************************** */
6426f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_MAX_ARBITRATION_WAIT_TIME_TIMEOUT_VALUE_SHIFT       (0)
6436f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_MAX_ARBITRATION_WAIT_TIME_TIMEOUT_VALUE_MASK        (0x00007FFF)
6446f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_MAX_ARBITRATION_WAIT_TIME_TIMEOUT_SCALE_SHIFT       (15)
6456f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_MAX_ARBITRATION_WAIT_TIME_TIMEOUT_SCALE_MASK        (0x00008000)
6466f231dda68080759f1aed3769896e94c73099f0fDan Williams
6476f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_MAWTTOV_GEN_VALUE(name, value) \
6486f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_VALUE(SCU_SAS_MAX_ARBITRATION_WAIT_TIME_TIMEOUT_ ## name, value)
6496f231dda68080759f1aed3769896e94c73099f0fDan Williams
6506f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_MAWTTOV_GEN_BIT(name) \
6516f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_BIT(SCU_SAS_MAX_ARBITRATION_WAIT_TIME_TIMEOUT_ ## name)
6526f231dda68080759f1aed3769896e94c73099f0fDan Williams
6536f231dda68080759f1aed3769896e94c73099f0fDan Williams
6546f231dda68080759f1aed3769896e94c73099f0fDan Williams/*
6556f231dda68080759f1aed3769896e94c73099f0fDan Williams * TODO: Where is the SAS_LNKTOV regsiter?
6566f231dda68080759f1aed3769896e94c73099f0fDan Williams * TODO: Where is the SAS_PHYTOV register? */
6576f231dda68080759f1aed3769896e94c73099f0fDan Williams
6586f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TRANSMIT_IDENTIFICATION_SMP_TARGET_SHIFT            (1)
6596f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TRANSMIT_IDENTIFICATION_SMP_TARGET_MASK             (0x00000002)
6606f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TRANSMIT_IDENTIFICATION_STP_TARGET_SHIFT            (2)
6616f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TRANSMIT_IDENTIFICATION_STP_TARGET_MASK             (0x00000004)
6626f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TRANSMIT_IDENTIFICATION_SSP_TARGET_SHIFT            (3)
6636f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TRANSMIT_IDENTIFICATION_SSP_TARGET_MASK             (0x00000008)
6646f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TRANSMIT_IDENTIFICATION_DA_SATA_HOST_SHIFT          (8)
6656f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TRANSMIT_IDENTIFICATION_DA_SATA_HOST_MASK           (0x00000100)
6666f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TRANSMIT_IDENTIFICATION_SMP_INITIATOR_SHIFT         (9)
6676f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TRANSMIT_IDENTIFICATION_SMP_INITIATOR_MASK          (0x00000200)
6686f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TRANSMIT_IDENTIFICATION_STP_INITIATOR_SHIFT         (10)
6696f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TRANSMIT_IDENTIFICATION_STP_INITIATOR_MASK          (0x00000400)
6706f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TRANSMIT_IDENTIFICATION_SSP_INITIATOR_SHIFT         (11)
6716f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TRANSMIT_IDENTIFICATION_SSP_INITIATOR_MASK          (0x00000800)
6726f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TRANSMIT_IDENTIFICATION_REASON_CODE_SHIFT           (16)
6736f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TRANSMIT_IDENTIFICATION_REASON_CODE_MASK            (0x000F0000)
6746f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TRANSMIT_IDENTIFICATION_ADDRESS_FRAME_TYPE_SHIFT    (24)
6756f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TRANSMIT_IDENTIFICATION_ADDRESS_FRAME_TYPE_MASK     (0x0F000000)
6766f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TRANSMIT_IDENTIFICATION_DEVICE_TYPE_SHIFT           (28)
6776f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TRANSMIT_IDENTIFICATION_DEVICE_TYPE_MASK            (0x70000000)
6786f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TRANSMIT_IDENTIFICATION_RESERVED_MASK               (0x80F0F1F1)
6796f231dda68080759f1aed3769896e94c73099f0fDan Williams
6806f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TIID_GEN_VAL(name, value) \
6816f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_VALUE(SCU_SAS_TRANSMIT_IDENTIFICATION_ ## name, value)
6826f231dda68080759f1aed3769896e94c73099f0fDan Williams
6836f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TIID_GEN_BIT(name) \
6846f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_BIT(SCU_SAS_TRANSMIT_IDENTIFICATION_ ## name)
6856f231dda68080759f1aed3769896e94c73099f0fDan Williams
6866f231dda68080759f1aed3769896e94c73099f0fDan Williams/* SAS Identify Frame PHY Identifier Register */
6876f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_IDENTIFY_FRAME_PHY_IDENTIFIER_BREAK_REPLY_CAPABLE_SHIFT      (16)
6886f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_IDENTIFY_FRAME_PHY_IDENTIFIER_BREAK_REPLY_CAPABLE_MASK       (0x00010000)
6896f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_IDENTIFY_FRAME_PHY_IDENTIFIER_REQUESTED_INSIDE_ZPSDS_SHIFT   (17)
6906f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_IDENTIFY_FRAME_PHY_IDENTIFIER_REQUESTED_INSIDE_ZPSDS_MASK    (0x00020000)
6916f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_IDENTIFY_FRAME_PHY_IDENTIFIER_INSIDE_ZPSDS_PERSISTENT_SHIFT  (18)
6926f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_IDENTIFY_FRAME_PHY_IDENTIFIER_INSIDE_ZPSDS_PERSISTENT_MASK   (0x00040000)
6936f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_IDENTIFY_FRAME_PHY_IDENTIFIER_ID_SHIFT                       (24)
6946f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_IDENTIFY_FRAME_PHY_IDENTIFIER_ID_MASK                        (0xFF000000)
6956f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_IDENTIFY_FRAME_PHY_IDENTIFIER_RESERVED_MASK                  (0x00F800FF)
6966f231dda68080759f1aed3769896e94c73099f0fDan Williams
6976f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TIPID_GEN_VALUE(name, value) \
6986f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_VALUE(SCU_LINK_LAYER_IDENTIFY_FRAME_PHY_IDENTIFIER_ ## name, value)
6996f231dda68080759f1aed3769896e94c73099f0fDan Williams
7006f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TIPID_GEN_BIT(name) \
7016f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_BIT(SCU_LINK_LAYER_IDENTIFY_FRAME_PHY_IDENTIFIER_ ## name)
7026f231dda68080759f1aed3769896e94c73099f0fDan Williams
7036f231dda68080759f1aed3769896e94c73099f0fDan Williams
7046f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_TX_PARITY_CHECK_SHIFT                     (4)
7056f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_TX_PARITY_CHECK_MASK                      (0x00000010)
7066f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_TX_BAD_CRC_SHIFT                          (6)
7076f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_TX_BAD_CRC_MASK                           (0x00000040)
7086f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_DISABLE_SCRAMBLER_SHIFT                   (7)
7096f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_DISABLE_SCRAMBLER_MASK                    (0x00000080)
7106f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_DISABLE_DESCRAMBLER_SHIFT                 (8)
7116f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_DISABLE_DESCRAMBLER_MASK                  (0x00000100)
7126f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_DISABLE_CREDIT_INSERTION_SHIFT            (9)
7136f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_DISABLE_CREDIT_INSERTION_MASK             (0x00000200)
7146f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_SUSPEND_PROTOCOL_ENGINE_SHIFT             (11)
7156f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_SUSPEND_PROTOCOL_ENGINE_MASK              (0x00000800)
7166f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_SATA_SPINUP_HOLD_SHIFT                    (12)
7176f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_SATA_SPINUP_HOLD_MASK                     (0x00001000)
7186f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_TRANSMIT_PORT_SELECTION_SIGNAL_SHIFT      (13)
7196f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_TRANSMIT_PORT_SELECTION_SIGNAL_MASK       (0x00002000)
7206f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_HARD_RESET_SHIFT                          (14)
7216f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_HARD_RESET_MASK                           (0x00004000)
7226f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_OOB_ENABLE_SHIFT                          (15)
7236f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_OOB_ENABLE_MASK                           (0x00008000)
7246f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_ENABLE_FRAME_TX_INSERT_ALIGN_SHIFT        (23)
7256f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_ENABLE_FRAME_TX_INSERT_ALIGN_MASK         (0x00800000)
7266f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_FORWARD_IDENTIFY_FRAME_SHIFT              (27)
7276f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_FORWARD_IDENTIFY_FRAME_MASK               (0x08000000)
7286f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_DISABLE_BYTE_TRANSPOSE_STP_FRAME_SHIFT    (28)
7296f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_DISABLE_BYTE_TRANSPOSE_STP_FRAME_MASK     (0x10000000)
7306f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_OOB_RESET_SHIFT                           (29)
7316f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_OOB_RESET_MASK                            (0x20000000)
7326f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_THREE_IAF_ENABLE_SHIFT                    (30)
7336f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_THREE_IAF_ENABLE_MASK                     (0x40000000)
7346f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_OOB_ALIGN0_ENABLE_SHIFT                   (31)
7356f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_OOB_ALIGN0_ENABLE_MASK                    (0x80000000)
7366f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_REQUIRED_MASK                             (0x0100000F)
7376f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_DEFAULT_MASK                              (0x4180100F)
7386f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHY_CONFIGURATION_RESERVED_MASK                             (0x00000000)
7396f231dda68080759f1aed3769896e94c73099f0fDan Williams
7406f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PCFG_GEN_BIT(name) \
7416f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_BIT(SCU_SAS_PHY_CONFIGURATION_ ## name)
7426f231dda68080759f1aed3769896e94c73099f0fDan Williams
743d9def184b39b966b7496dfbfad126808d3cd701bJacek Danecki#define SCU_LINK_LAYER_ALIGN_INSERTION_FREQUENCY_GENERAL_SHIFT      (0)
744d9def184b39b966b7496dfbfad126808d3cd701bJacek Danecki#define SCU_LINK_LAYER_ALIGN_INSERTION_FREQUENCY_GENERAL_MASK       (0x000007FF)
745d9def184b39b966b7496dfbfad126808d3cd701bJacek Danecki#define SCU_LINK_LAYER_ALIGN_INSERTION_FREQUENCY_CONNECTED_SHIFT    (16)
746d9def184b39b966b7496dfbfad126808d3cd701bJacek Danecki#define SCU_LINK_LAYER_ALIGN_INSERTION_FREQUENCY_CONNECTED_MASK     (0x00ff0000)
747d9def184b39b966b7496dfbfad126808d3cd701bJacek Danecki
748d9def184b39b966b7496dfbfad126808d3cd701bJacek Danecki#define SCU_ALIGN_INSERTION_FREQUENCY_GEN_VAL(name, value) \
749d9def184b39b966b7496dfbfad126808d3cd701bJacek Danecki	SCU_GEN_VALUE(SCU_LINK_LAYER_ALIGN_INSERTION_FREQUENCY_##name, value)
7506f231dda68080759f1aed3769896e94c73099f0fDan Williams
7516f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_ENABLE_SPINUP_CONTROL_COUNT_SHIFT    (0)
7526f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_ENABLE_SPINUP_CONTROL_COUNT_MASK     (0x0003FFFF)
7536f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_ENABLE_SPINUP_CONTROL_ENABLE_SHIFT   (31)
7546f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_ENABLE_SPINUP_CONTROL_ENABLE_MASK    (0x80000000)
7556f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_ENABLE_SPINUP_CONTROL_RESERVED_MASK  (0x7FFC0000)
7566f231dda68080759f1aed3769896e94c73099f0fDan Williams
7576f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_ENSPINUP_GEN_VAL(name, value) \
7586f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_VALUE(SCU_LINK_LAYER_ENABLE_SPINUP_CONTROL_ ## name, value)
7596f231dda68080759f1aed3769896e94c73099f0fDan Williams
7606f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_ENSPINUP_GEN_BIT(name) \
7616f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_BIT(SCU_LINK_LAYER_ENABLE_SPINUP_CONTROL_ ## name)
7626f231dda68080759f1aed3769896e94c73099f0fDan Williams
7636f231dda68080759f1aed3769896e94c73099f0fDan Williams
7646f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_PHY_CAPABILITIES_TXSSCTYPE_SHIFT     (1)
7656f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_PHY_CAPABILITIES_TXSSCTYPE_MASK      (0x00000002)
7666f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_PHY_CAPABILITIES_RLLRATE_SHIFT       (4)
7676f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_PHY_CAPABILITIES_RLLRATE_MASK        (0x000000F0)
7686f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_PHY_CAPABILITIES_SWO15GBPS_SHIFT     (8)
7696f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_PHY_CAPABILITIES_SWO15GBPS_MASK      (0x00000100)
7706f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_PHY_CAPABILITIES_SW15GBPS_SHIFT      (9)
7716f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_PHY_CAPABILITIES_SW15GBPS_MASK       (0x00000201)
7726f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_PHY_CAPABILITIES_SWO30GBPS_SHIFT     (10)
7736f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_PHY_CAPABILITIES_SWO30GBPS_MASK      (0x00000401)
7746f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_PHY_CAPABILITIES_SW30GBPS_SHIFT      (11)
7756f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_PHY_CAPABILITIES_SW30GBPS_MASK       (0x00000801)
7766f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_PHY_CAPABILITIES_SWO60GBPS_SHIFT     (12)
7776f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_PHY_CAPABILITIES_SWO60GBPS_MASK      (0x00001001)
7786f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_PHY_CAPABILITIES_SW60GBPS_SHIFT      (13)
7796f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_PHY_CAPABILITIES_SW60GBPS_MASK       (0x00002001)
7806f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_PHY_CAPABILITIES_EVEN_PARITY_SHIFT   (31)
7816f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_PHY_CAPABILITIES_EVEN_PARITY_MASK    (0x80000000)
7826f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_PHY_CAPABILITIES_DEFAULT_MASK        (0x00003F01)
7836f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_PHY_CAPABILITIES_REQUIRED_MASK       (0x00000001)
7846f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_PHY_CAPABILITIES_RESERVED_MASK       (0x7FFFC00D)
7856f231dda68080759f1aed3769896e94c73099f0fDan Williams
7866f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHYCAP_GEN_VAL(name, value) \
7876f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_VALUE(SCU_LINK_LAYER_PHY_CAPABILITIES_ ## name, value)
7886f231dda68080759f1aed3769896e94c73099f0fDan Williams
7896f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHYCAP_GEN_BIT(name) \
7906f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_BIT(SCU_LINK_LAYER_PHY_CAPABILITIES_ ## name)
7916f231dda68080759f1aed3769896e94c73099f0fDan Williams
7926f231dda68080759f1aed3769896e94c73099f0fDan Williams
7936f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_PHY_SOURCE_ZONE_GROUP_CONTROL_VIRTUAL_EXPANDER_PHY_ZONE_GROUP_SHIFT  (0)
7946f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_PHY_SOURCE_ZONE_GROUP_CONTROL_VIRTUAL_EXPANDER_PHY_ZONE_GROUP_MASK   (0x000000FF)
7956f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_PHY_SOURCE_ZONE_GROUP_CONTROL_INSIDE_SOURCE_ZONE_GROUP_SHIFT         (31)
7966f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_PHY_SOURCE_ZONE_GROUP_CONTROL_INSIDE_SOURCE_ZONE_GROUP_MASK          (0x80000000)
7976f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LINK_LAYER_PHY_SOURCE_ZONE_GROUP_CONTROL_RESERVED_MASK                          (0x7FFFFF00)
7986f231dda68080759f1aed3769896e94c73099f0fDan Williams
7996f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PSZGCR_GEN_VAL(name, value)	\
8006f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_VALUE(SCU_LINK_LAYER_PHY_SOURCE_ZONE_GROUP_CONTROL_ ## name, value)
8016f231dda68080759f1aed3769896e94c73099f0fDan Williams
8026f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PSZGCR_GEN_BIT(name) \
8036f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_BIT(SCU_LINK_LAYER_PHY_SOURCE_ZONE_GROUP_CONTROL_ ## name)
8046f231dda68080759f1aed3769896e94c73099f0fDan Williams
8056f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZONE0_LOCKED_SHIFT        (1)
8066f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZONE0_LOCKED_MASK         (0x00000002)
8076f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZONE0_UPDATING_SHIFT      (2)
8086f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZONE0_UPDATING_MASK       (0x00000004)
8096f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZONE1_LOCKED_SHIFT        (4)
8106f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZONE1_LOCKED_MASK         (0x00000010)
8116f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZONE1_UPDATING_SHIFT      (5)
8126f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZONE1_UPDATING_MASK       (0x00000020)
8136f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZPT_ASSOCIATION_PE0_SHIFT (16)
8146f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZPT_ASSOCIATION_PE0_MASK  (0x00030000)
8156f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_AIP_ENABLE_PE0_SHIFT      (19)
8166f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_AIP_ENABLE_PE0_MASK       (0x00080000)
8176f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZPT_ASSOCIATION_PE1_SHIFT (20)
8186f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZPT_ASSOCIATION_PE1_MASK  (0x00300000)
8196f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_AIP_ENABLE_PE1_SHIFT      (23)
8206f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_AIP_ENABLE_PE1_MASK       (0x00800000)
8216f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZPT_ASSOCIATION_PE2_SHIFT (24)
8226f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZPT_ASSOCIATION_PE2_MASK  (0x03000000)
8236f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_AIP_ENABLE_PE2_SHIFT      (27)
8246f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_AIP_ENABLE_PE2_MASK       (0x08000000)
8256f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZPT_ASSOCIATION_PE3_SHIFT (28)
8266f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZPT_ASSOCIATION_PE3_MASK  (0x30000000)
8276f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_AIP_ENABLE_PE3_SHIFT      (31)
8286f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_AIP_ENABLE_PE3_MASK       (0x80000000)
8296f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_RESERVED_MASK             (0x4444FFC9)
8306f231dda68080759f1aed3769896e94c73099f0fDan Williams
8316f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PEG_SCUVZECR_GEN_VAL(name, val) \
8326f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_VALUE(SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ ## name, val)
8336f231dda68080759f1aed3769896e94c73099f0fDan Williams
8346f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PEG_SCUVZECR_GEN_BIT(name) \
8356f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_BIT(SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ ## name)
8366f231dda68080759f1aed3769896e94c73099f0fDan Williams
8376f231dda68080759f1aed3769896e94c73099f0fDan Williams
8386f231dda68080759f1aed3769896e94c73099f0fDan Williams/*
8396f231dda68080759f1aed3769896e94c73099f0fDan Williams * *****************************************************************************
8406f231dda68080759f1aed3769896e94c73099f0fDan Williams * * Port Task Scheduler registers shift and mask values
8416f231dda68080759f1aed3769896e94c73099f0fDan Williams * ***************************************************************************** */
8426f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_CONTROL_IT_NEXUS_TIMEOUT_SHIFT     (0)
8436f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_CONTROL_IT_NEXUS_TIMEOUT_MASK      (0x0000FFFF)
8446f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_CONTROL_TASK_TIMEOUT_SHIFT         (16)
8456f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_CONTROL_TASK_TIMEOUT_MASK          (0x00FF0000)
8466f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_CONTROL_PTSG_ENABLE_SHIFT          (24)
8476f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_CONTROL_PTSG_ENABLE_MASK           (0x01000000)
8486f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_CONTROL_ETM_ENABLE_SHIFT           (25)
8496f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_CONTROL_ETM_ENABLE_MASK            (0x02000000)
8506f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_CONTROL_DEFAULT_MASK               (0x00020002)
8516f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_CONTROL_REQUIRED_MASK              (0x00000000)
8526f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_CONTROL_RESERVED_MASK              (0xFC000000)
8536f231dda68080759f1aed3769896e94c73099f0fDan Williams
8546f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSGCR_GEN_VAL(name, val) \
8556f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_VALUE(SCU_PTSG_CONTROL_ ## name, val)
8566f231dda68080759f1aed3769896e94c73099f0fDan Williams
8576f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSGCR_GEN_BIT(name) \
8586f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_BIT(SCU_PTSG_CONTROL_ ## name)
8596f231dda68080759f1aed3769896e94c73099f0fDan Williams
8606f231dda68080759f1aed3769896e94c73099f0fDan Williams
8616f231dda68080759f1aed3769896e94c73099f0fDan Williams/* ***************************************************************************** */
8626f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_REAL_TIME_CLOCK_SHIFT          (0)
8636f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_REAL_TIME_CLOCK_MASK           (0x0000FFFF)
8646f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_REAL_TIME_CLOCK_RESERVED_MASK  (0xFFFF0000)
8656f231dda68080759f1aed3769896e94c73099f0fDan Williams
8666f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_RTCR_GEN_VAL(name, val) \
8676f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_VALUE(SCU_PTSG_ ## name, val)
8686f231dda68080759f1aed3769896e94c73099f0fDan Williams
8696f231dda68080759f1aed3769896e94c73099f0fDan Williams
8706f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_REAL_TIME_CLOCK_CONTROL_PRESCALER_VALUE_SHIFT  (0)
8716f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_REAL_TIME_CLOCK_CONTROL_PRESCALER_VALUE_MASK   (0x00FFFFFF)
8726f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_REAL_TIME_CLOCK_CONTROL_RESERVED_MASK          (0xFF000000)
8736f231dda68080759f1aed3769896e94c73099f0fDan Williams
8746f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_RTCCR_GEN_VAL(name, val) \
8756f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_VALUE(SCU_PTSG_REAL_TIME_CLOCK_CONTROL_ ## name, val)
8766f231dda68080759f1aed3769896e94c73099f0fDan Williams
8776f231dda68080759f1aed3769896e94c73099f0fDan Williams
8786f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_PORT_TASK_SCHEDULER_CONTROL_SUSPEND_SHIFT  (0)
8796f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_PORT_TASK_SCHEDULER_CONTROL_SUSPEND_MASK   (0x00000001)
8806f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_PORT_TASK_SCHEDULER_CONTROL_ENABLE_SHIFT   (1)
8816f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_PORT_TASK_SCHEDULER_CONTROL_ENABLE_MASK    (0x00000002)
8826f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_PORT_TASK_SCHEDULER_CONTROL_RESERVED_MASK  (0xFFFFFFFC)
8836f231dda68080759f1aed3769896e94c73099f0fDan Williams
8846f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSxCR_GEN_BIT(name) \
8856f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_BIT(SCU_PTSG_PORT_TASK_SCHEDULER_CONTROL_ ## name)
8866f231dda68080759f1aed3769896e94c73099f0fDan Williams
8876f231dda68080759f1aed3769896e94c73099f0fDan Williams
8886f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_PORT_TASK_SCHEDULER_STATUS_NEXT_RN_VALID_SHIFT             (0)
8896f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_PORT_TASK_SCHEDULER_STATUS_NEXT_RN_VALID_MASK              (0x00000001)
8906f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_PORT_TASK_SCHEDULER_STATUS_ACTIVE_RNSC_LIST_VALID_SHIFT    (1)
8916f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_PORT_TASK_SCHEDULER_STATUS_ACTIVE_RNSC_LIST_VALID_MASK     (0x00000002)
8926f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_PORT_TASK_SCHEDULER_STATUS_PTS_SUSPENDED_SHIFT             (2)
8936f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_PORT_TASK_SCHEDULER_STATUS_PTS_SUSPENDED_MASK              (0x00000004)
8946f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_PORT_TASK_SCHEDULER_STATUS_RESERVED_MASK                   (0xFFFFFFF8)
8956f231dda68080759f1aed3769896e94c73099f0fDan Williams
8966f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSxSR_GEN_BIT(name) \
8976f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_BIT(SCU_PTSG_PORT_TASK_SCHEDULER_STATUS_ ## name)
8986f231dda68080759f1aed3769896e94c73099f0fDan Williams
8996f231dda68080759f1aed3769896e94c73099f0fDan Williams/*
9006f231dda68080759f1aed3769896e94c73099f0fDan Williams * *****************************************************************************
9016f231dda68080759f1aed3769896e94c73099f0fDan Williams * * SMU Registers
9026f231dda68080759f1aed3769896e94c73099f0fDan Williams * ***************************************************************************** */
9036f231dda68080759f1aed3769896e94c73099f0fDan Williams
9046f231dda68080759f1aed3769896e94c73099f0fDan Williams/*
9056f231dda68080759f1aed3769896e94c73099f0fDan Williams * ----------------------------------------------------------------------------
9066f231dda68080759f1aed3769896e94c73099f0fDan Williams * SMU Registers
9076f231dda68080759f1aed3769896e94c73099f0fDan Williams * These registers are based off of BAR0
9086f231dda68080759f1aed3769896e94c73099f0fDan Williams *
9096f231dda68080759f1aed3769896e94c73099f0fDan Williams * To calculate the offset for other functions use
9106f231dda68080759f1aed3769896e94c73099f0fDan Williams *       BAR0 + FN# * SystemPageSize * 2
9116f231dda68080759f1aed3769896e94c73099f0fDan Williams *
9126f231dda68080759f1aed3769896e94c73099f0fDan Williams * The TCA is only accessable from FN#0 (Physical Function) and each
9136f231dda68080759f1aed3769896e94c73099f0fDan Williams * is programmed by (BAR0 + SCU_SMU_TCA_OFFSET + (FN# * 0x04)) or
9146f231dda68080759f1aed3769896e94c73099f0fDan Williams *    TCA0 for FN#0 is at BAR0 + 0x0400
9156f231dda68080759f1aed3769896e94c73099f0fDan Williams *    TCA1 for FN#1 is at BAR0 + 0x0404
9166f231dda68080759f1aed3769896e94c73099f0fDan Williams *    etc.
9176f231dda68080759f1aed3769896e94c73099f0fDan Williams * ----------------------------------------------------------------------------
9186f231dda68080759f1aed3769896e94c73099f0fDan Williams * Accessable to all FN#s */
9196f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SMU_PCP_OFFSET          0x0000
9206f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SMU_AMR_OFFSET          0x0004
9216f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SMU_ISR_OFFSET          0x0010
9226f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SMU_IMR_OFFSET          0x0014
9236f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SMU_ICC_OFFSET          0x0018
9246f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SMU_HTTLBAR_OFFSET      0x0020
9256f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SMU_HTTUBAR_OFFSET      0x0024
9266f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SMU_TCR_OFFSET          0x0028
9276f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SMU_CQLBAR_OFFSET       0x0030
9286f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SMU_CQUBAR_OFFSET       0x0034
9296f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SMU_CQPR_OFFSET         0x0040
9306f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SMU_CQGR_OFFSET         0x0044
9316f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SMU_CQC_OFFSET          0x0048
9326f231dda68080759f1aed3769896e94c73099f0fDan Williams/* Accessable to FN#0 only */
9336f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SMU_RNCLBAR_OFFSET      0x0080
9346f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SMU_RNCUBAR_OFFSET      0x0084
9356f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SMU_DCC_OFFSET          0x0090
9366f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SMU_DFC_OFFSET          0x0094
9376f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SMU_SMUCSR_OFFSET       0x0098
9386f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SMU_SCUSRCR_OFFSET      0x009C
9396f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SMU_SMAW_OFFSET         0x00A0
9406f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SMU_SMDW_OFFSET         0x00A4
9416f231dda68080759f1aed3769896e94c73099f0fDan Williams/* Accessable to FN#0 only */
9426f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SMU_TCA_OFFSET          0x0400
9436f231dda68080759f1aed3769896e94c73099f0fDan Williams/* Accessable to all FN#s */
9446f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SMU_MT_MLAR0_OFFSET     0x2000
9456f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SMU_MT_MUAR0_OFFSET     0x2004
9466f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SMU_MT_MDR0_OFFSET      0x2008
9476f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SMU_MT_VCR0_OFFSET      0x200C
9486f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SMU_MT_MLAR1_OFFSET     0x2010
9496f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SMU_MT_MUAR1_OFFSET     0x2014
9506f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SMU_MT_MDR1_OFFSET      0x2018
9516f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SMU_MT_VCR1_OFFSET      0x201C
9526f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SMU_MPBA_OFFSET         0x3000
9536f231dda68080759f1aed3769896e94c73099f0fDan Williams
9546f231dda68080759f1aed3769896e94c73099f0fDan Williams/**
9556f231dda68080759f1aed3769896e94c73099f0fDan Williams * struct smu_registers - These are the SMU registers
9566f231dda68080759f1aed3769896e94c73099f0fDan Williams *
9576f231dda68080759f1aed3769896e94c73099f0fDan Williams *
9586f231dda68080759f1aed3769896e94c73099f0fDan Williams */
9596f231dda68080759f1aed3769896e94c73099f0fDan Williamsstruct smu_registers {
9606f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0000 PCP */
9616f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 post_context_port;
9626f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0004 AMR */
9636f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 address_modifier;
9646f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_08;
9656f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_0C;
9666f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0010 ISR */
9676f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 interrupt_status;
9686f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0014 IMR */
9696f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 interrupt_mask;
9706f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0018 ICC */
9716f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 interrupt_coalesce_control;
9726f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_1C;
9736f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0020 HTTLBAR */
9746f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 host_task_table_lower;
9756f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0024 HTTUBAR */
9766f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 host_task_table_upper;
9776f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0028 TCR */
9786f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 task_context_range;
9796f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_2C;
9806f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0030 CQLBAR */
9816f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 completion_queue_lower;
9826f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0034 CQUBAR */
9836f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 completion_queue_upper;
9846f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_38;
9856f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_3C;
9866f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0040 CQPR */
9876f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 completion_queue_put;
9886f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0044 CQGR */
9896f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 completion_queue_get;
9906f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0048 CQC */
9916f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 completion_queue_control;
9926f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_4C;
9936f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_5x[4];
9946f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_6x[4];
9956f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_7x[4];
9966f231dda68080759f1aed3769896e94c73099f0fDan Williams/*
9976f231dda68080759f1aed3769896e94c73099f0fDan Williams * Accessable to FN#0 only
9986f231dda68080759f1aed3769896e94c73099f0fDan Williams * 0x0080 RNCLBAR */
9996f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 remote_node_context_lower;
10006f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0084 RNCUBAR */
10016f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 remote_node_context_upper;
10026f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_88;
10036f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_8C;
10046f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0090 DCC */
10056f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 device_context_capacity;
10066f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0094 DFC */
10076f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 device_function_capacity;
10086f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0098 SMUCSR */
10096f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 control_status;
10106f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x009C SCUSRCR */
10116f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 soft_reset_control;
10126f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x00A0 SMAW */
10136f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 mmr_address_window;
10146f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x00A4 SMDW */
10156f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 mmr_data_window;
1016e5cc6aa4b6ef34c3f054af8c61a4f73c157589c3Marcin Tomczak/* 0x00A8 CGUCR */
1017e5cc6aa4b6ef34c3f054af8c61a4f73c157589c3Marcin Tomczak	u32 clock_gating_control;
1018e5cc6aa4b6ef34c3f054af8c61a4f73c157589c3Marcin Tomczak/* 0x00AC CGUPC */
1019e5cc6aa4b6ef34c3f054af8c61a4f73c157589c3Marcin Tomczak	u32 clock_gating_performance;
10206f231dda68080759f1aed3769896e94c73099f0fDan Williams/* A whole bunch of reserved space */
10216f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_Bx[4];
10226f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_Cx[4];
10236f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_Dx[4];
10246f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_Ex[4];
10256f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_Fx[4];
10266f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_1xx[64];
10276f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_2xx[64];
10286f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_3xx[64];
10296f231dda68080759f1aed3769896e94c73099f0fDan Williams/*
10306f231dda68080759f1aed3769896e94c73099f0fDan Williams * Accessable to FN#0 only
10316f231dda68080759f1aed3769896e94c73099f0fDan Williams * 0x0400 TCA */
10326f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 task_context_assignment[256];
10336f231dda68080759f1aed3769896e94c73099f0fDan Williams/* MSI-X registers not included */
10346f231dda68080759f1aed3769896e94c73099f0fDan Williams};
10356f231dda68080759f1aed3769896e94c73099f0fDan Williams
10366f231dda68080759f1aed3769896e94c73099f0fDan Williams/*
10376f231dda68080759f1aed3769896e94c73099f0fDan Williams * *****************************************************************************
10386f231dda68080759f1aed3769896e94c73099f0fDan Williams * SDMA Registers
10396f231dda68080759f1aed3769896e94c73099f0fDan Williams * ***************************************************************************** */
10406f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SDMA_BASE               0x6000
10416f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SDMA_PUFATLHAR_OFFSET   0x0000
10426f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SDMA_PUFATUHAR_OFFSET   0x0004
10436f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SDMA_UFLHBAR_OFFSET     0x0008
10446f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SDMA_UFUHBAR_OFFSET     0x000C
10456f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SDMA_UFQC_OFFSET        0x0010
10466f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SDMA_UFQPP_OFFSET       0x0014
10476f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SDMA_UFQGP_OFFSET       0x0018
10486f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SDMA_PDMACR_OFFSET      0x001C
10496f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SDMA_CDMACR_OFFSET      0x0080
10506f231dda68080759f1aed3769896e94c73099f0fDan Williams
10516f231dda68080759f1aed3769896e94c73099f0fDan Williams/**
10526f231dda68080759f1aed3769896e94c73099f0fDan Williams * struct scu_sdma_registers - These are the SCU SDMA Registers
10536f231dda68080759f1aed3769896e94c73099f0fDan Williams *
10546f231dda68080759f1aed3769896e94c73099f0fDan Williams *
10556f231dda68080759f1aed3769896e94c73099f0fDan Williams */
10566f231dda68080759f1aed3769896e94c73099f0fDan Williamsstruct scu_sdma_registers {
10576f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0000 PUFATLHAR */
10586f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 uf_address_table_lower;
10596f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0004 PUFATUHAR */
10606f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 uf_address_table_upper;
10616f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0008 UFLHBAR */
10626f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 uf_header_base_address_lower;
10636f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x000C UFUHBAR */
10646f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 uf_header_base_address_upper;
10656f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0010 UFQC */
10666f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 unsolicited_frame_queue_control;
10676f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0014 UFQPP */
10686f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 unsolicited_frame_put_pointer;
10696f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0018 UFQGP */
10706f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 unsolicited_frame_get_pointer;
10716f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x001C PDMACR */
10726f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 pdma_configuration;
10736f231dda68080759f1aed3769896e94c73099f0fDan Williams/* Reserved until offset 0x80 */
10746f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_0020_007C[0x18];
10756f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0080 CDMACR */
10766f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 cdma_configuration;
10776f231dda68080759f1aed3769896e94c73099f0fDan Williams/* Remainder SDMA register space */
10786f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_0084_0400[0xDF];
10796f231dda68080759f1aed3769896e94c73099f0fDan Williams
10806f231dda68080759f1aed3769896e94c73099f0fDan Williams};
10816f231dda68080759f1aed3769896e94c73099f0fDan Williams
10826f231dda68080759f1aed3769896e94c73099f0fDan Williams/*
10836f231dda68080759f1aed3769896e94c73099f0fDan Williams * *****************************************************************************
10846f231dda68080759f1aed3769896e94c73099f0fDan Williams * * SCU Link Registers
10856f231dda68080759f1aed3769896e94c73099f0fDan Williams * ***************************************************************************** */
10866f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PEG0_OFFSET    0x0000
10876f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PEG1_OFFSET    0x8000
10886f231dda68080759f1aed3769896e94c73099f0fDan Williams
10896f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_TL0_OFFSET     0x0000
10906f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_TL1_OFFSET     0x0400
10916f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_TL2_OFFSET     0x0800
10926f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_TL3_OFFSET     0x0C00
10936f231dda68080759f1aed3769896e94c73099f0fDan Williams
10946f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LL_OFFSET      0x0080
10956f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LL0_OFFSET     (SCU_TL0_OFFSET + SCU_LL_OFFSET)
10966f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LL1_OFFSET     (SCU_TL1_OFFSET + SCU_LL_OFFSET)
10976f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LL2_OFFSET     (SCU_TL2_OFFSET + SCU_LL_OFFSET)
10986f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_LL3_OFFSET     (SCU_TL3_OFFSET + SCU_LL_OFFSET)
10996f231dda68080759f1aed3769896e94c73099f0fDan Williams
11006f231dda68080759f1aed3769896e94c73099f0fDan Williams/* Transport Layer Offsets (PEG + TL) */
11016f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_TLCR_OFFSET         0x0000
11026f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_TLADTR_OFFSET       0x0004
11036f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_TLTTMR_OFFSET       0x0008
11046f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_TLEECR0_OFFSET      0x000C
11056f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_STPTLDARNI_OFFSET   0x0010
11066f231dda68080759f1aed3769896e94c73099f0fDan Williams
11076f231dda68080759f1aed3769896e94c73099f0fDan Williams
11086f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_TLCR_HASH_SAS_CHECKING_ENABLE_SHIFT    (0)
11096f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_TLCR_HASH_SAS_CHECKING_ENABLE_MASK     (0x00000001)
11106f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_TLCR_CLEAR_TCI_NCQ_MAPPING_TABLE_SHIFT (1)
11116f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_TLCR_CLEAR_TCI_NCQ_MAPPING_TABLE_MASK  (0x00000002)
11126f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_TLCR_STP_WRITE_DATA_PREFETCH_SHIFT     (3)
11136f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_TLCR_STP_WRITE_DATA_PREFETCH_MASK      (0x00000008)
11146f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_TLCR_CMD_NAK_STATUS_CODE_SHIFT         (4)
11156f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_TLCR_CMD_NAK_STATUS_CODE_MASK          (0x00000010)
11166f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_TLCR_RESERVED_MASK                     (0xFFFFFFEB)
11176f231dda68080759f1aed3769896e94c73099f0fDan Williams
11186f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_TLCR_GEN_BIT(name) \
11196f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_BIT(SCU_TLCR_ ## name)
11206f231dda68080759f1aed3769896e94c73099f0fDan Williams
11216f231dda68080759f1aed3769896e94c73099f0fDan Williams/**
11226f231dda68080759f1aed3769896e94c73099f0fDan Williams * struct scu_transport_layer_registers - These are the SCU Transport Layer
11236f231dda68080759f1aed3769896e94c73099f0fDan Williams *    registers
11246f231dda68080759f1aed3769896e94c73099f0fDan Williams *
11256f231dda68080759f1aed3769896e94c73099f0fDan Williams *
11266f231dda68080759f1aed3769896e94c73099f0fDan Williams */
11276f231dda68080759f1aed3769896e94c73099f0fDan Williamsstruct scu_transport_layer_registers {
11286f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0000 TLCR */
11296f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 control;
11306f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0004 TLADTR */
11316f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 arbitration_delay_timer;
11326f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0008 TLTTMR */
11336f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 timer_test_mode;
11346f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x000C reserved */
11356f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_0C;
11366f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0010 STPTLDARNI */
11376f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 stp_rni;
11386f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0014 TLFEWPORCTRL */
11396f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 tlfe_wpo_read_control;
11406f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0018 TLFEWPORDATA */
11416f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 tlfe_wpo_read_data;
11426f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x001C RXTLSSCSR1 */
11436f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 rxtl_single_step_control_status_1;
11446f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0020 RXTLSSCSR2 */
11456f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 rxtl_single_step_control_status_2;
11466f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0024 AWTRDDCR */
11476f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 tlfe_awt_retry_delay_debug_control;
11486f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* Remainder of TL memory space */
11496f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_0028_007F[0x16];
11506f231dda68080759f1aed3769896e94c73099f0fDan Williams
11516f231dda68080759f1aed3769896e94c73099f0fDan Williams};
11526f231dda68080759f1aed3769896e94c73099f0fDan Williams
11536f231dda68080759f1aed3769896e94c73099f0fDan Williams/* Protocol Engine Group Registers */
11546f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SCUVZECRx_OFFSET        0x1080
11556f231dda68080759f1aed3769896e94c73099f0fDan Williams
11566f231dda68080759f1aed3769896e94c73099f0fDan Williams/* Link Layer Offsets (PEG + TL + LL) */
11576f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_SPDTOV_OFFSET       0x0000
11586f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_LLSTA_OFFSET        0x0004
11596f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SATA_PSELTOV_OFFSET     0x0008
11606f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TIMETOV_OFFSET      0x0010
11616f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_LOSTOT_OFFSET       0x0014
11626f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_LNKTOV_OFFSET       0x0018
11636f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHYTOV_OFFSET       0x001C
11646f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_AFERCNT_OFFSET      0x0020
11656f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_WERCNT_OFFSET       0x0024
11666f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TIID_OFFSET         0x0028
11676f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TIDNH_OFFSET        0x002C
11686f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TIDNL_OFFSET        0x0030
11696f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TISSAH_OFFSET       0x0034
11706f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TISSAL_OFFSET       0x0038
11716f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TIPID_OFFSET        0x003C
11726f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TIRES2_OFFSET       0x0040
11736f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_ADRSTA_OFFSET       0x0044
11746f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_MAWTTOV_OFFSET      0x0048
11756f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_FRPLDFIL_OFFSET     0x0054
11766f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_RFCNT_OFFSET        0x0060
11776f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TFCNT_OFFSET        0x0064
11786f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_RFDCNT_OFFSET       0x0068
11796f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TFDCNT_OFFSET       0x006C
11806f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_LERCNT_OFFSET       0x0070
11816f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_RDISERRCNT_OFFSET   0x0074
11826f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_CRERCNT_OFFSET      0x0078
11836f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_STPCTL_OFFSET           0x007C
11846f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PCFG_OFFSET         0x0080
11856f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_CLKSM_OFFSET        0x0084
11866f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TXCOMWAKE_OFFSET    0x0088
11876f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TXCOMINIT_OFFSET    0x008C
11886f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TXCOMSAS_OFFSET     0x0090
11896f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_COMINIT_OFFSET      0x0094
11906f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_COMWAKE_OFFSET      0x0098
11916f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_COMSAS_OFFSET       0x009C
11926f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_SFERCNT_OFFSET      0x00A0
11936f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_CDFERCNT_OFFSET     0x00A4
11946f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_DNFERCNT_OFFSET     0x00A8
11956f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PRSTERCNT_OFFSET    0x00AC
11966f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_CNTCTL_OFFSET       0x00B0
11976f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_SSPTOV_OFFSET       0x00B4
11986f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_FTCTL_OFFSET            0x00B8
11996f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_FRCTL_OFFSET            0x00BC
12006f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_FTWMRK_OFFSET           0x00C0
12016f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_ENSPINUP_OFFSET         0x00C4
12026f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_TRNTOV_OFFSET       0x00C8
12036f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHYCAP_OFFSET       0x00CC
12046f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PHYCTL_OFFSET       0x00D0
12056f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_LLCTL_OFFSET        0x00D8
12066f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_AFE_XCVRCR_OFFSET       0x00DC
12076f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_AFE_LUTCR_OFFSET        0x00E0
12086f231dda68080759f1aed3769896e94c73099f0fDan Williams
1209985af6f70dbb8a33b3af8a7c7df508d924650e37Marcin Tomczak#define SCU_SAS_PHY_TIMER_TIMEOUT_VALUES_ALIGN_DETECTION_SHIFT          (0UL)
1210985af6f70dbb8a33b3af8a7c7df508d924650e37Marcin Tomczak#define SCU_SAS_PHY_TIMER_TIMEOUT_VALUES_ALIGN_DETECTION_MASK           (0x000000FFUL)
1211985af6f70dbb8a33b3af8a7c7df508d924650e37Marcin Tomczak#define SCU_SAS_PHY_TIMER_TIMEOUT_VALUES_HOT_PLUG_SHIFT                 (8UL)
1212985af6f70dbb8a33b3af8a7c7df508d924650e37Marcin Tomczak#define SCU_SAS_PHY_TIMER_TIMEOUT_VALUES_HOT_PLUG_MASK                  (0x0000FF00UL)
1213985af6f70dbb8a33b3af8a7c7df508d924650e37Marcin Tomczak#define SCU_SAS_PHY_TIMER_TIMEOUT_VALUES_COMSAS_DETECTION_SHIFT         (16UL)
1214985af6f70dbb8a33b3af8a7c7df508d924650e37Marcin Tomczak#define SCU_SAS_PHY_TIMER_TIMEOUT_VALUES_COMSAS_DETECTION_MASK          (0x00FF0000UL)
1215985af6f70dbb8a33b3af8a7c7df508d924650e37Marcin Tomczak#define SCU_SAS_PHY_TIMER_TIMEOUT_VALUES_RATE_CHANGE_SHIFT              (24UL)
1216985af6f70dbb8a33b3af8a7c7df508d924650e37Marcin Tomczak#define SCU_SAS_PHY_TIMER_TIMEOUT_VALUES_RATE_CHANGE_MASK               (0xFF000000UL)
1217985af6f70dbb8a33b3af8a7c7df508d924650e37Marcin Tomczak
1218985af6f70dbb8a33b3af8a7c7df508d924650e37Marcin Tomczak#define SCU_SAS_PHYTOV_GEN_VAL(name, value) \
1219985af6f70dbb8a33b3af8a7c7df508d924650e37Marcin Tomczak	SCU_GEN_VALUE(SCU_SAS_PHY_TIMER_TIMEOUT_VALUES_##name, value)
1220985af6f70dbb8a33b3af8a7c7df508d924650e37Marcin Tomczak
12216f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_LINK_LAYER_CONTROL_MAX_LINK_RATE_SHIFT                  (0)
12226f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_LINK_LAYER_CONTROL_MAX_LINK_RATE_MASK                   (0x00000003)
12236f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_LINK_LAYER_CONTROL_MAX_LINK_RATE_GEN1                   (0)
12246f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_LINK_LAYER_CONTROL_MAX_LINK_RATE_GEN2                   (1)
12256f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_LINK_LAYER_CONTROL_MAX_LINK_RATE_GEN3                   (2)
12266f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_LINK_LAYER_CONTROL_BROADCAST_PRIMITIVE_SHIFT            (2)
12276f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_LINK_LAYER_CONTROL_BROADCAST_PRIMITIVE_MASK             (0x000003FC)
12286f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_LINK_LAYER_CONTROL_CLOSE_NO_ACTIVE_TASK_DISABLE_SHIFT   (16)
12296f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_LINK_LAYER_CONTROL_CLOSE_NO_ACTIVE_TASK_DISABLE_MASK    (0x00010000)
12306f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_LINK_LAYER_CONTROL_CLOSE_NO_OUTBOUND_TASK_DISABLE_SHIFT (17)
12316f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_LINK_LAYER_CONTROL_CLOSE_NO_OUTBOUND_TASK_DISABLE_MASK  (0x00020000)
12326f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_LINK_LAYER_CONTROL_NO_OUTBOUND_TASK_TIMEOUT_SHIFT       (24)
12336f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_LINK_LAYER_CONTROL_NO_OUTBOUND_TASK_TIMEOUT_MASK        (0xFF000000)
12346f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_LINK_LAYER_CONTROL_RESERVED                             (0x00FCFC00)
12356f231dda68080759f1aed3769896e94c73099f0fDan Williams
12366f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_LLCTL_GEN_VAL(name, value) \
12376f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_VALUE(SCU_SAS_LINK_LAYER_CONTROL_ ## name, value)
12386f231dda68080759f1aed3769896e94c73099f0fDan Williams
12396f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_LLCTL_GEN_BIT(name) \
12406f231dda68080759f1aed3769896e94c73099f0fDan Williams	SCU_GEN_BIT(SCU_SAS_LINK_LAYER_CONTROL_ ## name)
12416f231dda68080759f1aed3769896e94c73099f0fDan Williams
12426f231dda68080759f1aed3769896e94c73099f0fDan Williams
12436f231dda68080759f1aed3769896e94c73099f0fDan Williams/* #define SCU_FRXHECR_DCNT_OFFSET      0x00B0 */
12446f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PSZGCR_OFFSET           0x00E4
12456f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_RECPHYCAP_OFFSET    0x00E8
12466f231dda68080759f1aed3769896e94c73099f0fDan Williams/* #define SCU_TX_LUTSEL_OFFSET         0x00B8 */
12476f231dda68080759f1aed3769896e94c73099f0fDan Williams
12486f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SAS_PTxC_OFFSET         0x00D4 /* Same offset as SAS_TCTSTM */
12496f231dda68080759f1aed3769896e94c73099f0fDan Williams
12506f231dda68080759f1aed3769896e94c73099f0fDan Williams/**
12516f231dda68080759f1aed3769896e94c73099f0fDan Williams * struct scu_link_layer_registers - SCU Link Layer Registers
12526f231dda68080759f1aed3769896e94c73099f0fDan Williams *
12536f231dda68080759f1aed3769896e94c73099f0fDan Williams *
12546f231dda68080759f1aed3769896e94c73099f0fDan Williams */
12556f231dda68080759f1aed3769896e94c73099f0fDan Williamsstruct scu_link_layer_registers {
12566f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0000 SAS_SPDTOV */
12576f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 speed_negotiation_timers;
12586f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0004 SAS_LLSTA */
12596f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 link_layer_status;
12606f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0008 SATA_PSELTOV */
12616f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 port_selector_timeout;
12626f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved0C;
12636f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0010 SAS_TIMETOV */
12646f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 timeout_unit_value;
12656f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0014 SAS_RCDTOV */
12666f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 rcd_timeout;
12676f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0018 SAS_LNKTOV */
12686f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 link_timer_timeouts;
12696f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x001C SAS_PHYTOV */
12706f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 sas_phy_timeouts;
12716f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0020 SAS_AFERCNT */
12726f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 received_address_frame_error_counter;
12736f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0024 SAS_WERCNT */
12746f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 invalid_dword_counter;
12756f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0028 SAS_TIID */
12766f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 transmit_identification;
12776f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x002C SAS_TIDNH */
12786f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 sas_device_name_high;
12796f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0030 SAS_TIDNL */
12806f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 sas_device_name_low;
12816f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0034 SAS_TISSAH */
12826f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 source_sas_address_high;
12836f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0038 SAS_TISSAL */
12846f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 source_sas_address_low;
12856f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x003C SAS_TIPID */
12866f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 identify_frame_phy_id;
12876f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0040 SAS_TIRES2 */
12886f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 identify_frame_reserved;
12896f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0044 SAS_ADRSTA */
12906f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 received_address_frame;
12916f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0048 SAS_MAWTTOV */
12926f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 maximum_arbitration_wait_timer_timeout;
12936f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x004C SAS_PTxC */
12946f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 transmit_primitive;
12956f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0050 SAS_RORES */
12966f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 error_counter_event_notification_control;
12976f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0054 SAS_FRPLDFIL */
12986f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 frxq_payload_fill_threshold;
12996f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0058 SAS_LLHANG_TOT */
13006f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 link_layer_hang_detection_timeout;
13016f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_5C;
13026f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0060 SAS_RFCNT */
13036f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 received_frame_count;
13046f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0064 SAS_TFCNT */
13056f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 transmit_frame_count;
13066f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0068 SAS_RFDCNT */
13076f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 received_dword_count;
13086f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x006C SAS_TFDCNT */
13096f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 transmit_dword_count;
13106f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0070 SAS_LERCNT */
13116f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 loss_of_sync_error_count;
13126f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0074 SAS_RDISERRCNT */
13136f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 running_disparity_error_count;
13146f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0078 SAS_CRERCNT */
13156f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 received_frame_crc_error_count;
13166f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x007C STPCTL */
13176f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 stp_control;
13186f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0080 SAS_PCFG */
13196f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 phy_configuration;
13206f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0084 SAS_CLKSM */
13216f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 clock_skew_management;
13226f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0088 SAS_TXCOMWAKE */
13236f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 transmit_comwake_signal;
13246f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x008C SAS_TXCOMINIT */
13256f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 transmit_cominit_signal;
13266f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0090 SAS_TXCOMSAS */
13276f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 transmit_comsas_signal;
13286f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0094 SAS_COMINIT */
13296f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 cominit_control;
13306f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0098 SAS_COMWAKE */
13316f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 comwake_control;
13326f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x009C SAS_COMSAS */
13336f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 comsas_control;
13346f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x00A0 SAS_SFERCNT */
13356f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 received_short_frame_count;
13366f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x00A4 SAS_CDFERCNT */
13376f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 received_frame_without_credit_count;
13386f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x00A8 SAS_DNFERCNT */
13396f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 received_frame_after_done_count;
13406f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x00AC SAS_PRSTERCNT */
13416f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 phy_reset_problem_count;
13426f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x00B0 SAS_CNTCTL */
13436f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 counter_control;
13446f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x00B4 SAS_SSPTOV */
13456f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 ssp_timer_timeout_values;
13466f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x00B8 FTCTL */
13476f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 ftx_control;
13486f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x00BC FRCTL */
13496f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 frx_control;
13506f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x00C0 FTWMRK */
13516f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 ftx_watermark;
13526f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x00C4 ENSPINUP */
13536f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 notify_enable_spinup_control;
13546f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x00C8 SAS_TRNTOV */
13556f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 sas_training_sequence_timer_values;
13566f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x00CC SAS_PHYCAP */
13576f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 phy_capabilities;
13586f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x00D0 SAS_PHYCTL */
13596f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 phy_control;
13606f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_d4;
13616f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x00D8 LLCTL */
13626f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 link_layer_control;
13636f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x00DC AFE_XCVRCR */
13646f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_xcvr_control;
13656f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x00E0 AFE_LUTCR */
13666f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_lookup_table_control;
13676f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x00E4 PSZGCR */
13686f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 phy_source_zone_group_control;
13696f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x00E8 SAS_RECPHYCAP */
13706f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 receive_phycap;
13716f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_ec;
13726f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x00F0 SNAFERXRSTCTL */
13736f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 speed_negotiation_afe_rx_reset_control;
13746f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x00F4 SAS_SSIPMCTL */
13756f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 power_management_control;
13766f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x00F8 SAS_PSPREQ_PRIM */
13776f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 sas_pm_partial_request_primitive;
13786f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x00FC SAS_PSSREQ_PRIM */
13796f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 sas_pm_slumber_request_primitive;
13806f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0100 SAS_PPSACK_PRIM */
13816f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 sas_pm_ack_primitive_register;
13826f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0104 SAS_PSNAK_PRIM */
13836f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 sas_pm_nak_primitive_register;
13846f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0108 SAS_SSIPMTOV */
13856f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 sas_primitive_timeout;
13866f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_10c;
13876f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0110 - 0x011C PLAPRDCTRLxREG */
13886f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 pla_product_control[4];
13896f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0120 PLAPRDSUMREG */
13906f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 pla_product_sum;
13916f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0124 PLACONTROLREG */
13926f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 pla_control;
13936f231dda68080759f1aed3769896e94c73099f0fDan Williams/* Remainder of memory space 896 bytes */
13946f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_0128_037f[0x96];
13956f231dda68080759f1aed3769896e94c73099f0fDan Williams
13966f231dda68080759f1aed3769896e94c73099f0fDan Williams};
13976f231dda68080759f1aed3769896e94c73099f0fDan Williams
13986f231dda68080759f1aed3769896e94c73099f0fDan Williams/*
13996f231dda68080759f1aed3769896e94c73099f0fDan Williams * 0x00D4 // Same offset as SAS_TCTSTM SAS_PTxC
14006f231dda68080759f1aed3769896e94c73099f0fDan Williams *   u32   primitive_transmit_control; */
14016f231dda68080759f1aed3769896e94c73099f0fDan Williams
14026f231dda68080759f1aed3769896e94c73099f0fDan Williams/*
14036f231dda68080759f1aed3769896e94c73099f0fDan Williams * ----------------------------------------------------------------------------
14046f231dda68080759f1aed3769896e94c73099f0fDan Williams * SGPIO
14056f231dda68080759f1aed3769896e94c73099f0fDan Williams * ---------------------------------------------------------------------------- */
14066f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SGPIO_OFFSET         0x1400
14076f231dda68080759f1aed3769896e94c73099f0fDan Williams
14086f231dda68080759f1aed3769896e94c73099f0fDan Williams/* #define SCU_SGPIO_OFFSET         0x6000   // later moves to 0x1400 see HSD 652625 */
14096f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SGPIO_SGICR_OFFSET   0x0000
14106f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SGPIO_SGPBR_OFFSET   0x0004
14116f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SGPIO_SGSDLR_OFFSET  0x0008
14126f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SGPIO_SGSDUR_OFFSET  0x000C
14136f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SGPIO_SGSIDLR_OFFSET 0x0010
14146f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SGPIO_SGSIDUR_OFFSET 0x0014
14156f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SGPIO_SGVSCR_OFFSET  0x0018
14166f231dda68080759f1aed3769896e94c73099f0fDan Williams/* Address from 0x0820 to 0x083C */
14176f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_SGPIO_SGODSR_OFFSET  0x0020
14186f231dda68080759f1aed3769896e94c73099f0fDan Williams
14196f231dda68080759f1aed3769896e94c73099f0fDan Williams/**
14206f231dda68080759f1aed3769896e94c73099f0fDan Williams * struct scu_sgpio_registers - SCU SGPIO Registers
14216f231dda68080759f1aed3769896e94c73099f0fDan Williams *
14226f231dda68080759f1aed3769896e94c73099f0fDan Williams *
14236f231dda68080759f1aed3769896e94c73099f0fDan Williams */
14246f231dda68080759f1aed3769896e94c73099f0fDan Williamsstruct scu_sgpio_registers {
14256f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0000 SGPIO_SGICR */
14266f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 interface_control;
14276f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0004 SGPIO_SGPBR */
14286f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 blink_rate;
14296f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0008 SGPIO_SGSDLR */
14306f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 start_drive_lower;
14316f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x000C SGPIO_SGSDUR */
14326f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 start_drive_upper;
14336f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0010 SGPIO_SGSIDLR */
14346f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 serial_input_lower;
14356f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0014 SGPIO_SGSIDUR */
14366f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 serial_input_upper;
14376f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0018 SGPIO_SGVSCR */
14386f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 vendor_specific_code;
143913257cfbc57e9cf84fd9fe0cb7a909b3fb4f7482Dan Williams/* 0x001C Reserved */
144013257cfbc57e9cf84fd9fe0cb7a909b3fb4f7482Dan Williams	u32 reserved_001c;
14416f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0020 SGPIO_SGODSR */
144213257cfbc57e9cf84fd9fe0cb7a909b3fb4f7482Dan Williams	u32 output_data_select[8];
14436f231dda68080759f1aed3769896e94c73099f0fDan Williams/* Remainder of memory space 256 bytes */
144413257cfbc57e9cf84fd9fe0cb7a909b3fb4f7482Dan Williams	u32 reserved_1444_14ff[0x30];
14456f231dda68080759f1aed3769896e94c73099f0fDan Williams
14466f231dda68080759f1aed3769896e94c73099f0fDan Williams};
14476f231dda68080759f1aed3769896e94c73099f0fDan Williams
14486f231dda68080759f1aed3769896e94c73099f0fDan Williams/*
14496f231dda68080759f1aed3769896e94c73099f0fDan Williams * *****************************************************************************
14506f231dda68080759f1aed3769896e94c73099f0fDan Williams * * Defines for VIIT entry offsets
14516f231dda68080759f1aed3769896e94c73099f0fDan Williams * * Access additional entries by SCU_VIIT_BASE + index * 0x10
14526f231dda68080759f1aed3769896e94c73099f0fDan Williams * ***************************************************************************** */
14536f231dda68080759f1aed3769896e94c73099f0fDan Williams#define     SCU_VIIT_BASE     0x1c00
14546f231dda68080759f1aed3769896e94c73099f0fDan Williams
1455de728b7d72089330603819a74255a0469780fd0eDave Jiangstruct scu_viit_registers {
14566f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 registers[256];
14576f231dda68080759f1aed3769896e94c73099f0fDan Williams};
14586f231dda68080759f1aed3769896e94c73099f0fDan Williams
14596f231dda68080759f1aed3769896e94c73099f0fDan Williams/*
14606f231dda68080759f1aed3769896e94c73099f0fDan Williams * *****************************************************************************
14616f231dda68080759f1aed3769896e94c73099f0fDan Williams * * SCU PORT TASK SCHEDULER REGISTERS
14626f231dda68080759f1aed3769896e94c73099f0fDan Williams * ***************************************************************************** */
14636f231dda68080759f1aed3769896e94c73099f0fDan Williams
14646f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_BASE               0x1000
14656f231dda68080759f1aed3769896e94c73099f0fDan Williams
14666f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_PTSGCR_OFFSET      0x0000
14676f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_RTCR_OFFSET        0x0004
14686f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_RTCCR_OFFSET       0x0008
14696f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_PTS0CR_OFFSET      0x0010
14706f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_PTS0SR_OFFSET      0x0014
14716f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_PTS1CR_OFFSET      0x0018
14726f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_PTS1SR_OFFSET      0x001C
14736f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_PTS2CR_OFFSET      0x0020
14746f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_PTS2SR_OFFSET      0x0024
14756f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_PTS3CR_OFFSET      0x0028
14766f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_PTS3SR_OFFSET      0x002C
14776f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_PCSPE0CR_OFFSET    0x0030
14786f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_PCSPE1CR_OFFSET    0x0034
14796f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_PCSPE2CR_OFFSET    0x0038
14806f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_PCSPE3CR_OFFSET    0x003C
14816f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_ETMTSCCR_OFFSET    0x0040
14826f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_ETMRNSCCR_OFFSET   0x0044
14836f231dda68080759f1aed3769896e94c73099f0fDan Williams
14846f231dda68080759f1aed3769896e94c73099f0fDan Williams/**
14856f231dda68080759f1aed3769896e94c73099f0fDan Williams * struct scu_port_task_scheduler_registers - These are the control/stats pairs
14866f231dda68080759f1aed3769896e94c73099f0fDan Williams *    for each Port Task Scheduler.
14876f231dda68080759f1aed3769896e94c73099f0fDan Williams *
14886f231dda68080759f1aed3769896e94c73099f0fDan Williams *
14896f231dda68080759f1aed3769896e94c73099f0fDan Williams */
14906f231dda68080759f1aed3769896e94c73099f0fDan Williamsstruct scu_port_task_scheduler_registers {
14916f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 control;
14926f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 status;
14936f231dda68080759f1aed3769896e94c73099f0fDan Williams};
14946f231dda68080759f1aed3769896e94c73099f0fDan Williams
14956f231dda68080759f1aed3769896e94c73099f0fDan Williams/**
14966f231dda68080759f1aed3769896e94c73099f0fDan Williams * struct scu_port_task_scheduler_group_registers - These are the PORT Task
14976f231dda68080759f1aed3769896e94c73099f0fDan Williams *    Scheduler registers
14986f231dda68080759f1aed3769896e94c73099f0fDan Williams *
14996f231dda68080759f1aed3769896e94c73099f0fDan Williams *
15006f231dda68080759f1aed3769896e94c73099f0fDan Williams */
15016f231dda68080759f1aed3769896e94c73099f0fDan Williamsstruct scu_port_task_scheduler_group_registers {
15026f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0000 PTSGCR */
15036f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 control;
15046f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0004 RTCR */
15056f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 real_time_clock;
15066f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0008 RTCCR */
15076f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 real_time_clock_control;
15086f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x000C */
15096f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_0C;
15106f231dda68080759f1aed3769896e94c73099f0fDan Williams/*
15116f231dda68080759f1aed3769896e94c73099f0fDan Williams * 0x0010 PTS0CR
15126f231dda68080759f1aed3769896e94c73099f0fDan Williams * 0x0014 PTS0SR
15136f231dda68080759f1aed3769896e94c73099f0fDan Williams * 0x0018 PTS1CR
15146f231dda68080759f1aed3769896e94c73099f0fDan Williams * 0x001C PTS1SR
15156f231dda68080759f1aed3769896e94c73099f0fDan Williams * 0x0020 PTS2CR
15166f231dda68080759f1aed3769896e94c73099f0fDan Williams * 0x0024 PTS2SR
15176f231dda68080759f1aed3769896e94c73099f0fDan Williams * 0x0028 PTS3CR
15186f231dda68080759f1aed3769896e94c73099f0fDan Williams * 0x002C PTS3SR */
15196f231dda68080759f1aed3769896e94c73099f0fDan Williams	struct scu_port_task_scheduler_registers port[4];
15206f231dda68080759f1aed3769896e94c73099f0fDan Williams/*
15216f231dda68080759f1aed3769896e94c73099f0fDan Williams * 0x0030 PCSPE0CR
15226f231dda68080759f1aed3769896e94c73099f0fDan Williams * 0x0034 PCSPE1CR
15236f231dda68080759f1aed3769896e94c73099f0fDan Williams * 0x0038 PCSPE2CR
15246f231dda68080759f1aed3769896e94c73099f0fDan Williams * 0x003C PCSPE3CR */
1525de728b7d72089330603819a74255a0469780fd0eDave Jiang	u32 protocol_engine[4];
15266f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0040 ETMTSCCR */
15276f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 tc_scanning_interval_control;
15286f231dda68080759f1aed3769896e94c73099f0fDan Williams/* 0x0044 ETMRNSCCR */
15296f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 rnc_scanning_interval_control;
15306f231dda68080759f1aed3769896e94c73099f0fDan Williams/* Remainder of memory space 128 bytes */
15316f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_1048_107f[0x0E];
15326f231dda68080759f1aed3769896e94c73099f0fDan Williams
15336f231dda68080759f1aed3769896e94c73099f0fDan Williams};
15346f231dda68080759f1aed3769896e94c73099f0fDan Williams
15356f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_PTSG_SCUVZECR_OFFSET        0x003C
15366f231dda68080759f1aed3769896e94c73099f0fDan Williams
15376f231dda68080759f1aed3769896e94c73099f0fDan Williams/*
15386f231dda68080759f1aed3769896e94c73099f0fDan Williams * *****************************************************************************
15396f231dda68080759f1aed3769896e94c73099f0fDan Williams * * AFE REGISTERS
15406f231dda68080759f1aed3769896e94c73099f0fDan Williams * ***************************************************************************** */
15416f231dda68080759f1aed3769896e94c73099f0fDan Williams#define SCU_AFE_MMR_BASE                  0xE000
15426f231dda68080759f1aed3769896e94c73099f0fDan Williams
15436f231dda68080759f1aed3769896e94c73099f0fDan Williams/*
15446f231dda68080759f1aed3769896e94c73099f0fDan Williams * AFE 0 is at offset 0x0800
15456f231dda68080759f1aed3769896e94c73099f0fDan Williams * AFE 1 is at offset 0x0900
15466f231dda68080759f1aed3769896e94c73099f0fDan Williams * AFE 2 is at offset 0x0a00
15476f231dda68080759f1aed3769896e94c73099f0fDan Williams * AFE 3 is at offset 0x0b00 */
15486f231dda68080759f1aed3769896e94c73099f0fDan Williamsstruct scu_afe_transceiver {
15496f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0000 AFE_XCVR_CTRL0 */
15506f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_xcvr_control0;
15516f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0004 AFE_XCVR_CTRL1 */
15526f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_xcvr_control1;
15536f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0008 */
15546f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_0008;
15556f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x000c afe_dfx_rx_control0 */
15566f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_dfx_rx_control0;
15576f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0010 AFE_DFX_RX_CTRL1 */
15586f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_dfx_rx_control1;
15596f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0014 */
15606f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_0014;
15616f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0018 AFE_DFX_RX_STS0 */
15626f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_dfx_rx_status0;
15636f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x001c AFE_DFX_RX_STS1 */
15646f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_dfx_rx_status1;
15656f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0020 */
15666f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_0020;
15676f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0024 AFE_TX_CTRL */
15686f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_tx_control;
15696f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0028 AFE_TX_AMP_CTRL0 */
15706f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_tx_amp_control0;
15716f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x002c AFE_TX_AMP_CTRL1 */
15726f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_tx_amp_control1;
15736f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0030 AFE_TX_AMP_CTRL2 */
15746f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_tx_amp_control2;
15756f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0034 AFE_TX_AMP_CTRL3 */
15766f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_tx_amp_control3;
15776f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0038 afe_tx_ssc_control */
15786f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_tx_ssc_control;
15796f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x003c */
15806f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_003c;
15816f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0040 AFE_RX_SSC_CTRL0 */
15826f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_rx_ssc_control0;
15836f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0044 AFE_RX_SSC_CTRL1 */
15846f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_rx_ssc_control1;
15856f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0048 AFE_RX_SSC_CTRL2 */
15866f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_rx_ssc_control2;
15876f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x004c AFE_RX_EQ_STS0 */
15886f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_rx_eq_status0;
15896f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0050 AFE_RX_EQ_STS1 */
15906f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_rx_eq_status1;
15916f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0054 AFE_RX_CDR_STS */
15926f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_rx_cdr_status;
15936f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0058 */
15946f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_0058;
15956f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x005c AFE_CHAN_CTRL */
15966f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_channel_control;
15976f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0060-0x006c */
15986f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_0060_006c[0x04];
15996f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0070 AFE_XCVR_EC_STS0 */
16006f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_xcvr_error_capture_status0;
16016f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0074 AFE_XCVR_EC_STS1 */
16026f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_xcvr_error_capture_status1;
16036f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0078 AFE_XCVR_EC_STS2 */
16046f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_xcvr_error_capture_status2;
16056f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x007c afe_xcvr_ec_status3 */
16066f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_xcvr_error_capture_status3;
16076f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0080 AFE_XCVR_EC_STS4 */
16086f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_xcvr_error_capture_status4;
16096f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0084 AFE_XCVR_EC_STS5 */
16106f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_xcvr_error_capture_status5;
16116f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0088-0x00fc */
16126f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_008c_00fc[0x1e];
16136f231dda68080759f1aed3769896e94c73099f0fDan Williams};
16146f231dda68080759f1aed3769896e94c73099f0fDan Williams
16156f231dda68080759f1aed3769896e94c73099f0fDan Williams/**
16166f231dda68080759f1aed3769896e94c73099f0fDan Williams * struct scu_afe_registers - AFE Regsiters
16176f231dda68080759f1aed3769896e94c73099f0fDan Williams *
16186f231dda68080759f1aed3769896e94c73099f0fDan Williams *
16196f231dda68080759f1aed3769896e94c73099f0fDan Williams */
16206f231dda68080759f1aed3769896e94c73099f0fDan Williams/* Uaoa AFE registers */
16216f231dda68080759f1aed3769896e94c73099f0fDan Williamsstruct scu_afe_registers {
16226f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0Xe000 AFE_BIAS_CTRL */
16236f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_bias_control;
16246f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_0004;
16256f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0008 AFE_PLL_CTRL0 */
16266f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_pll_control0;
16276f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x000c AFE_PLL_CTRL1 */
16286f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_pll_control1;
16296f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0010 AFE_PLL_CTRL2 */
16306f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_pll_control2;
16316f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0014 AFE_CB_STS */
16326f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_common_block_status;
16336f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0018-0x007c */
16346f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_18_7c[0x1a];
16356f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0080 AFE_PMSN_MCTRL0 */
16366f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_pmsn_master_control0;
16376f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0084 AFE_PMSN_MCTRL1 */
16386f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_pmsn_master_control1;
16396f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0088 AFE_PMSN_MCTRL2 */
16406f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_pmsn_master_control2;
16416f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x008C-0x00fc */
16426f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_008c_00fc[0x1D];
16436f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0100 AFE_DFX_MST_CTRL0 */
16446f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_dfx_master_control0;
16456f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0104 AFE_DFX_MST_CTRL1 */
16466f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_dfx_master_control1;
16476f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0108 AFE_DFX_DCL_CTRL */
16486f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_dfx_dcl_control;
16496f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x010c AFE_DFX_DMON_CTRL */
16506f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_dfx_digital_monitor_control;
16516f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0110 AFE_DFX_AMONP_CTRL */
16526f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_dfx_analog_p_monitor_control;
16536f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0114 AFE_DFX_AMONN_CTRL */
16546f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_dfx_analog_n_monitor_control;
16556f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0118 AFE_DFX_NTL_STS */
16566f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_dfx_ntl_status;
16576f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x011c AFE_DFX_FIFO_STS0 */
16586f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_dfx_fifo_status0;
16596f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0120 AFE_DFX_FIFO_STS1 */
16606f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_dfx_fifo_status1;
16616f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0124 AFE_DFX_MPAT_CTRL */
16626f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_dfx_master_pattern_control;
16636f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0128 AFE_DFX_P0_CTRL */
16646f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_dfx_p0_control;
16656f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x012c-0x01a8 AFE_DFX_P0_DRx */
16666f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_dfx_p0_data[32];
16676f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x01ac */
16686f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_01ac;
16696f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x01b0-0x020c AFE_DFX_P0_IRx */
16706f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_dfx_p0_instruction[24];
16716f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0210 */
16726f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_0210;
16736f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0214 AFE_DFX_P1_CTRL */
16746f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_dfx_p1_control;
16756f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0218-0x245 AFE_DFX_P1_DRx */
16766f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_dfx_p1_data[16];
16776f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0258-0x029c */
16786f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_0258_029c[0x12];
16796f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x02a0-0x02bc AFE_DFX_P1_IRx */
16806f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_dfx_p1_instruction[8];
16816f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x02c0-0x2fc */
16826f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_02c0_02fc[0x10];
16836f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0300 AFE_DFX_TX_PMSN_CTRL */
16846f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_dfx_tx_pmsn_control;
16856f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0304 AFE_DFX_RX_PMSN_CTRL */
16866f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_dfx_rx_pmsn_control;
16876f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_0308;
16886f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x030c AFE_DFX_NOA_CTRL0 */
16896f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_dfx_noa_control0;
16906f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0310 AFE_DFX_NOA_CTRL1 */
16916f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_dfx_noa_control1;
16926f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0314 AFE_DFX_NOA_CTRL2 */
16936f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_dfx_noa_control2;
16946f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0318 AFE_DFX_NOA_CTRL3 */
16956f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_dfx_noa_control3;
16966f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x031c AFE_DFX_NOA_CTRL4 */
16976f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_dfx_noa_control4;
16986f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0320 AFE_DFX_NOA_CTRL5 */
16996f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_dfx_noa_control5;
17006f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0324 AFE_DFX_NOA_CTRL6 */
17016f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_dfx_noa_control6;
17026f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0328 AFE_DFX_NOA_CTRL7 */
17036f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 afe_dfx_noa_control7;
17046f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x032c-0x07fc */
17056f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_032c_07fc[0x135];
17066f231dda68080759f1aed3769896e94c73099f0fDan Williams
17076f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0800-0x0bfc */
17086f231dda68080759f1aed3769896e94c73099f0fDan Williams	struct scu_afe_transceiver scu_afe_xcvr[4];
17096f231dda68080759f1aed3769896e94c73099f0fDan Williams
17106f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0c00-0x0ffc */
17116f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_0c00_0ffc[0x0100];
17126f231dda68080759f1aed3769896e94c73099f0fDan Williams};
17136f231dda68080759f1aed3769896e94c73099f0fDan Williams
1714de728b7d72089330603819a74255a0469780fd0eDave Jiangstruct scu_protocol_engine_group_registers {
17156f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 table[0xE0];
17166f231dda68080759f1aed3769896e94c73099f0fDan Williams};
17176f231dda68080759f1aed3769896e94c73099f0fDan Williams
17186f231dda68080759f1aed3769896e94c73099f0fDan Williams
1719de728b7d72089330603819a74255a0469780fd0eDave Jiangstruct scu_viit_iit {
17206f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 table[256];
17216f231dda68080759f1aed3769896e94c73099f0fDan Williams};
17226f231dda68080759f1aed3769896e94c73099f0fDan Williams
17236f231dda68080759f1aed3769896e94c73099f0fDan Williams/**
17246f231dda68080759f1aed3769896e94c73099f0fDan Williams * Placeholder for the ZONE Partition Table information ZONING will not be
17256f231dda68080759f1aed3769896e94c73099f0fDan Williams *    included in the 1.1 release.
17266f231dda68080759f1aed3769896e94c73099f0fDan Williams *
17276f231dda68080759f1aed3769896e94c73099f0fDan Williams *
17286f231dda68080759f1aed3769896e94c73099f0fDan Williams */
1729de728b7d72089330603819a74255a0469780fd0eDave Jiangstruct scu_zone_partition_table {
17306f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 table[2048];
17316f231dda68080759f1aed3769896e94c73099f0fDan Williams};
17326f231dda68080759f1aed3769896e94c73099f0fDan Williams
17336f231dda68080759f1aed3769896e94c73099f0fDan Williams/**
17346f231dda68080759f1aed3769896e94c73099f0fDan Williams * Placeholder for the CRAM register since I am not sure if we need to
17356f231dda68080759f1aed3769896e94c73099f0fDan Williams *    read/write to these registers as yet.
17366f231dda68080759f1aed3769896e94c73099f0fDan Williams *
17376f231dda68080759f1aed3769896e94c73099f0fDan Williams *
17386f231dda68080759f1aed3769896e94c73099f0fDan Williams */
1739de728b7d72089330603819a74255a0469780fd0eDave Jiangstruct scu_completion_ram {
17406f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 ram[128];
17416f231dda68080759f1aed3769896e94c73099f0fDan Williams};
17426f231dda68080759f1aed3769896e94c73099f0fDan Williams
17436f231dda68080759f1aed3769896e94c73099f0fDan Williams/**
17446f231dda68080759f1aed3769896e94c73099f0fDan Williams * Placeholder for the FBRAM registers since I am not sure if we need to
17456f231dda68080759f1aed3769896e94c73099f0fDan Williams *    read/write to these registers as yet.
17466f231dda68080759f1aed3769896e94c73099f0fDan Williams *
17476f231dda68080759f1aed3769896e94c73099f0fDan Williams *
17486f231dda68080759f1aed3769896e94c73099f0fDan Williams */
1749de728b7d72089330603819a74255a0469780fd0eDave Jiangstruct scu_frame_buffer_ram {
17506f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 ram[128];
17516f231dda68080759f1aed3769896e94c73099f0fDan Williams};
17526f231dda68080759f1aed3769896e94c73099f0fDan Williams
1753de728b7d72089330603819a74255a0469780fd0eDave Jiang#define scu_scratch_ram_SIZE_IN_DWORDS  256
17546f231dda68080759f1aed3769896e94c73099f0fDan Williams
17556f231dda68080759f1aed3769896e94c73099f0fDan Williams/**
17566f231dda68080759f1aed3769896e94c73099f0fDan Williams * Placeholder for the scratch RAM registers.
17576f231dda68080759f1aed3769896e94c73099f0fDan Williams *
17586f231dda68080759f1aed3769896e94c73099f0fDan Williams *
17596f231dda68080759f1aed3769896e94c73099f0fDan Williams */
1760de728b7d72089330603819a74255a0469780fd0eDave Jiangstruct scu_scratch_ram {
1761de728b7d72089330603819a74255a0469780fd0eDave Jiang	u32 ram[scu_scratch_ram_SIZE_IN_DWORDS];
17626f231dda68080759f1aed3769896e94c73099f0fDan Williams};
17636f231dda68080759f1aed3769896e94c73099f0fDan Williams
17646f231dda68080759f1aed3769896e94c73099f0fDan Williams/**
17656f231dda68080759f1aed3769896e94c73099f0fDan Williams * Placeholder since I am not yet sure what these registers are here for.
17666f231dda68080759f1aed3769896e94c73099f0fDan Williams *
17676f231dda68080759f1aed3769896e94c73099f0fDan Williams *
17686f231dda68080759f1aed3769896e94c73099f0fDan Williams */
1769de728b7d72089330603819a74255a0469780fd0eDave Jiangstruct noa_protocol_engine_partition {
17706f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved[64];
17716f231dda68080759f1aed3769896e94c73099f0fDan Williams};
17726f231dda68080759f1aed3769896e94c73099f0fDan Williams
17736f231dda68080759f1aed3769896e94c73099f0fDan Williams/**
17746f231dda68080759f1aed3769896e94c73099f0fDan Williams * Placeholder since I am not yet sure what these registers are here for.
17756f231dda68080759f1aed3769896e94c73099f0fDan Williams *
17766f231dda68080759f1aed3769896e94c73099f0fDan Williams *
17776f231dda68080759f1aed3769896e94c73099f0fDan Williams */
1778de728b7d72089330603819a74255a0469780fd0eDave Jiangstruct noa_hub_partition {
17796f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved[64];
17806f231dda68080759f1aed3769896e94c73099f0fDan Williams};
17816f231dda68080759f1aed3769896e94c73099f0fDan Williams
17826f231dda68080759f1aed3769896e94c73099f0fDan Williams/**
17836f231dda68080759f1aed3769896e94c73099f0fDan Williams * Placeholder since I am not yet sure what these registers are here for.
17846f231dda68080759f1aed3769896e94c73099f0fDan Williams *
17856f231dda68080759f1aed3769896e94c73099f0fDan Williams *
17866f231dda68080759f1aed3769896e94c73099f0fDan Williams */
1787de728b7d72089330603819a74255a0469780fd0eDave Jiangstruct noa_host_interface_partition {
17886f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved[64];
17896f231dda68080759f1aed3769896e94c73099f0fDan Williams};
17906f231dda68080759f1aed3769896e94c73099f0fDan Williams
17916f231dda68080759f1aed3769896e94c73099f0fDan Williams/**
1792de728b7d72089330603819a74255a0469780fd0eDave Jiang * struct transport_link_layer_pair - The SCU Hardware pairs up the TL
17936f231dda68080759f1aed3769896e94c73099f0fDan Williams *    registers with the LL registers so we must place them adjcent to make the
17946f231dda68080759f1aed3769896e94c73099f0fDan Williams *    array of registers in the PEG.
17956f231dda68080759f1aed3769896e94c73099f0fDan Williams *
17966f231dda68080759f1aed3769896e94c73099f0fDan Williams *
17976f231dda68080759f1aed3769896e94c73099f0fDan Williams */
1798de728b7d72089330603819a74255a0469780fd0eDave Jiangstruct transport_link_layer_pair {
17996f231dda68080759f1aed3769896e94c73099f0fDan Williams	struct scu_transport_layer_registers tl;
18006f231dda68080759f1aed3769896e94c73099f0fDan Williams	struct scu_link_layer_registers ll;
18016f231dda68080759f1aed3769896e94c73099f0fDan Williams};
18026f231dda68080759f1aed3769896e94c73099f0fDan Williams
18036f231dda68080759f1aed3769896e94c73099f0fDan Williams/**
1804de728b7d72089330603819a74255a0469780fd0eDave Jiang * struct scu_peg_registers - SCU Protocol Engine Memory mapped register space.
18056f231dda68080759f1aed3769896e94c73099f0fDan Williams *     These registers are unique to each protocol engine group.  There can be
18066f231dda68080759f1aed3769896e94c73099f0fDan Williams *    at most two PEG for a single SCU part.
18076f231dda68080759f1aed3769896e94c73099f0fDan Williams *
18086f231dda68080759f1aed3769896e94c73099f0fDan Williams *
18096f231dda68080759f1aed3769896e94c73099f0fDan Williams */
1810de728b7d72089330603819a74255a0469780fd0eDave Jiangstruct scu_peg_registers {
1811de728b7d72089330603819a74255a0469780fd0eDave Jiang	struct transport_link_layer_pair pe[4];
18126f231dda68080759f1aed3769896e94c73099f0fDan Williams	struct scu_port_task_scheduler_group_registers ptsg;
1813de728b7d72089330603819a74255a0469780fd0eDave Jiang	struct scu_protocol_engine_group_registers peg;
18146f231dda68080759f1aed3769896e94c73099f0fDan Williams	struct scu_sgpio_registers sgpio;
18156f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_01500_1BFF[0x1C0];
18166f231dda68080759f1aed3769896e94c73099f0fDan Williams	struct scu_viit_entry viit[64];
1817de728b7d72089330603819a74255a0469780fd0eDave Jiang	struct scu_zone_partition_table zpt0;
1818de728b7d72089330603819a74255a0469780fd0eDave Jiang	struct scu_zone_partition_table zpt1;
18196f231dda68080759f1aed3769896e94c73099f0fDan Williams};
18206f231dda68080759f1aed3769896e94c73099f0fDan Williams
18216f231dda68080759f1aed3769896e94c73099f0fDan Williams/**
18226f231dda68080759f1aed3769896e94c73099f0fDan Williams * struct scu_registers - SCU regsiters including both PEG registers if we turn
18236f231dda68080759f1aed3769896e94c73099f0fDan Williams *    on that compile option. All of these registers are in the memory mapped
18246f231dda68080759f1aed3769896e94c73099f0fDan Williams *    space returned from BAR1.
18256f231dda68080759f1aed3769896e94c73099f0fDan Williams *
18266f231dda68080759f1aed3769896e94c73099f0fDan Williams *
18276f231dda68080759f1aed3769896e94c73099f0fDan Williams */
18286f231dda68080759f1aed3769896e94c73099f0fDan Williamsstruct scu_registers {
18296f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x0000 - PEG 0 */
1830de728b7d72089330603819a74255a0469780fd0eDave Jiang	struct scu_peg_registers peg0;
18316f231dda68080759f1aed3769896e94c73099f0fDan Williams
18326f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x6000 - SDMA and Miscellaneous */
18336f231dda68080759f1aed3769896e94c73099f0fDan Williams	struct scu_sdma_registers sdma;
1834de728b7d72089330603819a74255a0469780fd0eDave Jiang	struct scu_completion_ram cram;
1835de728b7d72089330603819a74255a0469780fd0eDave Jiang	struct scu_frame_buffer_ram fbram;
18366f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_6800_69FF[0x80];
1837de728b7d72089330603819a74255a0469780fd0eDave Jiang	struct noa_protocol_engine_partition noa_pe;
1838de728b7d72089330603819a74255a0469780fd0eDave Jiang	struct noa_hub_partition noa_hub;
1839de728b7d72089330603819a74255a0469780fd0eDave Jiang	struct noa_host_interface_partition noa_if;
18406f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_6d00_7fff[0x4c0];
18416f231dda68080759f1aed3769896e94c73099f0fDan Williams
18426f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x8000 - PEG 1 */
1843de728b7d72089330603819a74255a0469780fd0eDave Jiang	struct scu_peg_registers peg1;
18446f231dda68080759f1aed3769896e94c73099f0fDan Williams
18456f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0xE000 - AFE Registers */
18466f231dda68080759f1aed3769896e94c73099f0fDan Williams	struct scu_afe_registers afe;
18476f231dda68080759f1aed3769896e94c73099f0fDan Williams
18486f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0xF000 - reserved */
18496f231dda68080759f1aed3769896e94c73099f0fDan Williams	u32 reserved_f000_211fff[0x80c00];
18506f231dda68080759f1aed3769896e94c73099f0fDan Williams
18516f231dda68080759f1aed3769896e94c73099f0fDan Williams	/* 0x212000 - scratch RAM */
1852de728b7d72089330603819a74255a0469780fd0eDave Jiang	struct scu_scratch_ram scratch_ram;
18536f231dda68080759f1aed3769896e94c73099f0fDan Williams};
18546f231dda68080759f1aed3769896e94c73099f0fDan Williams
18556f231dda68080759f1aed3769896e94c73099f0fDan Williams#endif   /* _SCU_REGISTERS_HEADER_ */
1856