diff options
author | Ahmad Fatoum <a.fatoum@pengutronix.de> | 2022-10-17 15:49:28 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2022-10-18 10:56:29 +0200 |
commit | 9011bf7b7fe8109b39e458c7522c544062a8bcff (patch) | |
tree | 4b4a7743d51d5a023739f0e89d37a2b1e2928a1b /drivers/soc | |
parent | 8fb7b2c42b982889e3c89b7411183a43a41977cf (diff) | |
download | barebox-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.c | 9 |
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) { |