Shamile Khan has uploaded this change for review. ( https://review.coreboot.org/29110
Change subject: mb/google/octopus: Check for invalid pin termination settings ......................................................................
mb/google/octopus: Check for invalid pin termination settings
BUG=b:79982669 TEST=None
Change-Id: I64317e75f27e4cc2faf88b640b1bf9401db59dec Signed-off-by: Shamile Khan shamile.khan@intel.com --- M src/soc/intel/common/block/include/intelblocks/gpio_defs.h 1 file changed, 21 insertions(+), 1 deletion(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/10/29110/1
diff --git a/src/soc/intel/common/block/include/intelblocks/gpio_defs.h b/src/soc/intel/common/block/include/intelblocks/gpio_defs.h index a8d5ac9..1371a56 100644 --- a/src/soc/intel/common/block/include/intelblocks/gpio_defs.h +++ b/src/soc/intel/common/block/include/intelblocks/gpio_defs.h @@ -130,11 +130,31 @@ PAD_CFG0_TRIG_##trig | \ PAD_CFG0_RX_POL_##inv)
+#define PAD_CFG_CHECK_ENPD(value) \ + !(((((value) & PAD_CFG1_IOSTERM_MASK) == PAD_CFG1_IOSTERM_ENPD) \ + && (((value) & PAD_CFG1_PULL_MASK) > PAD_CFG1_PULL_DN_20K)) || \ + ((((value) & PAD_CFG1_IOSTERM_MASK) == PAD_CFG1_IOSTERM_ENPD) && \ + (((value) & PAD_CFG1_PULL_MASK) == PAD_CFG1_PULL_NONE))) + +#define PAD_CFG_CHECK_ENPU(value) \ + !(((((value) & PAD_CFG1_IOSTERM_MASK) == PAD_CFG1_IOSTERM_ENPU) \ + && (((value) & PAD_CFG1_PULL_MASK) < PAD_CFG1_PULL_UP_1K)) || \ + ((((value) & PAD_CFG1_IOSTERM_MASK) == PAD_CFG1_IOSTERM_ENPU) && \ + (((value) & PAD_CFG1_PULL_MASK) == PAD_CFG1_PULL_NATIVE))) + +/* Check for validity of Pad settings as per Doc# 572688. If the setting is + * invalid, assign a value greater than the max of a 32-bit integer. This will + * cause a compilation error and prevent the use of an invalid setting. + */ +#define _PAD_CFG_IS_VALID(__pad, __config0, __config1) \ + (PAD_CFG_CHECK_ENPD(__config1) && PAD_CFG_CHECK_ENPU(__config1)) + #define _PAD_CFG_STRUCT(__pad, __config0, __config1) \ { \ .pad = __pad, \ .pad_config[0] = __config0, \ - .pad_config[1] = __config1, \ + .pad_config[1] = _PAD_CFG_IS_VALID(__pad, __config0, \ + __config1) ? __config1: 0xFFFFFFFFFF, \ }
/* Native function configuration */