148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine/* 248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * Tsi721 PCIExpress-to-SRIO bridge definitions 348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * 448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * Copyright 2011, Integrated Device Technology, Inc. 548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * 648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * This program is free software; you can redistribute it and/or modify it 748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * under the terms of the GNU General Public License as published by the Free 848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * Software Foundation; either version 2 of the License, or (at your option) 948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * any later version. 1048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * 1148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * This program is distributed in the hope that it will be useful, but WITHOUT 1248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 1348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 1448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * more details. 1548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * 1648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * You should have received a copy of the GNU General Public License along with 1748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * this program; if not, write to the Free Software Foundation, Inc., 59 1848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * Temple Place - Suite 330, Boston, MA 02111-1307, USA. 1948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine */ 2048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 2148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#ifndef __TSI721_H 2248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define __TSI721_H 2348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 2448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define DRV_NAME "tsi721" 2548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 2648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define DEFAULT_HOPCOUNT 0xff 2748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define DEFAULT_DESTID 0xff 2848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 2948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine/* PCI device ID */ 3048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define PCI_DEVICE_ID_TSI721 0x80ab 3148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 3248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define BAR_0 0 3348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define BAR_1 1 3448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define BAR_2 2 3548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define BAR_4 4 3648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 3748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_PC2SR_BARS 2 3848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_PC2SR_WINS 8 3948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_PC2SR_ZONES 8 4048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_MAINT_WIN 0 /* Window for outbound maintenance requests */ 4148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define IDB_QUEUE 0 /* Inbound Doorbell Queue to use */ 4248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define IDB_QSIZE 512 /* Inbound Doorbell Queue size */ 4348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 4448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine/* Memory space sizes */ 4548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_REG_SPACE_SIZE (512 * 1024) /* 512K */ 4648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DB_WIN_SIZE (16 * 1024 * 1024) /* 16MB */ 4748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 4848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define RIO_TT_CODE_8 0x00000000 4948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define RIO_TT_CODE_16 0x00000001 5048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 5148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMA_MAXCH 8 5248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMA_MINSTSSZ 32 5348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMA_STSBLKSZ 8 5448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 5548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SRIO_MAXCH 8 5648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 5748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define DBELL_SID(buf) (((u8)buf[2] << 8) | (u8)buf[3]) 5848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define DBELL_TID(buf) (((u8)buf[4] << 8) | (u8)buf[5]) 5948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define DBELL_INF(buf) (((u8)buf[0] << 8) | (u8)buf[1]) 6048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 6148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_RIO_PW_MSG_SIZE 16 /* Tsi721 saves only 16 bytes of PW msg */ 6248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 6348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine/* Register definitions */ 6448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 6548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine/* 6648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * Registers in PCIe configuration space 6748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine */ 6848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 6948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_PCIECFG_MSIXTBL 0x0a4 7048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_MSIXTBL_OFFSET 0x2c000 7148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_PCIECFG_MSIXPBA 0x0a8 7248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_MSIXPBA_OFFSET 0x2a000 7348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_PCIECFG_EPCTL 0x400 7448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 751cee22b7f385b6c4f716846203a96e1f302132aaAlexandre Bounine#define MAX_READ_REQUEST_SZ_SHIFT 12 761cee22b7f385b6c4f716846203a96e1f302132aaAlexandre Bounine 7748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine/* 7848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * Event Management Registers 7948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine */ 8048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 8148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_RIO_EM_INT_STAT 0x10910 8248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_RIO_EM_INT_STAT_PW_RX 0x00010000 8348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 8448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_RIO_EM_INT_ENABLE 0x10914 8548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_RIO_EM_INT_ENABLE_PW_RX 0x00010000 8648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 8748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_RIO_EM_DEV_INT_EN 0x10930 8848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_RIO_EM_DEV_INT_EN_INT 0x00000001 8948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 9048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine/* 9148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * Port-Write Block Registers 9248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine */ 9348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 9448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_RIO_PW_CTL 0x10a04 9548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_RIO_PW_CTL_PW_TIMER 0xf0000000 9648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_RIO_PW_CTL_PWT_DIS (0 << 28) 9748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_RIO_PW_CTL_PWT_103 (1 << 28) 9848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_RIO_PW_CTL_PWT_205 (1 << 29) 9948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_RIO_PW_CTL_PWT_410 (1 << 30) 10048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_RIO_PW_CTL_PWT_820 (1 << 31) 10148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_RIO_PW_CTL_PWC_MODE 0x01000000 10248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_RIO_PW_CTL_PWC_CONT 0x00000000 10348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_RIO_PW_CTL_PWC_REL 0x01000000 10448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 10548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_RIO_PW_RX_STAT 0x10a10 10648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_RIO_PW_RX_STAT_WR_SIZE 0x0000f000 10748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI_RIO_PW_RX_STAT_WDPTR 0x00000100 10848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_RIO_PW_RX_STAT_PW_SHORT 0x00000008 10948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_RIO_PW_RX_STAT_PW_TRUNC 0x00000004 11048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_RIO_PW_RX_STAT_PW_DISC 0x00000002 11148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_RIO_PW_RX_STAT_PW_VAL 0x00000001 11248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 11348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_RIO_PW_RX_CAPT(x) (0x10a20 + (x)*4) 11448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 11548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine/* 11648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * Inbound Doorbells 11748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine */ 11848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 11948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IDB_ENTRY_SIZE 64 12048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 12148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IDQ_CTL(x) (0x20000 + (x) * 1000) 12248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IDQ_SUSPEND 0x00000002 12348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IDQ_INIT 0x00000001 12448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 12548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IDQ_STS(x) (0x20004 + (x) * 1000) 12648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IDQ_RUN 0x00200000 12748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 12848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IDQ_MASK(x) (0x20008 + (x) * 1000) 12948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IDQ_MASK_MASK 0xffff0000 13048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IDQ_MASK_PATT 0x0000ffff 13148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 13248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IDQ_RP(x) (0x2000c + (x) * 1000) 13348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IDQ_RP_PTR 0x0007ffff 13448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 13548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IDQ_WP(x) (0x20010 + (x) * 1000) 13648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IDQ_WP_PTR 0x0007ffff 13748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 13848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IDQ_BASEL(x) (0x20014 + (x) * 1000) 13948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IDQ_BASEL_ADDR 0xffffffc0 14048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IDQ_BASEU(x) (0x20018 + (x) * 1000) 14148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IDQ_SIZE(x) (0x2001c + (x) * 1000) 14248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IDQ_SIZE_VAL(size) (__fls(size) - 4) 14348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IDQ_SIZE_MIN 512 14448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IDQ_SIZE_MAX (512 * 1024) 14548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 14648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SR_CHINT(x) (0x20040 + (x) * 1000) 14748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SR_CHINTE(x) (0x20044 + (x) * 1000) 14848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SR_CHINTSET(x) (0x20048 + (x) * 1000) 14948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SR_CHINT_ODBOK 0x00000020 15048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SR_CHINT_IDBQRCV 0x00000010 15148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SR_CHINT_SUSP 0x00000008 15248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SR_CHINT_ODBTO 0x00000004 15348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SR_CHINT_ODBRTRY 0x00000002 15448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SR_CHINT_ODBERR 0x00000001 15548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SR_CHINT_ALL 0x0000003f 15648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 15748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBWIN_NUM 8 15848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 15948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBWINLB(x) (0x29000 + (x) * 20) 16048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBWINLB_BA 0xfffff000 16148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBWINLB_WEN 0x00000001 16248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 16348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SR2PC_GEN_INTE 0x29800 16448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SR2PC_PWE 0x29804 16548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SR2PC_GEN_INT 0x29808 16648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 16748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DEV_INTE 0x29840 16848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DEV_INT 0x29844 16948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DEV_INTSET 0x29848 17048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DEV_INT_SMSG_CH 0x00000800 17148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DEV_INT_SMSG_NCH 0x00000400 17248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DEV_INT_SR2PC_CH 0x00000200 17348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DEV_INT_SRIO 0x00000020 17448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 17548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DEV_CHAN_INTE 0x2984c 17648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DEV_CHAN_INT 0x29850 17748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 17848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_INT_SR2PC_CHAN_M 0xff000000 17948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_INT_SR2PC_CHAN(x) (1 << (24 + (x))) 18048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_INT_IMSG_CHAN_M 0x00ff0000 18148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_INT_IMSG_CHAN(x) (1 << (16 + (x))) 18248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_INT_OMSG_CHAN_M 0x0000ff00 18348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_INT_OMSG_CHAN(x) (1 << (8 + (x))) 18448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 18548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine/* 18648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * PC2SR block registers 18748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine */ 18848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBWIN_NUM TSI721_PC2SR_WINS 18948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 19048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBWINLB(x) (0x40000 + (x) * 20) 19148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBWINLB_BA 0xffff8000 19248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBWINLB_WEN 0x00000001 19348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 19448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBWINUB(x) (0x40004 + (x) * 20) 19548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 19648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBWINSZ(x) (0x40008 + (x) * 20) 19748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBWINSZ_SIZE 0x00001f00 19848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBWIN_SIZE(size) (__fls(size) - 15) 19948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 20048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_ZONE_SEL 0x41300 20148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_ZONE_SEL_RD_WRB 0x00020000 20248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_ZONE_SEL_GO 0x00010000 20348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_ZONE_SEL_WIN 0x00000038 20448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_ZONE_SEL_ZONE 0x00000007 20548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 20648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_LUT_DATA0 0x41304 20748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_LUT_DATA0_ADD 0xfffff000 20848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_LUT_DATA0_RDTYPE 0x00000f00 20948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_LUT_DATA0_NREAD 0x00000100 21048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_LUT_DATA0_MNTRD 0x00000200 21148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_LUT_DATA0_RDCRF 0x00000020 21248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_LUT_DATA0_WRCRF 0x00000010 21348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_LUT_DATA0_WRTYPE 0x0000000f 21448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_LUT_DATA0_NWR 0x00000001 21548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_LUT_DATA0_MNTWR 0x00000002 21648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_LUT_DATA0_NWR_R 0x00000004 21748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 21848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_LUT_DATA1 0x41308 21948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 22048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_LUT_DATA2 0x4130c 22148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_LUT_DATA2_HC 0xff000000 22248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_LUT_DATA2_ADD65 0x000c0000 22348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_LUT_DATA2_TT 0x00030000 22448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_LUT_DATA2_DSTID 0x0000ffff 22548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 22648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_PC2SR_INTE 0x41310 22748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 22848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DEVCTL 0x48004 22948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DEVCTL_SRBOOT_CMPL 0x00000004 23048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 23148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_I2C_INT_ENABLE 0x49120 23248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 23348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine/* 23448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * Block DMA Engine Registers 23548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * x = 0..7 23648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine */ 23748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 23848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAC_DWRCNT(x) (0x51000 + (x) * 0x1000) 23948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAC_DRDCNT(x) (0x51004 + (x) * 0x1000) 24048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 24148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAC_CTL(x) (0x51008 + (x) * 0x1000) 24248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAC_CTL_SUSP 0x00000002 24348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAC_CTL_INIT 0x00000001 24448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 24548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAC_INT(x) (0x5100c + (x) * 0x1000) 24648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAC_INT_STFULL 0x00000010 24748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAC_INT_DONE 0x00000008 24848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAC_INT_SUSP 0x00000004 24948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAC_INT_ERR 0x00000002 25048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAC_INT_IOFDONE 0x00000001 25148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAC_INT_ALL 0x0000001f 25248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 25348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAC_INTSET(x) (0x51010 + (x) * 0x1000) 25448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 25548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAC_STS(x) (0x51014 + (x) * 0x1000) 25648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAC_STS_ABORT 0x00400000 25748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAC_STS_RUN 0x00200000 25848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAC_STS_CS 0x001f0000 25948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 26048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAC_INTE(x) (0x51018 + (x) * 0x1000) 26148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 26248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAC_DPTRL(x) (0x51024 + (x) * 0x1000) 26348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAC_DPTRL_MASK 0xffffffe0 26448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 26548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAC_DPTRH(x) (0x51028 + (x) * 0x1000) 26648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 26748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAC_DSBL(x) (0x5102c + (x) * 0x1000) 26848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAC_DSBL_MASK 0xffffffc0 26948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 27048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAC_DSBH(x) (0x51030 + (x) * 0x1000) 27148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 27248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAC_DSSZ(x) (0x51034 + (x) * 0x1000) 27348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAC_DSSZ_SIZE_M 0x0000000f 27448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAC_DSSZ_SIZE(size) (__fls(size) - 4) 27548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 27648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 27748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAC_DSRP(x) (0x51038 + (x) * 0x1000) 27848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAC_DSRP_MASK 0x0007ffff 27948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 28048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAC_DSWP(x) (0x5103c + (x) * 0x1000) 28148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAC_DSWP_MASK 0x0007ffff 28248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 28348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_BDMA_INTE 0x5f000 28448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 28548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine/* 28648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * Messaging definitions 28748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine */ 28848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_MSG_BUFFER_SIZE RIO_MAX_MSG_SIZE 28948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_MSG_MAX_SIZE RIO_MAX_MSG_SIZE 29048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IMSG_MAXCH 8 29148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IMSG_CHNUM TSI721_IMSG_MAXCH 29248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IMSGD_MIN_RING_SIZE 32 29348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IMSGD_RING_SIZE 512 29448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 29548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OMSG_CHNUM 4 /* One channel per MBOX */ 29648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OMSGD_MIN_RING_SIZE 32 29748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OMSGD_RING_SIZE 512 29848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 29948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine/* 30048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * Outbound Messaging Engine Registers 30148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * x = 0..7 30248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine */ 30348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 30448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_DWRCNT(x) (0x61000 + (x) * 0x1000) 30548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 30648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_DRDCNT(x) (0x61004 + (x) * 0x1000) 30748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 30848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_CTL(x) (0x61008 + (x) * 0x1000) 30948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_CTL_MASK 0x00000007 31048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_CTL_RETRY_THR 0x00000004 31148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_CTL_SUSPEND 0x00000002 31248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_CTL_INIT 0x00000001 31348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 31448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_INT(x) (0x6100c + (x) * 0x1000) 31548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_INTSET(x) (0x61010 + (x) * 0x1000) 31648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_INTE(x) (0x61018 + (x) * 0x1000) 31748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_INT_MASK 0x0000001F 31848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_INT_ST_FULL 0x00000010 31948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_INT_DONE 0x00000008 32048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_INT_SUSPENDED 0x00000004 32148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_INT_ERROR 0x00000002 32248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_INT_IOF_DONE 0x00000001 32348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_INT_ALL TSI721_OBDMAC_INT_MASK 32448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 32548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_STS(x) (0x61014 + (x) * 0x1000) 32648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_STS_MASK 0x007f0000 32748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_STS_ABORT 0x00400000 32848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_STS_RUN 0x00200000 32948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_STS_CS 0x001f0000 33048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 33148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_PWE(x) (0x6101c + (x) * 0x1000) 33248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_PWE_MASK 0x00000002 33348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_PWE_ERROR_EN 0x00000002 33448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 33548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_DPTRL(x) (0x61020 + (x) * 0x1000) 33648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_DPTRL_MASK 0xfffffff0 33748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 33848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_DPTRH(x) (0x61024 + (x) * 0x1000) 33948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_DPTRH_MASK 0xffffffff 34048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 34148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_DSBL(x) (0x61040 + (x) * 0x1000) 34248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_DSBL_MASK 0xffffffc0 34348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 34448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_DSBH(x) (0x61044 + (x) * 0x1000) 34548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_DSBH_MASK 0xffffffff 34648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 34748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_DSSZ(x) (0x61048 + (x) * 0x1000) 34848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_DSSZ_MASK 0x0000000f 34948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 35048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_DSRP(x) (0x6104c + (x) * 0x1000) 35148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_DSRP_MASK 0x0007ffff 35248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 35348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_DSWP(x) (0x61050 + (x) * 0x1000) 35448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OBDMAC_DSWP_MASK 0x0007ffff 35548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 35648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_RQRPTO 0x60010 35748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_RQRPTO_MASK 0x00ffffff 35848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_RQRPTO_VAL 400 /* Response TO value */ 35948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 36048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine/* 36148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * Inbound Messaging Engine Registers 36248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * x = 0..7 36348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine */ 36448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 36548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IB_DEVID_GLOBAL 0xffff 36648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_FQBL(x) (0x61200 + (x) * 0x1000) 36748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_FQBL_MASK 0xffffffc0 36848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 36948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_FQBH(x) (0x61204 + (x) * 0x1000) 37048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_FQBH_MASK 0xffffffff 37148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 37248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_FQSZ_ENTRY_INX TSI721_IMSGD_RING_SIZE 37348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_FQSZ(x) (0x61208 + (x) * 0x1000) 37448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_FQSZ_MASK 0x0000000f 37548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 37648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_FQRP(x) (0x6120c + (x) * 0x1000) 37748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_FQRP_MASK 0x0007ffff 37848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 37948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_FQWP(x) (0x61210 + (x) * 0x1000) 38048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_FQWP_MASK 0x0007ffff 38148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 38248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_FQTH(x) (0x61214 + (x) * 0x1000) 38348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_FQTH_MASK 0x0007ffff 38448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 38548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IB_DEVID 0x60020 38648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IB_DEVID_MASK 0x0000ffff 38748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 38848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_CTL(x) (0x61240 + (x) * 0x1000) 38948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_CTL_MASK 0x00000003 39048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_CTL_SUSPEND 0x00000002 39148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_CTL_INIT 0x00000001 39248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 39348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_STS(x) (0x61244 + (x) * 0x1000) 39448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_STS_MASK 0x007f0000 39548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBSMAC_STS_ABORT 0x00400000 39648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBSMAC_STS_RUN 0x00200000 39748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBSMAC_STS_CS 0x001f0000 39848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 39948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_INT(x) (0x61248 + (x) * 0x1000) 40048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_INTSET(x) (0x6124c + (x) * 0x1000) 40148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_INTE(x) (0x61250 + (x) * 0x1000) 40248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_INT_MASK 0x0000100f 40348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_INT_SRTO 0x00001000 40448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_INT_SUSPENDED 0x00000008 40548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_INT_PC_ERROR 0x00000004 40648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_INT_FQ_LOW 0x00000002 40748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_INT_DQ_RCV 0x00000001 40848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_INT_ALL TSI721_IBDMAC_INT_MASK 40948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 41048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_PWE(x) (0x61254 + (x) * 0x1000) 41148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_PWE_MASK 0x00001700 41248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_PWE_SRTO 0x00001000 41348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_PWE_ILL_FMT 0x00000400 41448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_PWE_ILL_DEC 0x00000200 41548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_PWE_IMP_SP 0x00000100 41648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 41748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_DQBL(x) (0x61300 + (x) * 0x1000) 41848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_DQBL_MASK 0xffffffc0 41948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_DQBL_ADDR 0xffffffc0 42048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 42148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_DQBH(x) (0x61304 + (x) * 0x1000) 42248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_DQBH_MASK 0xffffffff 42348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 42448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_DQRP(x) (0x61308 + (x) * 0x1000) 42548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_DQRP_MASK 0x0007ffff 42648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 42748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_DQWR(x) (0x6130c + (x) * 0x1000) 42848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_DQWR_MASK 0x0007ffff 42948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 43048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_DQSZ(x) (0x61314 + (x) * 0x1000) 43148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IBDMAC_DQSZ_MASK 0x0000000f 43248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 43348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine/* 43448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * Messaging Engine Interrupts 43548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine */ 43648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 43748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SMSG_PWE 0x6a004 43848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 43948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SMSG_INTE 0x6a000 44048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SMSG_INT 0x6a008 44148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SMSG_INTSET 0x6a010 44248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SMSG_INT_MASK 0x0086ffff 44348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SMSG_INT_UNS_RSP 0x00800000 44448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SMSG_INT_ECC_NCOR 0x00040000 44548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SMSG_INT_ECC_COR 0x00020000 44648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SMSG_INT_ECC_NCOR_CH 0x0000ff00 44748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SMSG_INT_ECC_COR_CH 0x000000ff 44848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 44948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SMSG_ECC_LOG 0x6a014 45048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SMSG_ECC_LOG_MASK 0x00070007 45148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SMSG_ECC_LOG_ECC_NCOR_M 0x00070000 45248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SMSG_ECC_LOG_ECC_COR_M 0x00000007 45348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 45448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_RETRY_GEN_CNT 0x6a100 45548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_RETRY_GEN_CNT_MASK 0xffffffff 45648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 45748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_RETRY_RX_CNT 0x6a104 45848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_RETRY_RX_CNT_MASK 0xffffffff 45948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 46048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SMSG_ECC_COR_LOG(x) (0x6a300 + (x) * 4) 46148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SMSG_ECC_COR_LOG_MASK 0x000000ff 46248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 46348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SMSG_ECC_NCOR(x) (0x6a340 + (x) * 4) 46448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_SMSG_ECC_NCOR_MASK 0x000000ff 46548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 46648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine/* 46748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * Block DMA Descriptors 46848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine */ 46948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 47048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bouninestruct tsi721_dma_desc { 47148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine __le32 type_id; 47248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 47348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAD_DEVID 0x0000ffff 47448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAD_CRF 0x00010000 47548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAD_PRIO 0x00060000 47648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAD_RTYPE 0x00780000 47748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAD_IOF 0x08000000 47848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAD_DTYPE 0xe0000000 47948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 48048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine __le32 bcount; 48148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 48248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAD_BCOUNT1 0x03ffffff /* if DTYPE == 1 */ 48348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAD_BCOUNT2 0x0000000f /* if DTYPE == 2 */ 48448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAD_TT 0x0c000000 48548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAD_RADDR0 0xc0000000 48648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 48748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine union { 48848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine __le32 raddr_lo; /* if DTYPE == (1 || 2) */ 48948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine __le32 next_lo; /* if DTYPE == 3 */ 49048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine }; 49148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 49248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAD_CFGOFF 0x00ffffff 49348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMAD_HOPCNT 0xff000000 49448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 49548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine union { 49648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine __le32 raddr_hi; /* if DTYPE == (1 || 2) */ 49748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine __le32 next_hi; /* if DTYPE == 3 */ 49848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine }; 49948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 50048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine union { 50148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine struct { /* if DTYPE == 1 */ 50248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine __le32 bufptr_lo; 50348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine __le32 bufptr_hi; 50448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine __le32 s_dist; 50548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine __le32 s_size; 50648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine } t1; 50748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine __le32 data[4]; /* if DTYPE == 2 */ 50848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine u32 reserved[4]; /* if DTYPE == 3 */ 50948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine }; 51048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine} __aligned(32); 51148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 51248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine/* 51348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * Inbound Messaging Descriptor 51448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine */ 51548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bouninestruct tsi721_imsg_desc { 51648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine __le32 type_id; 51748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 51848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IMD_DEVID 0x0000ffff 51948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IMD_CRF 0x00010000 52048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IMD_PRIO 0x00060000 52148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IMD_TT 0x00180000 52248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IMD_DTYPE 0xe0000000 52348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 52448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine __le32 msg_info; 52548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 52648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IMD_BCOUNT 0x00000ff8 52748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IMD_SSIZE 0x0000f000 52848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IMD_LETER 0x00030000 52948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IMD_XMBOX 0x003c0000 53048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IMD_MBOX 0x00c00000 53148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IMD_CS 0x78000000 53248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_IMD_HO 0x80000000 53348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 53448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine __le32 bufptr_lo; 53548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine __le32 bufptr_hi; 53648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine u32 reserved[12]; 53748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 53848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine} __aligned(64); 53948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 54048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine/* 54148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * Outbound Messaging Descriptor 54248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine */ 54348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bouninestruct tsi721_omsg_desc { 54448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine __le32 type_id; 54548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 54648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OMD_DEVID 0x0000ffff 54748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OMD_CRF 0x00010000 54848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OMD_PRIO 0x00060000 54948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OMD_IOF 0x08000000 55048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OMD_DTYPE 0xe0000000 55148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OMD_RSRVD 0x17f80000 55248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 55348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine __le32 msg_info; 55448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 55548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OMD_BCOUNT 0x00000ff8 55648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OMD_SSIZE 0x0000f000 55748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OMD_LETER 0x00030000 55848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OMD_XMBOX 0x003c0000 55948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OMD_MBOX 0x00c00000 56048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_OMD_TT 0x0c000000 56148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 56248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine union { 56348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine __le32 bufptr_lo; /* if DTYPE == 4 */ 56448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine __le32 next_lo; /* if DTYPE == 5 */ 56548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine }; 56648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 56748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine union { 56848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine __le32 bufptr_hi; /* if DTYPE == 4 */ 56948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine __le32 next_hi; /* if DTYPE == 5 */ 57048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine }; 57148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 57248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine} __aligned(16); 57348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 57448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bouninestruct tsi721_dma_sts { 57548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine __le64 desc_sts[8]; 57648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine} __aligned(64); 57748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 57848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bouninestruct tsi721_desc_sts_fifo { 57948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine union { 58048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine __le64 da64; 58148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine struct { 58248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine __le32 lo; 58348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine __le32 hi; 58448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine } da32; 58548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine } stat[8]; 58648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine} __aligned(64); 58748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 58848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine/* Descriptor types for BDMA and Messaging blocks */ 58948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounineenum dma_dtype { 59048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine DTYPE1 = 1, /* Data Transfer DMA Descriptor */ 59148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine DTYPE2 = 2, /* Immediate Data Transfer DMA Descriptor */ 59248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine DTYPE3 = 3, /* Block Pointer DMA Descriptor */ 59348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine DTYPE4 = 4, /* Outbound Msg DMA Descriptor */ 59448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine DTYPE5 = 5, /* OB Messaging Block Pointer Descriptor */ 59548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine DTYPE6 = 6 /* Inbound Messaging Descriptor */ 59648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine}; 59748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 59848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounineenum dma_rtype { 59948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine NREAD = 0, 60048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine LAST_NWRITE_R = 1, 60148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine ALL_NWRITE = 2, 60248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine ALL_NWRITE_R = 3, 60348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine MAINT_RD = 4, 60448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine MAINT_WR = 5 60548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine}; 60648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 60748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine/* 60848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * mport Driver Definitions 60948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine */ 61048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMA_CHNUM TSI721_DMA_MAXCH 61148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 61248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMACH_MAINT 0 /* DMA channel for maint requests */ 61348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_DMACH_MAINT_NBD 32 /* Number of BDs for maint requests */ 61448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 61548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define MSG_DMA_ENTRY_INX_TO_SIZE(x) ((0x10 << (x)) & 0xFFFF0) 61648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 61748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounineenum tsi721_smsg_int_flag { 61848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine SMSG_INT_NONE = 0x00000000, 61948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine SMSG_INT_ECC_COR_CH = 0x000000ff, 62048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine SMSG_INT_ECC_NCOR_CH = 0x0000ff00, 62148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine SMSG_INT_ECC_COR = 0x00020000, 62248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine SMSG_INT_ECC_NCOR = 0x00040000, 62348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine SMSG_INT_UNS_RSP = 0x00800000, 62448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine SMSG_INT_ALL = 0x0006ffff 62548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine}; 62648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 62748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine/* Structures */ 62848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 62948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bouninestruct tsi721_bdma_chan { 63048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine int bd_num; /* number of buffer descriptors */ 63148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine void *bd_base; /* start of DMA descriptors */ 63248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine dma_addr_t bd_phys; 63348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine void *sts_base; /* start of DMA BD status FIFO */ 63448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine dma_addr_t sts_phys; 63548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine int sts_size; 63648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine}; 63748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 63848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bouninestruct tsi721_imsg_ring { 63948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine u32 size; 64048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine /* VA/PA of data buffers for incoming messages */ 64148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine void *buf_base; 64248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine dma_addr_t buf_phys; 64348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine /* VA/PA of circular free buffer list */ 64448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine void *imfq_base; 64548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine dma_addr_t imfq_phys; 64648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine /* VA/PA of Inbound message descriptors */ 64748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine void *imd_base; 64848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine dma_addr_t imd_phys; 64948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine /* Inbound Queue buffer pointers */ 65048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine void *imq_base[TSI721_IMSGD_RING_SIZE]; 65148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 65248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine u32 rx_slot; 65348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine void *dev_id; 65448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine u32 fq_wrptr; 65548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine u32 desc_rdptr; 65648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine spinlock_t lock; 65748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine}; 65848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 65948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bouninestruct tsi721_omsg_ring { 66048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine u32 size; 66148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine /* VA/PA of OB Msg descriptors */ 66248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine void *omd_base; 66348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine dma_addr_t omd_phys; 66448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine /* VA/PA of OB Msg data buffers */ 66548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine void *omq_base[TSI721_OMSGD_RING_SIZE]; 66648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine dma_addr_t omq_phys[TSI721_OMSGD_RING_SIZE]; 66748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine /* VA/PA of OB Msg descriptor status FIFO */ 66848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine void *sts_base; 66948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine dma_addr_t sts_phys; 67048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine u32 sts_size; /* # of allocated status entries */ 67148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine u32 sts_rdptr; 67248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 67348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine u32 tx_slot; 67448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine void *dev_id; 67548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine u32 wr_count; 67648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine spinlock_t lock; 67748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine}; 67848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 67948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounineenum tsi721_flags { 68048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine TSI721_USING_MSI = (1 << 0), 68148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine TSI721_USING_MSIX = (1 << 1), 68248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine TSI721_IMSGID_SET = (1 << 2), 68348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine}; 68448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 68548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#ifdef CONFIG_PCI_MSI 68648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine/* 68748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine * MSI-X Table Entries (0 ... 69) 68848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine */ 68948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_MSIX_DMACH_DONE(x) (0 + (x)) 69048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_MSIX_DMACH_INT(x) (8 + (x)) 69148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_MSIX_BDMA_INT 16 69248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_MSIX_OMSG_DONE(x) (17 + (x)) 69348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_MSIX_OMSG_INT(x) (25 + (x)) 69448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_MSIX_IMSG_DQ_RCV(x) (33 + (x)) 69548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_MSIX_IMSG_INT(x) (41 + (x)) 69648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_MSIX_MSG_INT 49 69748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_MSIX_SR2PC_IDBQ_RCV(x) (50 + (x)) 69848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_MSIX_SR2PC_CH_INT(x) (58 + (x)) 69948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_MSIX_SR2PC_INT 66 70048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_MSIX_PC2SR_INT 67 70148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_MSIX_SRIO_MAC_INT 68 70248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define TSI721_MSIX_I2C_INT 69 70348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 70448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine/* MSI-X vector and init table entry indexes */ 70548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounineenum tsi721_msix_vect { 70648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine TSI721_VECT_IDB, 70748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine TSI721_VECT_PWRX, /* PW_RX is part of SRIO MAC Interrupt reporting */ 70848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine TSI721_VECT_OMB0_DONE, 70948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine TSI721_VECT_OMB1_DONE, 71048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine TSI721_VECT_OMB2_DONE, 71148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine TSI721_VECT_OMB3_DONE, 71248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine TSI721_VECT_OMB0_INT, 71348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine TSI721_VECT_OMB1_INT, 71448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine TSI721_VECT_OMB2_INT, 71548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine TSI721_VECT_OMB3_INT, 71648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine TSI721_VECT_IMB0_RCV, 71748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine TSI721_VECT_IMB1_RCV, 71848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine TSI721_VECT_IMB2_RCV, 71948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine TSI721_VECT_IMB3_RCV, 72048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine TSI721_VECT_IMB0_INT, 72148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine TSI721_VECT_IMB1_INT, 72248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine TSI721_VECT_IMB2_INT, 72348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine TSI721_VECT_IMB3_INT, 72448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine TSI721_VECT_MAX 72548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine}; 72648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 72748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#define IRQ_DEVICE_NAME_MAX 64 72848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 72948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bouninestruct msix_irq { 73048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine u16 vector; 73148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine char irq_name[IRQ_DEVICE_NAME_MAX]; 73248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine}; 73348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#endif /* CONFIG_PCI_MSI */ 73448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 73548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bouninestruct tsi721_device { 73648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine struct pci_dev *pdev; 73748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine struct rio_mport *mport; 73848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine u32 flags; 73948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine void __iomem *regs; 74048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#ifdef CONFIG_PCI_MSI 74148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine struct msix_irq msix[TSI721_VECT_MAX]; 74248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#endif 74348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine /* Doorbells */ 74448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine void __iomem *odb_base; 74548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine void *idb_base; 74648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine dma_addr_t idb_dma; 74748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine struct work_struct idb_work; 74848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine u32 db_discard_count; 74948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 75048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine /* Inbound Port-Write */ 75148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine struct work_struct pw_work; 75248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine struct kfifo pw_fifo; 75348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine spinlock_t pw_fifo_lock; 75448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine u32 pw_discard_count; 75548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 75648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine /* BDMA Engine */ 75748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine struct tsi721_bdma_chan bdma[TSI721_DMA_CHNUM]; 75848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 75948618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine /* Inbound Messaging */ 76048618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine int imsg_init[TSI721_IMSG_CHNUM]; 76148618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine struct tsi721_imsg_ring imsg_ring[TSI721_IMSG_CHNUM]; 76248618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 76348618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine /* Outbound Messaging */ 76448618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine int omsg_init[TSI721_OMSG_CHNUM]; 76548618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine struct tsi721_omsg_ring omsg_ring[TSI721_OMSG_CHNUM]; 76648618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine}; 76748618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine 76848618fb4e522d9d02e217ac05f52749545c1af20Alexandre Bounine#endif 769