13d660799SJacky Bai /* 23d660799SJacky Bai * Copyright (c) 2019, NXP. All rights reserved. 33d660799SJacky Bai * 43d660799SJacky Bai * SPDX-License-Identifier: BSD-3-Clause 53d660799SJacky Bai */ 63d660799SJacky Bai 73d660799SJacky Bai #ifndef IMX_RDC_H 83d660799SJacky Bai #define IMX_RDC_H 93d660799SJacky Bai 103d660799SJacky Bai #include <lib/utils_def.h> 113d660799SJacky Bai 123d660799SJacky Bai #include <platform_def.h> 133d660799SJacky Bai 143d660799SJacky Bai #define MDAn(x) (IMX_RDC_BASE + 0x200 + (x) * 4) 153d660799SJacky Bai #define PDAPn(x) (IMX_RDC_BASE + 0x400 + (x) * 4) 16*97600cb5SJacky Bai #define MRSAn(x) (IMX_RDC_BASE + 0x800 + (x) * 0x10) 17*97600cb5SJacky Bai #define MREAn(x) (IMX_RDC_BASE + 0x804 + (x) * 0x10) 18*97600cb5SJacky Bai #define MRCn(x) (IMX_RDC_BASE + 0x808 + (x) * 0x10) 193d660799SJacky Bai 203d660799SJacky Bai #define LCK BIT(31) 213d660799SJacky Bai #define SREQ BIT(30) 223d660799SJacky Bai #define ENA BIT(30) 233d660799SJacky Bai 243d660799SJacky Bai #define DID0 U(0x0) 253d660799SJacky Bai #define DID1 U(0x1) 263d660799SJacky Bai #define DID2 U(0x2) 273d660799SJacky Bai #define DID3 U(0x3) 283d660799SJacky Bai 293d660799SJacky Bai #define D3R BIT(7) 303d660799SJacky Bai #define D3W BIT(6) 313d660799SJacky Bai #define D2R BIT(5) 323d660799SJacky Bai #define D2W BIT(4) 333d660799SJacky Bai #define D1R BIT(3) 343d660799SJacky Bai #define D1W BIT(2) 353d660799SJacky Bai #define D0R BIT(1) 363d660799SJacky Bai #define D0W BIT(0) 373d660799SJacky Bai 383d660799SJacky Bai union rdc_setting { 393d660799SJacky Bai uint32_t rdc_mda; /* Master Domain Assignment */ 403d660799SJacky Bai uint32_t rdc_pdap; /* Peripheral Domain Access Permissions */ 413d660799SJacky Bai uint32_t rdc_mem_region[3]; /* Memory Region Access Control */ 423d660799SJacky Bai }; 433d660799SJacky Bai 443d660799SJacky Bai enum rdc_type { 453d660799SJacky Bai RDC_INVALID, 463d660799SJacky Bai RDC_MDA, 473d660799SJacky Bai RDC_PDAP, 483d660799SJacky Bai RDC_MEM_REGION, 493d660799SJacky Bai }; 503d660799SJacky Bai 513d660799SJacky Bai struct imx_rdc_cfg { 523d660799SJacky Bai enum rdc_type type; /* config type Master, Peripheral or Memory region */ 533d660799SJacky Bai int index; 543d660799SJacky Bai union rdc_setting setting; 553d660799SJacky Bai }; 563d660799SJacky Bai 573d660799SJacky Bai #define RDC_MDAn(i, mda) \ 583d660799SJacky Bai {RDC_MDA, (i), .setting.rdc_mda = (mda), } 593d660799SJacky Bai #define RDC_PDAPn(i, pdap) \ 603d660799SJacky Bai {RDC_PDAP, (i), .setting.rdc_pdap = (pdap), } 613d660799SJacky Bai 623d660799SJacky Bai #define RDC_MEM_REGIONn(i, msa, mea, mrc) \ 633d660799SJacky Bai { RDC_MEM_REGION, (i), \ 643d660799SJacky Bai .setting.rdc_mem_region[0] = (msa), \ 653d660799SJacky Bai .setting.rdc_mem_region[1] = (mea), \ 663d660799SJacky Bai .setting.rdc_mem_region[2] = (mrc), \ 673d660799SJacky Bai } 683d660799SJacky Bai 693d660799SJacky Bai void imx_rdc_init(const struct imx_rdc_cfg *cfg); 703d660799SJacky Bai 713d660799SJacky Bai #endif /* IMX_RDC_H */ 723d660799SJacky Bai 73