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