1 /* 2 * Copyright (c) 2023 HPMicro 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 * 6 */ 7 8 #include "hpm_soc_feature.h" 9 #include "hpm_plb_drv.h" 10 plb_type_b_set_lut(PLB_Type * plb,plb_chn_t chn,plb_type_b_lut_slice_t slice,plb_type_b_slice_opt_t opt)11void plb_type_b_set_lut(PLB_Type *plb, plb_chn_t chn, plb_type_b_lut_slice_t slice, plb_type_b_slice_opt_t opt) 12 { 13 if (opt >= plb_slice_opt_shift_left) { 14 opt = opt >> 8; 15 plb->TYPE_B[chn].MODE |= PLB_TYPE_B_MODE_OPT_SEL_SET(1); 16 } else { 17 plb->TYPE_B[chn].MODE &= ~PLB_TYPE_B_MODE_OPT_SEL_MASK; 18 } 19 if (slice >= plb_type_b_slice_8) { 20 plb->TYPE_B[chn].LUT[1] = (plb->TYPE_B[chn].LUT[1] & (~((uint32_t)0xf))) | PLB_TYPE_B_LUT_LOOKUP_TABLE_SET(opt << ((slice - plb_type_b_slice_8) << 2)); 21 } else { 22 plb->TYPE_B[chn].LUT[0] = (plb->TYPE_B[chn].LUT[0] & (~((uint32_t)0xf))) | PLB_TYPE_B_LUT_LOOKUP_TABLE_SET(opt << (slice << 2)); 23 } 24 } 25