185ebb8ebSMauro Carvalho Chehab // SPDX-License-Identifier: GPL-2.0 285ebb8ebSMauro Carvalho Chehab /* 385ebb8ebSMauro Carvalho Chehab * Support for Intel Camera Imaging ISP subsystem. 485ebb8ebSMauro Carvalho Chehab * Copyright (c) 2015, Intel Corporation. 585ebb8ebSMauro Carvalho Chehab * 685ebb8ebSMauro Carvalho Chehab * This program is free software; you can redistribute it and/or modify it 785ebb8ebSMauro Carvalho Chehab * under the terms and conditions of the GNU General Public License, 885ebb8ebSMauro Carvalho Chehab * version 2, as published by the Free Software Foundation. 985ebb8ebSMauro Carvalho Chehab * 1085ebb8ebSMauro Carvalho Chehab * This program is distributed in the hope it will be useful, but WITHOUT 1185ebb8ebSMauro Carvalho Chehab * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 1285ebb8ebSMauro Carvalho Chehab * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 1385ebb8ebSMauro Carvalho Chehab * more details. 1485ebb8ebSMauro Carvalho Chehab */ 1585ebb8ebSMauro Carvalho Chehab 1685ebb8ebSMauro Carvalho Chehab #include "system_local.h" 1785ebb8ebSMauro Carvalho Chehab 1885ebb8ebSMauro Carvalho Chehab /* ISP */ 1985ebb8ebSMauro Carvalho Chehab const hrt_address ISP_CTRL_BASE[N_ISP_ID] = { 2085ebb8ebSMauro Carvalho Chehab 0x0000000000020000ULL 2185ebb8ebSMauro Carvalho Chehab }; 2285ebb8ebSMauro Carvalho Chehab 2385ebb8ebSMauro Carvalho Chehab const hrt_address ISP_DMEM_BASE[N_ISP_ID] = { 2485ebb8ebSMauro Carvalho Chehab 0x0000000000200000ULL 2585ebb8ebSMauro Carvalho Chehab }; 2685ebb8ebSMauro Carvalho Chehab 2785ebb8ebSMauro Carvalho Chehab const hrt_address ISP_BAMEM_BASE[N_BAMEM_ID] = { 2885ebb8ebSMauro Carvalho Chehab 0x0000000000100000ULL 2985ebb8ebSMauro Carvalho Chehab }; 3085ebb8ebSMauro Carvalho Chehab 3185ebb8ebSMauro Carvalho Chehab /* SP */ 3285ebb8ebSMauro Carvalho Chehab const hrt_address SP_CTRL_BASE[N_SP_ID] = { 3385ebb8ebSMauro Carvalho Chehab 0x0000000000010000ULL 3485ebb8ebSMauro Carvalho Chehab }; 3585ebb8ebSMauro Carvalho Chehab 3685ebb8ebSMauro Carvalho Chehab const hrt_address SP_DMEM_BASE[N_SP_ID] = { 3785ebb8ebSMauro Carvalho Chehab 0x0000000000300000ULL 3885ebb8ebSMauro Carvalho Chehab }; 3985ebb8ebSMauro Carvalho Chehab 4085ebb8ebSMauro Carvalho Chehab /* MMU */ 4185ebb8ebSMauro Carvalho Chehab /* 4285ebb8ebSMauro Carvalho Chehab * MMU0_ID: The data MMU 4385ebb8ebSMauro Carvalho Chehab * MMU1_ID: The icache MMU 4485ebb8ebSMauro Carvalho Chehab */ 4585ebb8ebSMauro Carvalho Chehab const hrt_address MMU_BASE[N_MMU_ID] = { 4685ebb8ebSMauro Carvalho Chehab 0x0000000000070000ULL, 4785ebb8ebSMauro Carvalho Chehab 0x00000000000A0000ULL 4885ebb8ebSMauro Carvalho Chehab }; 4985ebb8ebSMauro Carvalho Chehab 5085ebb8ebSMauro Carvalho Chehab /* DMA */ 5185ebb8ebSMauro Carvalho Chehab const hrt_address DMA_BASE[N_DMA_ID] = { 5285ebb8ebSMauro Carvalho Chehab 0x0000000000040000ULL 5385ebb8ebSMauro Carvalho Chehab }; 5485ebb8ebSMauro Carvalho Chehab 5585ebb8ebSMauro Carvalho Chehab const hrt_address ISYS2401_DMA_BASE[N_ISYS2401_DMA_ID] = { 5685ebb8ebSMauro Carvalho Chehab 0x00000000000CA000ULL 5785ebb8ebSMauro Carvalho Chehab }; 5885ebb8ebSMauro Carvalho Chehab 5985ebb8ebSMauro Carvalho Chehab /* IRQ */ 6085ebb8ebSMauro Carvalho Chehab const hrt_address IRQ_BASE[N_IRQ_ID] = { 6185ebb8ebSMauro Carvalho Chehab 0x0000000000000500ULL, 6285ebb8ebSMauro Carvalho Chehab 0x0000000000030A00ULL, 6385ebb8ebSMauro Carvalho Chehab 0x000000000008C000ULL, 6485ebb8ebSMauro Carvalho Chehab 0x0000000000090200ULL 6585ebb8ebSMauro Carvalho Chehab }; 6685ebb8ebSMauro Carvalho Chehab 6785ebb8ebSMauro Carvalho Chehab /* 6885ebb8ebSMauro Carvalho Chehab 0x0000000000000500ULL}; 6985ebb8ebSMauro Carvalho Chehab */ 7085ebb8ebSMauro Carvalho Chehab 7185ebb8ebSMauro Carvalho Chehab /* GDC */ 7285ebb8ebSMauro Carvalho Chehab const hrt_address GDC_BASE[N_GDC_ID] = { 7385ebb8ebSMauro Carvalho Chehab 0x0000000000050000ULL, 7485ebb8ebSMauro Carvalho Chehab 0x0000000000060000ULL 7585ebb8ebSMauro Carvalho Chehab }; 7685ebb8ebSMauro Carvalho Chehab 7785ebb8ebSMauro Carvalho Chehab /* FIFO_MONITOR (not a subset of GP_DEVICE) */ 7885ebb8ebSMauro Carvalho Chehab const hrt_address FIFO_MONITOR_BASE[N_FIFO_MONITOR_ID] = { 7985ebb8ebSMauro Carvalho Chehab 0x0000000000000000ULL 8085ebb8ebSMauro Carvalho Chehab }; 8185ebb8ebSMauro Carvalho Chehab 8285ebb8ebSMauro Carvalho Chehab /* 8385ebb8ebSMauro Carvalho Chehab const hrt_address GP_REGS_BASE[N_GP_REGS_ID] = { 8485ebb8ebSMauro Carvalho Chehab 0x0000000000000000ULL}; 8585ebb8ebSMauro Carvalho Chehab 8685ebb8ebSMauro Carvalho Chehab const hrt_address GP_DEVICE_BASE[N_GP_DEVICE_ID] = { 8785ebb8ebSMauro Carvalho Chehab 0x0000000000090000ULL}; 8885ebb8ebSMauro Carvalho Chehab */ 8985ebb8ebSMauro Carvalho Chehab 9085ebb8ebSMauro Carvalho Chehab /* GP_DEVICE (single base for all separate GP_REG instances) */ 9185ebb8ebSMauro Carvalho Chehab const hrt_address GP_DEVICE_BASE[N_GP_DEVICE_ID] = { 9285ebb8ebSMauro Carvalho Chehab 0x0000000000000000ULL 9385ebb8ebSMauro Carvalho Chehab }; 9485ebb8ebSMauro Carvalho Chehab 9585ebb8ebSMauro Carvalho Chehab /*GP TIMER , all timer registers are inter-twined, 9685ebb8ebSMauro Carvalho Chehab * so, having multiple base addresses for 9785ebb8ebSMauro Carvalho Chehab * different timers does not help*/ 9885ebb8ebSMauro Carvalho Chehab const hrt_address GP_TIMER_BASE = 9985ebb8ebSMauro Carvalho Chehab (hrt_address)0x0000000000000600ULL; 10085ebb8ebSMauro Carvalho Chehab 10185ebb8ebSMauro Carvalho Chehab /* GPIO */ 10285ebb8ebSMauro Carvalho Chehab const hrt_address GPIO_BASE[N_GPIO_ID] = { 10385ebb8ebSMauro Carvalho Chehab 0x0000000000000400ULL 10485ebb8ebSMauro Carvalho Chehab }; 10585ebb8ebSMauro Carvalho Chehab 10685ebb8ebSMauro Carvalho Chehab /* TIMED_CTRL */ 10785ebb8ebSMauro Carvalho Chehab const hrt_address TIMED_CTRL_BASE[N_TIMED_CTRL_ID] = { 10885ebb8ebSMauro Carvalho Chehab 0x0000000000000100ULL 10985ebb8ebSMauro Carvalho Chehab }; 11085ebb8ebSMauro Carvalho Chehab 11185ebb8ebSMauro Carvalho Chehab /* INPUT_FORMATTER */ 11285ebb8ebSMauro Carvalho Chehab const hrt_address INPUT_FORMATTER_BASE[N_INPUT_FORMATTER_ID] = { 11385ebb8ebSMauro Carvalho Chehab 0x0000000000030000ULL, 11485ebb8ebSMauro Carvalho Chehab 0x0000000000030200ULL, 11585ebb8ebSMauro Carvalho Chehab 0x0000000000030400ULL, 11685ebb8ebSMauro Carvalho Chehab 0x0000000000030600ULL 11785ebb8ebSMauro Carvalho Chehab }; /* memcpy() */ 11885ebb8ebSMauro Carvalho Chehab 11985ebb8ebSMauro Carvalho Chehab /* INPUT_SYSTEM */ 12085ebb8ebSMauro Carvalho Chehab const hrt_address INPUT_SYSTEM_BASE[N_INPUT_SYSTEM_ID] = { 12185ebb8ebSMauro Carvalho Chehab 0x0000000000080000ULL 12285ebb8ebSMauro Carvalho Chehab }; 12385ebb8ebSMauro Carvalho Chehab 12485ebb8ebSMauro Carvalho Chehab /* 0x0000000000081000ULL, */ /* capture A */ 12585ebb8ebSMauro Carvalho Chehab /* 0x0000000000082000ULL, */ /* capture B */ 12685ebb8ebSMauro Carvalho Chehab /* 0x0000000000083000ULL, */ /* capture C */ 12785ebb8ebSMauro Carvalho Chehab /* 0x0000000000084000ULL, */ /* Acquisition */ 12885ebb8ebSMauro Carvalho Chehab /* 0x0000000000085000ULL, */ /* DMA */ 12985ebb8ebSMauro Carvalho Chehab /* 0x0000000000089000ULL, */ /* ctrl */ 13085ebb8ebSMauro Carvalho Chehab /* 0x000000000008A000ULL, */ /* GP regs */ 13185ebb8ebSMauro Carvalho Chehab /* 0x000000000008B000ULL, */ /* FIFO */ 13285ebb8ebSMauro Carvalho Chehab /* 0x000000000008C000ULL, */ /* IRQ */ 13385ebb8ebSMauro Carvalho Chehab 13485ebb8ebSMauro Carvalho Chehab /* RX, the MIPI lane control regs start at offset 0 */ 13585ebb8ebSMauro Carvalho Chehab const hrt_address RX_BASE[N_RX_ID] = { 13685ebb8ebSMauro Carvalho Chehab 0x0000000000080100ULL 13785ebb8ebSMauro Carvalho Chehab }; 13885ebb8ebSMauro Carvalho Chehab 13985ebb8ebSMauro Carvalho Chehab /* IBUF_CTRL, part of the Input System 2401 */ 14085ebb8ebSMauro Carvalho Chehab const hrt_address IBUF_CTRL_BASE[N_IBUF_CTRL_ID] = { 14185ebb8ebSMauro Carvalho Chehab 0x00000000000C1800ULL, /* ibuf controller A */ 14285ebb8ebSMauro Carvalho Chehab 0x00000000000C3800ULL, /* ibuf controller B */ 14385ebb8ebSMauro Carvalho Chehab 0x00000000000C5800ULL /* ibuf controller C */ 14485ebb8ebSMauro Carvalho Chehab }; 14585ebb8ebSMauro Carvalho Chehab 14685ebb8ebSMauro Carvalho Chehab /* ISYS IRQ Controllers, part of the Input System 2401 */ 14785ebb8ebSMauro Carvalho Chehab const hrt_address ISYS_IRQ_BASE[N_ISYS_IRQ_ID] = { 14885ebb8ebSMauro Carvalho Chehab 0x00000000000C1400ULL, /* port a */ 14985ebb8ebSMauro Carvalho Chehab 0x00000000000C3400ULL, /* port b */ 15085ebb8ebSMauro Carvalho Chehab 0x00000000000C5400ULL /* port c */ 15185ebb8ebSMauro Carvalho Chehab }; 15285ebb8ebSMauro Carvalho Chehab 15385ebb8ebSMauro Carvalho Chehab /* CSI FE, part of the Input System 2401 */ 15485ebb8ebSMauro Carvalho Chehab const hrt_address CSI_RX_FE_CTRL_BASE[N_CSI_RX_FRONTEND_ID] = { 15585ebb8ebSMauro Carvalho Chehab 0x00000000000C0400ULL, /* csi fe controller A */ 15685ebb8ebSMauro Carvalho Chehab 0x00000000000C2400ULL, /* csi fe controller B */ 15785ebb8ebSMauro Carvalho Chehab 0x00000000000C4400ULL /* csi fe controller C */ 15885ebb8ebSMauro Carvalho Chehab }; 15985ebb8ebSMauro Carvalho Chehab 16085ebb8ebSMauro Carvalho Chehab /* CSI BE, part of the Input System 2401 */ 16185ebb8ebSMauro Carvalho Chehab const hrt_address CSI_RX_BE_CTRL_BASE[N_CSI_RX_BACKEND_ID] = { 16285ebb8ebSMauro Carvalho Chehab 0x00000000000C0800ULL, /* csi be controller A */ 16385ebb8ebSMauro Carvalho Chehab 0x00000000000C2800ULL, /* csi be controller B */ 16485ebb8ebSMauro Carvalho Chehab 0x00000000000C4800ULL /* csi be controller C */ 16585ebb8ebSMauro Carvalho Chehab }; 16685ebb8ebSMauro Carvalho Chehab 16785ebb8ebSMauro Carvalho Chehab /* PIXEL Generator, part of the Input System 2401 */ 16885ebb8ebSMauro Carvalho Chehab const hrt_address PIXELGEN_CTRL_BASE[N_PIXELGEN_ID] = { 16985ebb8ebSMauro Carvalho Chehab 0x00000000000C1000ULL, /* pixel gen controller A */ 17085ebb8ebSMauro Carvalho Chehab 0x00000000000C3000ULL, /* pixel gen controller B */ 17185ebb8ebSMauro Carvalho Chehab 0x00000000000C5000ULL /* pixel gen controller C */ 17285ebb8ebSMauro Carvalho Chehab }; 17385ebb8ebSMauro Carvalho Chehab 17485ebb8ebSMauro Carvalho Chehab /* Stream2MMIO, part of the Input System 2401 */ 17585ebb8ebSMauro Carvalho Chehab const hrt_address STREAM2MMIO_CTRL_BASE[N_STREAM2MMIO_ID] = { 17685ebb8ebSMauro Carvalho Chehab 0x00000000000C0C00ULL, /* stream2mmio controller A */ 17785ebb8ebSMauro Carvalho Chehab 0x00000000000C2C00ULL, /* stream2mmio controller B */ 17885ebb8ebSMauro Carvalho Chehab 0x00000000000C4C00ULL /* stream2mmio controller C */ 17985ebb8ebSMauro Carvalho Chehab }; 180