diff --git a/arch/arm64/boot/dts/amlogic/meson-s6.dtsi b/arch/arm64/boot/dts/amlogic/meson-s6.dtsi index 0ba1216c9..402e49e72 100644 --- a/arch/arm64/boot/dts/amlogic/meson-s6.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-s6.dtsi @@ -1867,18 +1867,18 @@ compatible = "amlogic,aml_mkl"; reg = <0x0 0xfe440200 0x0 0xf0>; kl_type = <1>; + kl_vid_type = <1>; kl_offset = <0x80 0x88 0x8c 0x90>; - status = "disabled"; + status = "okay"; }; aml_kt { compatible = "amlogic,aml_kt"; reg = <0x0 0xfe440500 0x0 0xa0>; kt_offset = <0x80 0x88 0x8c 0x90 0x94 0x98 0x9c>; - kt_cap = <0x260f 0x6bf 0 64 0 32>; - s17_cfg_offset = <0x2408>; + kt_cap = <0x2F85 0x6bf 0 64 0 32>; kt_reserved = <0>; - status = "disabled"; + status = "okay"; }; chosen { diff --git a/drivers/seckey/aml_kt.c b/drivers/seckey/aml_kt.c index 8f78dcd31..4b755fd32 100644 --- a/drivers/seckey/aml_kt.c +++ b/drivers/seckey/aml_kt.c @@ -75,6 +75,7 @@ enum KT_ALGO_CAPABILITY { KT_CAP_ND = 0x100, KT_CAP_CSA3 = 0x200, KT_CAP_CSA2 = 0x400, + KT_CAP_MULTI2 = 0x800, KT_CAP_HMAC = 0x2000, }; @@ -473,6 +474,10 @@ int aml_kt_config(struct aml_kt_dev *dev, struct amlkt_cfg_param key_cfg) if (!(dev->algo_cap & KT_CAP_CSA2)) goto error_algo; break; + case AML_KT_ALGO_MULTI2: + if (!(dev->algo_cap & KT_CAP_MULTI2)) + goto error_algo; + break; case AML_KT_ALGO_HMAC: if (!(dev->algo_cap & KT_CAP_HMAC)) goto error_algo; diff --git a/drivers/seckey/aml_mkl.c b/drivers/seckey/aml_mkl.c index 64efdccbd..ac2cd73ca 100644 --- a/drivers/seckey/aml_mkl.c +++ b/drivers/seckey/aml_mkl.c @@ -261,7 +261,7 @@ static int aml_mkl_etsi_run(struct file *filp, struct amlkl_params *param) (pu->uid > AML_KT_USER_TSE && pu->uid < KL_USERID_MASK) || pu->algo & ~KL_KEYALGO_MASK || (pu->algo > AML_KT_ALGO_DES && pu->algo < AML_KT_ALGO_NDL) || - (pu->algo > AML_KT_ALGO_CSA2 && pu->algo < AML_KT_ALGO_HMAC) || + (pu->algo > AML_KT_ALGO_MULTI2 && pu->algo < AML_KT_ALGO_HMAC) || (pu->algo > AML_KT_ALGO_HMAC && pu->algo < KL_KEYALGO_MASK) || pu->crypto & ~KL_FLAG_MASK || param->levels < AML_KL_LEVEL_3 || param->levels > AML_KL_LEVEL_6 || @@ -490,7 +490,7 @@ static int aml_mkl_run(struct file *filp, struct amlkl_params *param) (pu->uid > AML_KT_USER_TSE && pu->uid < KL_USERID_MASK) || pu->algo & ~KL_KEYALGO_MASK || (pu->algo > AML_KT_ALGO_DES && pu->algo < AML_KT_ALGO_NDL) || - (pu->algo > AML_KT_ALGO_CSA2 && pu->algo < AML_KT_ALGO_HMAC) || + (pu->algo > AML_KT_ALGO_MULTI2 && pu->algo < AML_KT_ALGO_HMAC) || (pu->algo > AML_KT_ALGO_HMAC && pu->algo < KL_KEYALGO_MASK) || pu->crypto & ~KL_FLAG_MASK || param->kl_algo > AML_KL_ALGO_AES) { KL_LOGE("Error: param data has bad parameter\n"); @@ -576,7 +576,7 @@ static int aml_mkl_msr_run(struct file *filp, struct amlkl_params *param) (pu->uid > AML_KT_USER_TSE && pu->uid < KL_USERID_MASK) || pu->algo & ~KL_KEYALGO_MASK || (pu->algo > AML_KT_ALGO_DES && pu->algo < AML_KT_ALGO_NDL) || - (pu->algo > AML_KT_ALGO_CSA2 && pu->algo < AML_KT_ALGO_HMAC) || + (pu->algo > AML_KT_ALGO_MULTI2 && pu->algo < AML_KT_ALGO_HMAC) || (pu->algo > AML_KT_ALGO_HMAC && pu->algo < KL_KEYALGO_MASK) || pu->crypto & ~KL_FLAG_MASK || param->kl_algo > AML_KL_ALGO_AES) { diff --git a/include/linux/amlogic/aml_kt.h b/include/linux/amlogic/aml_kt.h index c99d968b3..5a833ff67 100644 --- a/include/linux/amlogic/aml_kt.h +++ b/include/linux/amlogic/aml_kt.h @@ -30,6 +30,7 @@ #define AML_KT_ALGO_ND (8) #define AML_KT_ALGO_CSA3 (9) #define AML_KT_ALGO_CSA2 (10) +#define AML_KT_ALGO_MULTI2 (11) #define AML_KT_ALGO_HMAC (13) /* key flag */