summaryrefslogtreecommitdiffstats
path: root/drivers/soc
diff options
context:
space:
mode:
authorAhmad Fatoum <a.fatoum@pengutronix.de>2022-10-17 15:49:28 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2022-10-18 10:56:29 +0200
commit9011bf7b7fe8109b39e458c7522c544062a8bcff (patch)
tree4b4a7743d51d5a023739f0e89d37a2b1e2928a1b /drivers/soc
parent8fb7b2c42b982889e3c89b7411183a43a41977cf (diff)
downloadbarebox-9011bf7b7fe8109b39e458c7522c544062a8bcff.tar.gz
barebox-9011bf7b7fe8109b39e458c7522c544062a8bcff.tar.xz
soc: imx: imx8m-featctrl: check if all bits are set
The bits are not documented in the reference manual, so the bit masks were taken from NXP code written for U-Boot. There, checking is done for whether any bit is set. For 8MP however, all-bits-set is checked. Testing on i.MX8MM shows that all bits are set though, so switch to that for uniformity. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20221017134929.622022-3-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/soc')
-rw-r--r--drivers/soc/imx/imx8m-featctrl.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/soc/imx/imx8m-featctrl.c b/drivers/soc/imx/imx8m-featctrl.c
index 480c80e6c1..1798d0fc28 100644
--- a/drivers/soc/imx/imx8m-featctrl.c
+++ b/drivers/soc/imx/imx8m-featctrl.c
@@ -28,6 +28,11 @@ static int imx8m_feat_check(struct feature_controller *feat, int idx)
return test_bit(idx, priv->features) ? FEATCTRL_OKAY : FEATCTRL_GATED;
}
+static inline bool is_fused(u32 val, u32 bitmask)
+{
+ return bitmask && (val & bitmask) == bitmask;
+}
+
int imx8m_feat_ctrl_init(struct device_d *dev, u32 tester4,
const struct imx8m_featctrl_data *data)
{
@@ -44,9 +49,9 @@ int imx8m_feat_ctrl_init(struct device_d *dev, u32 tester4,
bitmap_fill(features, IMX8M_FEAT_END);
- if (tester4 & data->vpu_bitmask)
+ if (is_fused(tester4, data->vpu_bitmask))
clear_bit(IMX8M_FEAT_VPU, features);
- if (tester4 & data->gpu_bitmask)
+ if (is_fused(tester4, data->gpu_bitmask))
clear_bit(IMX8M_FEAT_GPU, features);
switch (tester4 & 3) {