When enabling the ADI hardware channels, if the channel id is 31,
then we will get one negative value -1 for BIT() macro, which will
write incorrect value to register.

Fixes: 7e2903cb91df ("spi: Add ADI driver for Spreadtrum platform")
Reported-by: Dan Carpenter <[email protected]>
Signed-off-by: Baolin Wang <[email protected]>
---
 drivers/spi/spi-sprd-adi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/spi/spi-sprd-adi.c b/drivers/spi/spi-sprd-adi.c
index 6a5ff30..5993bdb 100644
--- a/drivers/spi/spi-sprd-adi.c
+++ b/drivers/spi/spi-sprd-adi.c
@@ -303,7 +303,7 @@ static void sprd_adi_hw_init(struct sprd_adi *sadi)
                writel_relaxed(chn_config, sadi->base +
                               REG_ADI_CHN_ADDR(chn_id));
 
-               if (chn_id < 31) {
+               if (chn_id < 32) {
                        value = readl_relaxed(sadi->base + REG_ADI_CHN_EN);
                        value |= BIT(chn_id);
                        writel_relaxed(value, sadi->base + REG_ADI_CHN_EN);
-- 
1.9.1

Reply via email to