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