1*83d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0+ */ 2660673afSXiubo Li /* 3660673afSXiubo Li * Copyright 2014 Freescale Semiconductor, Inc. 4660673afSXiubo Li */ 5660673afSXiubo Li 6660673afSXiubo Li #ifndef __FSL_LS102XA_STREAM_ID_H_ 7660673afSXiubo Li #define __FSL_LS102XA_STREAM_ID_H_ 8660673afSXiubo Li 98133574eSAlison Wang #include <fsl_sec.h> 108133574eSAlison Wang 118133574eSAlison Wang #define SET_LIODN_ENTRY_1(name, idA, off, compatoff) \ 128133574eSAlison Wang { .compat = name, \ 138133574eSAlison Wang .id = { idA }, .num_ids = 1, \ 148133574eSAlison Wang .reg_offset = off + CONFIG_SYS_IMMR, \ 158133574eSAlison Wang .compat_offset = compatoff + CONFIG_SYS_CCSRBAR_PHYS, \ 168133574eSAlison Wang } 178133574eSAlison Wang 188133574eSAlison Wang #define SET_LIODN_ENTRY_2(name, idA, idB, off, compatoff) \ 198133574eSAlison Wang { .compat = name, \ 208133574eSAlison Wang .id = { idA, idB }, .num_ids = 2, \ 218133574eSAlison Wang .reg_offset = off + CONFIG_SYS_IMMR, \ 228133574eSAlison Wang .compat_offset = compatoff + CONFIG_SYS_CCSRBAR_PHYS, \ 238133574eSAlison Wang } 248133574eSAlison Wang 258133574eSAlison Wang /* 268133574eSAlison Wang * handle both old and new versioned SEC properties: 278133574eSAlison Wang * "fsl,secX.Y" became "fsl,sec-vX.Y" during development 288133574eSAlison Wang */ 298133574eSAlison Wang #define SET_SEC_JR_LIODN_ENTRY(jrnum, liodnA, liodnB) \ 308133574eSAlison Wang SET_LIODN_ENTRY_2("fsl,sec4.0-job-ring", liodnA, liodnB, \ 318133574eSAlison Wang offsetof(ccsr_sec_t, jrliodnr[jrnum].ls) + \ 328133574eSAlison Wang CONFIG_SYS_FSL_SEC_OFFSET, \ 338133574eSAlison Wang CONFIG_SYS_FSL_SEC_OFFSET + 0x1000 + 0x1000 * jrnum), \ 348133574eSAlison Wang SET_LIODN_ENTRY_2("fsl,sec-v4.0-job-ring", liodnA, liodnB,\ 358133574eSAlison Wang offsetof(ccsr_sec_t, jrliodnr[jrnum].ls) + \ 368133574eSAlison Wang CONFIG_SYS_FSL_SEC_OFFSET, \ 378133574eSAlison Wang CONFIG_SYS_FSL_SEC_OFFSET + 0x1000 + 0x1000 * jrnum) 388133574eSAlison Wang 398133574eSAlison Wang /* This is a bit evil since we treat rtic param as both a string & hex value */ 408133574eSAlison Wang #define SET_SEC_RTIC_LIODN_ENTRY(rtic, liodnA) \ 418133574eSAlison Wang SET_LIODN_ENTRY_1("fsl,sec4.0-rtic-memory", \ 428133574eSAlison Wang liodnA, \ 438133574eSAlison Wang offsetof(ccsr_sec_t, rticliodnr[0x##rtic-0xa].ls) + \ 448133574eSAlison Wang CONFIG_SYS_FSL_SEC_OFFSET, \ 458133574eSAlison Wang CONFIG_SYS_FSL_SEC_OFFSET + 0x6100 + 0x20 * (0x##rtic-0xa)), \ 468133574eSAlison Wang SET_LIODN_ENTRY_1("fsl,sec-v4.0-rtic-memory", \ 478133574eSAlison Wang liodnA, \ 488133574eSAlison Wang offsetof(ccsr_sec_t, rticliodnr[0x##rtic-0xa].ls) + \ 498133574eSAlison Wang CONFIG_SYS_FSL_SEC_OFFSET, \ 508133574eSAlison Wang CONFIG_SYS_FSL_SEC_OFFSET + 0x6100 + 0x20 * (0x##rtic-0xa)) 518133574eSAlison Wang 528133574eSAlison Wang #define SET_SEC_DECO_LIODN_ENTRY(num, liodnA, liodnB) \ 538133574eSAlison Wang SET_LIODN_ENTRY_2(NULL, liodnA, liodnB, \ 548133574eSAlison Wang offsetof(ccsr_sec_t, decoliodnr[num].ls) + \ 558133574eSAlison Wang CONFIG_SYS_FSL_SEC_OFFSET, 0) 568133574eSAlison Wang 578133574eSAlison Wang struct liodn_id_table { 588133574eSAlison Wang const char *compat; 598133574eSAlison Wang u32 id[2]; 608133574eSAlison Wang u8 num_ids; 618133574eSAlison Wang phys_addr_t compat_offset; 628133574eSAlison Wang unsigned long reg_offset; 638133574eSAlison Wang }; 648133574eSAlison Wang 65660673afSXiubo Li struct smmu_stream_id { 66660673afSXiubo Li uint16_t offset; 67660673afSXiubo Li uint16_t stream_id; 68660673afSXiubo Li char dev_name[32]; 69660673afSXiubo Li }; 70660673afSXiubo Li 718133574eSAlison Wang void ls1021x_config_caam_stream_id(struct liodn_id_table *tbl, int size); 72660673afSXiubo Li void ls102xa_config_smmu_stream_id(struct smmu_stream_id *id, uint32_t num); 73660673afSXiubo Li #endif 74