diff options
-rw-r--r-- | Makefile | 8 | ||||
-rw-r--r-- | ipa_reg-v3.0.c | 23 | ||||
-rw-r--r-- | ipa_reg-v3.1.c | 23 | ||||
-rw-r--r-- | ipa_reg-v3.5.1.c | 23 | ||||
-rw-r--r-- | ipa_reg-v3.5.c | 23 | ||||
-rw-r--r-- | ipa_reg-v4.0.c | 36 | ||||
-rw-r--r-- | ipa_reg-v4.1.c | 36 | ||||
-rw-r--r-- | ipa_reg-v4.11.c | 42 | ||||
-rw-r--r-- | ipa_reg-v4.2.c | 36 | ||||
-rw-r--r-- | ipa_reg-v4.5.c | 37 | ||||
-rw-r--r-- | ipa_reg-v4.7.c | 37 | ||||
-rw-r--r-- | ipa_reg-v4.9.c | 42 | ||||
-rw-r--r-- | ipa_reg_new.h | 87 |
13 files changed, 452 insertions, 1 deletions
@@ -3,14 +3,20 @@ CC = gcc CFLAGS = -Wall -O4 -CFILES = regs.c ipa_reg.c +CFILES = regs.c ipa_reg.c $(IPA_REG_VER_C) +IPA_REG_VER_C = ipa_reg-v3.0.c ipa_reg-v3.1.c ipa_reg-v3.5.c \ + ipa_reg-v3.5.1.c ipa_reg-v4.0.c ipa_reg-v4.1.c \ + ipa_reg-v4.2.c ipa_reg-v4.5.c ipa_reg-v4.7.c \ + ipa_reg-v4.9.c ipa_reg-v4.11.c OFILES = $(CFILES:.c=.o) +IPA_REG_VER_O = $(IPA_REG_VER_C:.c=.o) regs: $(OFILES) regs.o: ipa_reg.h ipa_reg.o: ipa_reg.h +$(IPA_REG_VER_O): linux.h ipa_reg.h ipa_reg.h: ipa_version.h gsi_ee.h gsi_reg.h: bitfield.h diff --git a/ipa_reg-v3.0.c b/ipa_reg-v3.0.c new file mode 100644 index 0000000..523a85a --- /dev/null +++ b/ipa_reg-v3.0.c @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include "linux.h" +#include "ipa_reg_new.h" + +static const u32 ipa_reg_comp_cfg_field[] = { + [COMP_CFG_ENABLE] = BIT(0), + [COMP_CFG_GSI_SNOC_BYPASS_DIS] = BIT(1), + [COMP_CFG_GEN_QMB_0_SNOC_BYPASS_DIS] = BIT(2), + [COMP_CFG_GEN_QMB_1_SNOC_BYPASS_DIS] = BIT(3), + [COMP_CFG_IPA_DCMP_FAST_CLK_EN] = BIT(4), + /* Bits 5-31 reserved */ +}; +IPA_REG_FIELDS(COMP_CFG, comp_cfg, 0x0000003c); + +static const struct ipa_reg *ipa_reg[] = { + [IPA_REG_COMP_CFG] = &ipa_reg_comp_cfg, +}; + +const struct ipa_regs ipa_regs_v3_0 = { + .reg_count = ARRAY_SIZE(ipa_reg), + .reg = ipa_reg, +}; diff --git a/ipa_reg-v3.1.c b/ipa_reg-v3.1.c new file mode 100644 index 0000000..78c50f0 --- /dev/null +++ b/ipa_reg-v3.1.c @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include "linux.h" +#include "ipa_reg_new.h" + +static const u32 ipa_reg_comp_cfg_field[] = { + [COMP_CFG_ENABLE] = BIT(0), + [COMP_CFG_GSI_SNOC_BYPASS_DIS] = BIT(1), + [COMP_CFG_GEN_QMB_0_SNOC_BYPASS_DIS] = BIT(2), + [COMP_CFG_GEN_QMB_1_SNOC_BYPASS_DIS] = BIT(3), + [COMP_CFG_IPA_DCMP_FAST_CLK_EN] = BIT(4), + /* Bits 5-31 reserved */ +}; +IPA_REG_FIELDS(COMP_CFG, comp_cfg, 0x0000003c); + +static const struct ipa_reg *ipa_reg[] = { + [IPA_REG_COMP_CFG] = &ipa_reg_comp_cfg, +}; + +const struct ipa_regs ipa_regs_v3_1 = { + .reg_count = ARRAY_SIZE(ipa_reg), + .reg = ipa_reg, +}; diff --git a/ipa_reg-v3.5.1.c b/ipa_reg-v3.5.1.c new file mode 100644 index 0000000..4d7f9b4 --- /dev/null +++ b/ipa_reg-v3.5.1.c @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include "linux.h" +#include "ipa_reg_new.h" + +static const u32 ipa_reg_comp_cfg_field[] = { + [COMP_CFG_ENABLE] = BIT(0), + [COMP_CFG_GSI_SNOC_BYPASS_DIS] = BIT(1), + [COMP_CFG_GEN_QMB_0_SNOC_BYPASS_DIS] = BIT(2), + [COMP_CFG_GEN_QMB_1_SNOC_BYPASS_DIS] = BIT(3), + [COMP_CFG_IPA_DCMP_FAST_CLK_EN] = BIT(4), + /* Bits 5-31 reserved */ +}; +IPA_REG_FIELDS(COMP_CFG, comp_cfg, 0x0000003c); + +static const struct ipa_reg *ipa_reg[] = { + [IPA_REG_COMP_CFG] = &ipa_reg_comp_cfg, +}; + +const struct ipa_regs ipa_regs_v3_5_1 = { + .reg_count = ARRAY_SIZE(ipa_reg), + .reg = ipa_reg, +}; diff --git a/ipa_reg-v3.5.c b/ipa_reg-v3.5.c new file mode 100644 index 0000000..36c7a99 --- /dev/null +++ b/ipa_reg-v3.5.c @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include "linux.h" +#include "ipa_reg_new.h" + +static const u32 ipa_reg_comp_cfg_field[] = { + [COMP_CFG_ENABLE] = BIT(0), + [COMP_CFG_GSI_SNOC_BYPASS_DIS] = BIT(1), + [COMP_CFG_GEN_QMB_0_SNOC_BYPASS_DIS] = BIT(2), + [COMP_CFG_GEN_QMB_1_SNOC_BYPASS_DIS] = BIT(3), + [COMP_CFG_IPA_DCMP_FAST_CLK_EN] = BIT(4), + /* Bits 5-31 reserved */ +}; +IPA_REG_FIELDS(COMP_CFG, comp_cfg, 0x0000003c); + +static const struct ipa_reg *ipa_reg[] = { + [IPA_REG_COMP_CFG] = &ipa_reg_comp_cfg, +}; + +const struct ipa_regs ipa_regs_v3_5 = { + .reg_count = ARRAY_SIZE(ipa_reg), + .reg = ipa_reg, +}; diff --git a/ipa_reg-v4.0.c b/ipa_reg-v4.0.c new file mode 100644 index 0000000..ac464e7 --- /dev/null +++ b/ipa_reg-v4.0.c @@ -0,0 +1,36 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include "linux.h" +#include "ipa_reg_new.h" + +static const u32 ipa_reg_comp_cfg_field[] = { + /* Bit 0 reserved */ + [COMP_CFG_GSI_SNOC_BYPASS_DIS] = BIT(1), + [COMP_CFG_GEN_QMB_0_SNOC_BYPASS_DIS] = BIT(2), + [COMP_CFG_GEN_QMB_1_SNOC_BYPASS_DIS] = BIT(3), + [COMP_CFG_IPA_DCMP_FAST_CLK_EN] = BIT(4), + [COMP_CFG_IPA_QMB_SELECT_CONS_EN] = BIT(5), + [COMP_CFG_IPA_QMB_SELECT_PROD_EN] = BIT(6), + [COMP_CFG_GSI_MULTI_INORDER_RD_DIS] = BIT(7), + [COMP_CFG_GSI_MULTI_INORDER_WR_DIS] = BIT(8), + [COMP_CFG_GEN_QMB_0_MULTI_INORDER_RD_DIS] = BIT(9), + [COMP_CFG_GEN_QMB_1_MULTI_INORDER_RD_DIS] = BIT(10), + [COMP_CFG_GEN_QMB_0_MULTI_INORDER_WR_DIS] = BIT(11), + [COMP_CFG_GEN_QMB_1_MULTI_INORDER_WR_DIS] = BIT(12), + [COMP_CFG_GEN_QMB_0_SNOC_CNOC_LOOP_PROT_DIS] = BIT(13), + [COMP_CFG_GSI_SNOC_CNOC_LOOP_PROT_DISABLE] = BIT(14), + [COMP_CFG_GSI_MULTI_AXI_MASTERS_DIS] = BIT(15), + [COMP_CFG_IPA_QMB_SELECT_GLOBAL_EN] = BIT(16), + [COMP_CFG_ATOMIC_FETCHER_ARB_LOCK_DIS] = GENMASK(20, 17), + /* Bits 21-31 reserved */ +}; +IPA_REG_FIELDS(COMP_CFG, comp_cfg, 0x0000003c); + +static const struct ipa_reg *ipa_reg[] = { + [IPA_REG_COMP_CFG] = &ipa_reg_comp_cfg, +}; + +const struct ipa_regs ipa_regs_v4_0 = { + .reg_count = ARRAY_SIZE(ipa_reg), + .reg = ipa_reg, +}; diff --git a/ipa_reg-v4.1.c b/ipa_reg-v4.1.c new file mode 100644 index 0000000..de95496 --- /dev/null +++ b/ipa_reg-v4.1.c @@ -0,0 +1,36 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include "linux.h" +#include "ipa_reg_new.h" + +static const u32 ipa_reg_comp_cfg_field[] = { + /* Bit 0 reserved */ + [COMP_CFG_GSI_SNOC_BYPASS_DIS] = BIT(1), + [COMP_CFG_GEN_QMB_0_SNOC_BYPASS_DIS] = BIT(2), + [COMP_CFG_GEN_QMB_1_SNOC_BYPASS_DIS] = BIT(3), + [COMP_CFG_IPA_DCMP_FAST_CLK_EN] = BIT(4), + [COMP_CFG_IPA_QMB_SELECT_CONS_EN] = BIT(5), + [COMP_CFG_IPA_QMB_SELECT_PROD_EN] = BIT(6), + [COMP_CFG_GSI_MULTI_INORDER_RD_DIS] = BIT(7), + [COMP_CFG_GSI_MULTI_INORDER_WR_DIS] = BIT(8), + [COMP_CFG_GEN_QMB_0_MULTI_INORDER_RD_DIS] = BIT(9), + [COMP_CFG_GEN_QMB_1_MULTI_INORDER_RD_DIS] = BIT(10), + [COMP_CFG_GEN_QMB_0_MULTI_INORDER_WR_DIS] = BIT(11), + [COMP_CFG_GEN_QMB_1_MULTI_INORDER_WR_DIS] = BIT(12), + [COMP_CFG_GEN_QMB_0_SNOC_CNOC_LOOP_PROT_DIS] = BIT(13), + [COMP_CFG_GSI_SNOC_CNOC_LOOP_PROT_DISABLE] = BIT(14), + [COMP_CFG_GSI_MULTI_AXI_MASTERS_DIS] = BIT(15), + [COMP_CFG_IPA_QMB_SELECT_GLOBAL_EN] = BIT(16), + [COMP_CFG_ATOMIC_FETCHER_ARB_LOCK_DIS] = GENMASK(20, 17), + /* Bits 21-31 reserved */ +}; +IPA_REG_FIELDS(COMP_CFG, comp_cfg, 0x0000003c); + +static const struct ipa_reg *ipa_reg[] = { + [IPA_REG_COMP_CFG] = &ipa_reg_comp_cfg, +}; + +const struct ipa_regs ipa_regs_v4_1 = { + .reg_count = ARRAY_SIZE(ipa_reg), + .reg = ipa_reg, +}; diff --git a/ipa_reg-v4.11.c b/ipa_reg-v4.11.c new file mode 100644 index 0000000..4103d32 --- /dev/null +++ b/ipa_reg-v4.11.c @@ -0,0 +1,42 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include "linux.h" +#include "ipa_reg_new.h" + +static const u32 ipa_reg_comp_cfg_field[] = { + [RAM_ARB_PRI_CLIENT_SAMP_FIX_DIS] = BIT(0), + [COMP_CFG_GSI_SNOC_BYPASS_DIS] = BIT(1), + [COMP_CFG_GEN_QMB_0_SNOC_BYPASS_DIS] = BIT(2), + [COMP_CFG_GEN_QMB_1_SNOC_BYPASS_DIS] = BIT(3), + /* Bit 4 reserved */ + [COMP_CFG_IPA_QMB_SELECT_CONS_EN] = BIT(5), + [COMP_CFG_IPA_QMB_SELECT_PROD_EN] = BIT(6), + [COMP_CFG_GSI_MULTI_INORDER_RD_DIS] = BIT(7), + [COMP_CFG_GSI_MULTI_INORDER_WR_DIS] = BIT(8), + [COMP_CFG_GEN_QMB_0_MULTI_INORDER_RD_DIS] = BIT(9), + [COMP_CFG_GEN_QMB_1_MULTI_INORDER_RD_DIS] = BIT(10), + [COMP_CFG_GEN_QMB_0_MULTI_INORDER_WR_DIS] = BIT(11), + [COMP_CFG_GEN_QMB_1_MULTI_INORDER_WR_DIS] = BIT(12), + [COMP_CFG_GEN_QMB_0_SNOC_CNOC_LOOP_PROT_DIS] = BIT(13), + [COMP_CFG_GSI_SNOC_CNOC_LOOP_PROT_DISABLE] = BIT(14), + [COMP_CFG_GSI_MULTI_AXI_MASTERS_DIS] = BIT(15), + [COMP_CFG_IPA_QMB_SELECT_GLOBAL_EN] = BIT(16), + [COMP_CFG_FULL_FLUSH_WAIT_RS_CLOSURE_EN] = BIT(17), + [COMP_CFG_QMB_RAM_RD_CACHE_DISABLE] = BIT(19), + [COMP_CFG_GENQMB_AOOOWR] = BIT(20), + [COMP_CFG_IF_OUT_OF_BUF_STOP_RESET_MASK_EN] = BIT(21), + [COMP_CFG_ATOMIC_FETCHER_ARB_LOCK_DIS] = GENMASK(23, 22), + /* Bits 24-29 reserved */ + [COMP_CFG_GEN_QMB_1_DYNAMIC_ASIZE] = BIT(30), + [COMP_CFG_GEN_QMB_0_DYNAMIC_ASIZE] = BIT(31), +}; +IPA_REG_FIELDS(COMP_CFG, comp_cfg, 0x0000003c); + +static const struct ipa_reg *ipa_reg[] = { + [IPA_REG_COMP_CFG] = &ipa_reg_comp_cfg, +}; + +const struct ipa_regs ipa_regs_v4_11 = { + .reg_count = ARRAY_SIZE(ipa_reg), + .reg = ipa_reg, +}; diff --git a/ipa_reg-v4.2.c b/ipa_reg-v4.2.c new file mode 100644 index 0000000..1920a92 --- /dev/null +++ b/ipa_reg-v4.2.c @@ -0,0 +1,36 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include "linux.h" +#include "ipa_reg_new.h" + +static const u32 ipa_reg_comp_cfg_field[] = { + /* Bit 0 reserved */ + [COMP_CFG_GSI_SNOC_BYPASS_DIS] = BIT(1), + [COMP_CFG_GEN_QMB_0_SNOC_BYPASS_DIS] = BIT(2), + [COMP_CFG_GEN_QMB_1_SNOC_BYPASS_DIS] = BIT(3), + [COMP_CFG_IPA_DCMP_FAST_CLK_EN] = BIT(4), + [COMP_CFG_IPA_QMB_SELECT_CONS_EN] = BIT(5), + [COMP_CFG_IPA_QMB_SELECT_PROD_EN] = BIT(6), + [COMP_CFG_GSI_MULTI_INORDER_RD_DIS] = BIT(7), + [COMP_CFG_GSI_MULTI_INORDER_WR_DIS] = BIT(8), + [COMP_CFG_GEN_QMB_0_MULTI_INORDER_RD_DIS] = BIT(9), + [COMP_CFG_GEN_QMB_1_MULTI_INORDER_RD_DIS] = BIT(10), + [COMP_CFG_GEN_QMB_0_MULTI_INORDER_WR_DIS] = BIT(11), + [COMP_CFG_GEN_QMB_1_MULTI_INORDER_WR_DIS] = BIT(12), + [COMP_CFG_GEN_QMB_0_SNOC_CNOC_LOOP_PROT_DIS] = BIT(13), + [COMP_CFG_GSI_SNOC_CNOC_LOOP_PROT_DISABLE] = BIT(14), + [COMP_CFG_GSI_MULTI_AXI_MASTERS_DIS] = BIT(15), + [COMP_CFG_IPA_QMB_SELECT_GLOBAL_EN] = BIT(16), + [COMP_CFG_ATOMIC_FETCHER_ARB_LOCK_DIS] = GENMASK(20, 17), + /* Bits 21-31 reserved */ +}; +IPA_REG_FIELDS(COMP_CFG, comp_cfg, 0x0000003c); + +static const struct ipa_reg *ipa_reg[] = { + [IPA_REG_COMP_CFG] = &ipa_reg_comp_cfg, +}; + +const struct ipa_regs ipa_regs_v4_2 = { + .reg_count = ARRAY_SIZE(ipa_reg), + .reg = ipa_reg, +}; diff --git a/ipa_reg-v4.5.c b/ipa_reg-v4.5.c new file mode 100644 index 0000000..bceac70 --- /dev/null +++ b/ipa_reg-v4.5.c @@ -0,0 +1,37 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include "linux.h" +#include "ipa_reg_new.h" + +static const u32 ipa_reg_comp_cfg_field[] = { + /* Bit 0 reserved */ + [COMP_CFG_GSI_SNOC_BYPASS_DIS] = BIT(1), + [COMP_CFG_GEN_QMB_0_SNOC_BYPASS_DIS] = BIT(2), + [COMP_CFG_GEN_QMB_1_SNOC_BYPASS_DIS] = BIT(3), + /* Bit 4 reserved */ + [COMP_CFG_IPA_QMB_SELECT_CONS_EN] = BIT(5), + [COMP_CFG_IPA_QMB_SELECT_PROD_EN] = BIT(6), + [COMP_CFG_GSI_MULTI_INORDER_RD_DIS] = BIT(7), + [COMP_CFG_GSI_MULTI_INORDER_WR_DIS] = BIT(8), + [COMP_CFG_GEN_QMB_0_MULTI_INORDER_RD_DIS] = BIT(9), + [COMP_CFG_GEN_QMB_1_MULTI_INORDER_RD_DIS] = BIT(10), + [COMP_CFG_GEN_QMB_0_MULTI_INORDER_WR_DIS] = BIT(11), + [COMP_CFG_GEN_QMB_1_MULTI_INORDER_WR_DIS] = BIT(12), + [COMP_CFG_GEN_QMB_0_SNOC_CNOC_LOOP_PROT_DIS] = BIT(13), + [COMP_CFG_GSI_SNOC_CNOC_LOOP_PROT_DISABLE] = BIT(14), + [COMP_CFG_GSI_MULTI_AXI_MASTERS_DIS] = BIT(15), + [COMP_CFG_IPA_QMB_SELECT_GLOBAL_EN] = BIT(16), + [COMP_CFG_ATOMIC_FETCHER_ARB_LOCK_DIS] = GENMASK(20, 17), + [COMP_CFG_FULL_FLUSH_WAIT_RS_CLOSURE_EN] = BIT(21), + /* Bits 22-31 reserved */ +}; +IPA_REG_FIELDS(COMP_CFG, comp_cfg, 0x0000003c); + +static const struct ipa_reg *ipa_reg[] = { + [IPA_REG_COMP_CFG] = &ipa_reg_comp_cfg, +}; + +const struct ipa_regs ipa_regs_v4_5 = { + .reg_count = ARRAY_SIZE(ipa_reg), + .reg = ipa_reg, +}; diff --git a/ipa_reg-v4.7.c b/ipa_reg-v4.7.c new file mode 100644 index 0000000..c945af4 --- /dev/null +++ b/ipa_reg-v4.7.c @@ -0,0 +1,37 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include "linux.h" +#include "ipa_reg_new.h" + +static const u32 ipa_reg_comp_cfg_field[] = { + [RAM_ARB_PRI_CLIENT_SAMP_FIX_DIS] = BIT(0), + [COMP_CFG_GSI_SNOC_BYPASS_DIS] = BIT(1), + [COMP_CFG_GEN_QMB_0_SNOC_BYPASS_DIS] = BIT(2), + [COMP_CFG_GEN_QMB_1_SNOC_BYPASS_DIS] = BIT(3), + /* Bit 4 reserved */ + [COMP_CFG_IPA_QMB_SELECT_CONS_EN] = BIT(5), + [COMP_CFG_IPA_QMB_SELECT_PROD_EN] = BIT(6), + [COMP_CFG_GSI_MULTI_INORDER_RD_DIS] = BIT(7), + [COMP_CFG_GSI_MULTI_INORDER_WR_DIS] = BIT(8), + [COMP_CFG_GEN_QMB_0_MULTI_INORDER_RD_DIS] = BIT(9), + [COMP_CFG_GEN_QMB_1_MULTI_INORDER_RD_DIS] = BIT(10), + [COMP_CFG_GEN_QMB_0_MULTI_INORDER_WR_DIS] = BIT(11), + [COMP_CFG_GEN_QMB_1_MULTI_INORDER_WR_DIS] = BIT(12), + [COMP_CFG_GEN_QMB_0_SNOC_CNOC_LOOP_PROT_DIS] = BIT(13), + [COMP_CFG_GSI_SNOC_CNOC_LOOP_PROT_DISABLE] = BIT(14), + [COMP_CFG_GSI_MULTI_AXI_MASTERS_DIS] = BIT(15), + [COMP_CFG_IPA_QMB_SELECT_GLOBAL_EN] = BIT(16), + [COMP_CFG_ATOMIC_FETCHER_ARB_LOCK_DIS] = GENMASK(20, 17), + [COMP_CFG_FULL_FLUSH_WAIT_RS_CLOSURE_EN] = BIT(21), + /* Bits 22-31 reserved */ +}; +IPA_REG_FIELDS(COMP_CFG, comp_cfg, 0x0000003c); + +static const struct ipa_reg *ipa_reg[] = { + [IPA_REG_COMP_CFG] = &ipa_reg_comp_cfg, +}; + +const struct ipa_regs ipa_regs_v4_7 = { + .reg_count = ARRAY_SIZE(ipa_reg), + .reg = ipa_reg, +}; diff --git a/ipa_reg-v4.9.c b/ipa_reg-v4.9.c new file mode 100644 index 0000000..9615038 --- /dev/null +++ b/ipa_reg-v4.9.c @@ -0,0 +1,42 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include "linux.h" +#include "ipa_reg_new.h" + +static const u32 ipa_reg_comp_cfg_field[] = { + [RAM_ARB_PRI_CLIENT_SAMP_FIX_DIS] = BIT(0), + [COMP_CFG_GSI_SNOC_BYPASS_DIS] = BIT(1), + [COMP_CFG_GEN_QMB_0_SNOC_BYPASS_DIS] = BIT(2), + [COMP_CFG_GEN_QMB_1_SNOC_BYPASS_DIS] = BIT(3), + /* Bit 4 reserved */ + [COMP_CFG_IPA_QMB_SELECT_CONS_EN] = BIT(5), + [COMP_CFG_IPA_QMB_SELECT_PROD_EN] = BIT(6), + [COMP_CFG_GSI_MULTI_INORDER_RD_DIS] = BIT(7), + [COMP_CFG_GSI_MULTI_INORDER_WR_DIS] = BIT(8), + [COMP_CFG_GEN_QMB_0_MULTI_INORDER_RD_DIS] = BIT(9), + [COMP_CFG_GEN_QMB_1_MULTI_INORDER_RD_DIS] = BIT(10), + [COMP_CFG_GEN_QMB_0_MULTI_INORDER_WR_DIS] = BIT(11), + [COMP_CFG_GEN_QMB_1_MULTI_INORDER_WR_DIS] = BIT(12), + [COMP_CFG_GEN_QMB_0_SNOC_CNOC_LOOP_PROT_DIS] = BIT(13), + [COMP_CFG_GSI_SNOC_CNOC_LOOP_PROT_DISABLE] = BIT(14), + [COMP_CFG_GSI_MULTI_AXI_MASTERS_DIS] = BIT(15), + [COMP_CFG_IPA_QMB_SELECT_GLOBAL_EN] = BIT(16), + [COMP_CFG_FULL_FLUSH_WAIT_RS_CLOSURE_EN] = BIT(17), + [COMP_CFG_QMB_RAM_RD_CACHE_DISABLE] = BIT(19), + [COMP_CFG_GENQMB_AOOOWR] = BIT(20), + [COMP_CFG_IF_OUT_OF_BUF_STOP_RESET_MASK_EN] = BIT(21), + [COMP_CFG_ATOMIC_FETCHER_ARB_LOCK_DIS] = GENMASK(24, 22), + /* Bits 25-29 reserved */ + [COMP_CFG_GEN_QMB_1_DYNAMIC_ASIZE] = BIT(30), + [COMP_CFG_GEN_QMB_0_DYNAMIC_ASIZE] = BIT(31), +}; +IPA_REG_FIELDS(COMP_CFG, comp_cfg, 0x0000003c); + +static const struct ipa_reg *ipa_reg[] = { + [IPA_REG_COMP_CFG] = &ipa_reg_comp_cfg, +}; + +const struct ipa_regs ipa_regs_v4_9 = { + .reg_count = ARRAY_SIZE(ipa_reg), + .reg = ipa_reg, +}; diff --git a/ipa_reg_new.h b/ipa_reg_new.h new file mode 100644 index 0000000..4233604 --- /dev/null +++ b/ipa_reg_new.h @@ -0,0 +1,87 @@ +// SPDX-License-Identifier: GPL-2.0 + +#ifndef _IPA_REG_NEW_H +#define _IPA_REG_NEW_H + +#include "linux.h" + +struct ipa_reg { + u32 offset; + u32 field_count; + u32 stride; + const u32 *fmask; /* BIT(nr) or GENMASK(h, l) */ + const char *name; +}; + +struct ipa_regs { + u32 reg_count; + const struct ipa_reg **reg; +}; + +enum ipa_reg_name { + IPA_REG_COMP_CFG, +}; + +#define IPA_REG(__NAME, __name, __offset) \ + IPA_REG_STRIDE(__NAME, __name, __offset, 0) + +#define IPA_REG_STRIDE(__NAME, __name, __offset, __stride) \ + static const struct ipa_reg ipa_reg_ ## __name = { \ + .name = #__NAME, \ + .offset = __offset, \ + .stride = __stride, \ + } + +#define IPA_REG_FIELDS(__NAME, __name, __offset) \ + IPA_REG_STRIDE_FIELDS(__NAME, __name, __offset, 0) + +#define IPA_REG_STRIDE_FIELDS(__NAME, __name, __offset, __stride) \ + static const struct ipa_reg ipa_reg_ ## __name = { \ + .name = #__NAME, \ + .offset = __offset, \ + .stride = __stride, \ + .field_count = ARRAY_SIZE(ipa_reg_ ## __name ## _field), \ + .fmask = ipa_reg_ ## __name ## _field, \ + } + +enum ipa_reg_comp_cfg_field_name { + COMP_CFG_ENABLE, /* Not IPA v4.0+ */ + RAM_ARB_PRI_CLIENT_SAMP_FIX_DIS, /* IPA v4.7+ */ + COMP_CFG_GSI_SNOC_BYPASS_DIS, + COMP_CFG_GEN_QMB_0_SNOC_BYPASS_DIS, + COMP_CFG_GEN_QMB_1_SNOC_BYPASS_DIS, + COMP_CFG_IPA_DCMP_FAST_CLK_EN, /* Not IPA v4.5+ */ + COMP_CFG_IPA_QMB_SELECT_CONS_EN, /* IPA v4.0+ */ + COMP_CFG_IPA_QMB_SELECT_PROD_EN, /* IPA v4.0+ */ + COMP_CFG_GSI_MULTI_INORDER_RD_DIS, /* IPA v4.0+ */ + COMP_CFG_GSI_MULTI_INORDER_WR_DIS, /* IPA v4.0+ */ + COMP_CFG_GEN_QMB_0_MULTI_INORDER_RD_DIS, /* IPA v4.0+ */ + COMP_CFG_GEN_QMB_1_MULTI_INORDER_RD_DIS, /* IPA v4.0+ */ + COMP_CFG_GEN_QMB_0_MULTI_INORDER_WR_DIS, /* IPA v4.0+ */ + COMP_CFG_GEN_QMB_1_MULTI_INORDER_WR_DIS, /* IPA v4.0+ */ + COMP_CFG_GEN_QMB_0_SNOC_CNOC_LOOP_PROT_DIS, /* IPA v4.0+ */ + COMP_CFG_GSI_SNOC_CNOC_LOOP_PROT_DISABLE, /* IPA v4.0+ */ + COMP_CFG_GSI_MULTI_AXI_MASTERS_DIS, /* IPA v4.0+ */ + COMP_CFG_IPA_QMB_SELECT_GLOBAL_EN, /* IPA v4.0+ */ + COMP_CFG_QMB_RAM_RD_CACHE_DISABLE, /* IPA v4.9+ */ + COMP_CFG_GENQMB_AOOOWR, /* IPA v4.9+ */ + COMP_CFG_IF_OUT_OF_BUF_STOP_RESET_MASK_EN, /* IPA v4.9+ */ + COMP_CFG_GEN_QMB_1_DYNAMIC_ASIZE, /* IPA v4.9+ */ + COMP_CFG_GEN_QMB_0_DYNAMIC_ASIZE, /* IPA v4.9+ */ + COMP_CFG_ATOMIC_FETCHER_ARB_LOCK_DIS, /* IPA v4.0+ */ + COMP_CFG_FULL_FLUSH_WAIT_RS_CLOSURE_EN, /* IPA v4.5+ */ +}; + +extern const struct ipa_regs ipa_regs_v3_0; +extern const struct ipa_regs ipa_regs_v3_1; +extern const struct ipa_regs ipa_regs_v3_5; +extern const struct ipa_regs ipa_regs_v3_5_1; +extern const struct ipa_regs ipa_regs_v4_0; +extern const struct ipa_regs ipa_regs_v4_1; +extern const struct ipa_regs ipa_regs_v4_2; +extern const struct ipa_regs ipa_regs_v4_5; +extern const struct ipa_regs ipa_regs_v4_7; +extern const struct ipa_regs ipa_regs_v4_9; +extern const struct ipa_regs ipa_regs_v4_11; + +#endif /* _IPA_REG_NEW_H */ |