162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * ddbridge-regs.h: Digital Devices PCIe bridge driver 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 2010-2017 Digital Devices GmbH 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#ifndef __DDBRIDGE_REGS_H__ 962306a36Sopenharmony_ci#define __DDBRIDGE_REGS_H__ 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci/* ------------------------------------------------------------------------- */ 1262306a36Sopenharmony_ci/* SPI Controller */ 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci#define SPI_CONTROL 0x10 1562306a36Sopenharmony_ci#define SPI_DATA 0x14 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci/* ------------------------------------------------------------------------- */ 1862306a36Sopenharmony_ci/* GPIO */ 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci#define GPIO_OUTPUT 0x20 2162306a36Sopenharmony_ci#define GPIO_INPUT 0x24 2262306a36Sopenharmony_ci#define GPIO_DIRECTION 0x28 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci/* ------------------------------------------------------------------------- */ 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ci#define BOARD_CONTROL 0x30 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci/* ------------------------------------------------------------------------- */ 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci/* Interrupt controller 3162306a36Sopenharmony_ci * How many MSI's are available depends on HW (Min 2 max 8) 3262306a36Sopenharmony_ci * How many are usable also depends on Host platform 3362306a36Sopenharmony_ci */ 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci#define INTERRUPT_BASE (0x40) 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci#define INTERRUPT_ENABLE (INTERRUPT_BASE + 0x00) 3862306a36Sopenharmony_ci#define MSI1_ENABLE (INTERRUPT_BASE + 0x04) 3962306a36Sopenharmony_ci#define MSI2_ENABLE (INTERRUPT_BASE + 0x08) 4062306a36Sopenharmony_ci#define MSI3_ENABLE (INTERRUPT_BASE + 0x0C) 4162306a36Sopenharmony_ci#define MSI4_ENABLE (INTERRUPT_BASE + 0x10) 4262306a36Sopenharmony_ci#define MSI5_ENABLE (INTERRUPT_BASE + 0x14) 4362306a36Sopenharmony_ci#define MSI6_ENABLE (INTERRUPT_BASE + 0x18) 4462306a36Sopenharmony_ci#define MSI7_ENABLE (INTERRUPT_BASE + 0x1C) 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ci#define INTERRUPT_STATUS (INTERRUPT_BASE + 0x20) 4762306a36Sopenharmony_ci#define INTERRUPT_ACK (INTERRUPT_BASE + 0x20) 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ci/* Temperature Monitor ( 2x LM75A @ 0x90,0x92 I2c ) */ 5062306a36Sopenharmony_ci#define TEMPMON_BASE (0x1c0) 5162306a36Sopenharmony_ci#define TEMPMON_CONTROL (TEMPMON_BASE + 0x00) 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_ci#define TEMPMON_CONTROL_AUTOSCAN (0x00000002) 5462306a36Sopenharmony_ci#define TEMPMON_CONTROL_INTENABLE (0x00000004) 5562306a36Sopenharmony_ci#define TEMPMON_CONTROL_OVERTEMP (0x00008000) 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ci/* SHORT Temperature in Celsius x 256 */ 5862306a36Sopenharmony_ci#define TEMPMON_SENSOR0 (TEMPMON_BASE + 0x04) 5962306a36Sopenharmony_ci#define TEMPMON_SENSOR1 (TEMPMON_BASE + 0x08) 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_ci#define TEMPMON_FANCONTROL (TEMPMON_BASE + 0x10) 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_ci/* ------------------------------------------------------------------------- */ 6462306a36Sopenharmony_ci/* I2C Master Controller */ 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ci#define I2C_COMMAND (0x00) 6762306a36Sopenharmony_ci#define I2C_TIMING (0x04) 6862306a36Sopenharmony_ci#define I2C_TASKLENGTH (0x08) /* High read, low write */ 6962306a36Sopenharmony_ci#define I2C_TASKADDRESS (0x0C) /* High read, low write */ 7062306a36Sopenharmony_ci#define I2C_MONITOR (0x1C) 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_ci#define I2C_SPEED_400 (0x04030404) 7362306a36Sopenharmony_ci#define I2C_SPEED_100 (0x13121313) 7462306a36Sopenharmony_ci 7562306a36Sopenharmony_ci/* ------------------------------------------------------------------------- */ 7662306a36Sopenharmony_ci/* DMA Controller */ 7762306a36Sopenharmony_ci 7862306a36Sopenharmony_ci#define DMA_BASE_WRITE (0x100) 7962306a36Sopenharmony_ci#define DMA_BASE_READ (0x140) 8062306a36Sopenharmony_ci 8162306a36Sopenharmony_ci#define TS_CONTROL(_io) ((_io)->regs + 0x00) 8262306a36Sopenharmony_ci#define TS_CONTROL2(_io) ((_io)->regs + 0x04) 8362306a36Sopenharmony_ci 8462306a36Sopenharmony_ci/* ------------------------------------------------------------------------- */ 8562306a36Sopenharmony_ci/* DMA Buffer */ 8662306a36Sopenharmony_ci 8762306a36Sopenharmony_ci#define DMA_BUFFER_CONTROL(_dma) ((_dma)->regs + 0x00) 8862306a36Sopenharmony_ci#define DMA_BUFFER_ACK(_dma) ((_dma)->regs + 0x04) 8962306a36Sopenharmony_ci#define DMA_BUFFER_CURRENT(_dma) ((_dma)->regs + 0x08) 9062306a36Sopenharmony_ci#define DMA_BUFFER_SIZE(_dma) ((_dma)->regs + 0x0c) 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_ci/* ------------------------------------------------------------------------- */ 9362306a36Sopenharmony_ci/* CI Interface (only CI-Bridge) */ 9462306a36Sopenharmony_ci 9562306a36Sopenharmony_ci#define CI_BASE (0x400) 9662306a36Sopenharmony_ci#define CI_CONTROL(i) (CI_BASE + (i) * 32 + 0x00) 9762306a36Sopenharmony_ci 9862306a36Sopenharmony_ci#define CI_DO_ATTRIBUTE_RW(i) (CI_BASE + (i) * 32 + 0x04) 9962306a36Sopenharmony_ci#define CI_DO_IO_RW(i) (CI_BASE + (i) * 32 + 0x08) 10062306a36Sopenharmony_ci#define CI_READDATA(i) (CI_BASE + (i) * 32 + 0x0c) 10162306a36Sopenharmony_ci#define CI_DO_READ_ATTRIBUTES(i) (CI_BASE + (i) * 32 + 0x10) 10262306a36Sopenharmony_ci 10362306a36Sopenharmony_ci#define CI_RESET_CAM (0x00000001) 10462306a36Sopenharmony_ci#define CI_POWER_ON (0x00000002) 10562306a36Sopenharmony_ci#define CI_ENABLE (0x00000004) 10662306a36Sopenharmony_ci#define CI_BYPASS_DISABLE (0x00000010) 10762306a36Sopenharmony_ci 10862306a36Sopenharmony_ci#define CI_CAM_READY (0x00010000) 10962306a36Sopenharmony_ci#define CI_CAM_DETECT (0x00020000) 11062306a36Sopenharmony_ci#define CI_READY (0x80000000) 11162306a36Sopenharmony_ci 11262306a36Sopenharmony_ci#define CI_READ_CMD (0x40000000) 11362306a36Sopenharmony_ci#define CI_WRITE_CMD (0x80000000) 11462306a36Sopenharmony_ci 11562306a36Sopenharmony_ci#define CI_BUFFER_BASE (0x3000) 11662306a36Sopenharmony_ci#define CI_BUFFER_SIZE (0x0800) 11762306a36Sopenharmony_ci 11862306a36Sopenharmony_ci#define CI_BUFFER(i) (CI_BUFFER_BASE + (i) * CI_BUFFER_SIZE) 11962306a36Sopenharmony_ci 12062306a36Sopenharmony_ci/* ------------------------------------------------------------------------- */ 12162306a36Sopenharmony_ci/* LNB commands (mxl5xx / Max S8) */ 12262306a36Sopenharmony_ci 12362306a36Sopenharmony_ci#define LNB_BASE (0x400) 12462306a36Sopenharmony_ci#define LNB_CONTROL(i) (LNB_BASE + (i) * 0x20 + 0x00) 12562306a36Sopenharmony_ci 12662306a36Sopenharmony_ci#define LNB_CMD (7ULL << 0) 12762306a36Sopenharmony_ci#define LNB_CMD_NOP 0 12862306a36Sopenharmony_ci#define LNB_CMD_INIT 1 12962306a36Sopenharmony_ci#define LNB_CMD_LOW 3 13062306a36Sopenharmony_ci#define LNB_CMD_HIGH 4 13162306a36Sopenharmony_ci#define LNB_CMD_OFF 5 13262306a36Sopenharmony_ci#define LNB_CMD_DISEQC 6 13362306a36Sopenharmony_ci 13462306a36Sopenharmony_ci#define LNB_BUSY BIT_ULL(4) 13562306a36Sopenharmony_ci#define LNB_TONE BIT_ULL(15) 13662306a36Sopenharmony_ci 13762306a36Sopenharmony_ci#define LNB_BUF_LEVEL(i) (LNB_BASE + (i) * 0x20 + 0x10) 13862306a36Sopenharmony_ci#define LNB_BUF_WRITE(i) (LNB_BASE + (i) * 0x20 + 0x14) 13962306a36Sopenharmony_ci 14062306a36Sopenharmony_ci#endif /* __DDBRIDGE_REGS_H__ */ 141