Running 'make M=drivers/staging/vt6655 C=2' causes sparse to generate few warnings. This patch fixes the following warnings by ensuring le64_to_cpu handles only __le64 values, thus dismissing chances of bad endianness. * drivers/staging/vt6655/card.c:302:45: warning: cast to restricted __le64 * drivers/staging/vt6655/card.c:336:23: warning: cast to restricted __le64 * drivers/staging/vt6655/card.c:804:23: warning: cast to restricted __le64 * drivers/staging/vt6655/card.c:831:18: warning: cast to restricted __le64 Signed-off-by: Ariel Silver <arielsilver77@xxxxxxxxx> --- drivers/staging/vt6655/card.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/drivers/staging/vt6655/card.c b/drivers/staging/vt6655/card.c index 350ab8f3778a..5dc2200466b7 100644 --- a/drivers/staging/vt6655/card.c +++ b/drivers/staging/vt6655/card.c @@ -292,6 +292,7 @@ bool card_update_tsf(struct vnt_private *priv, unsigned char rx_rate, { u64 local_tsf; u64 qwTSFOffset = 0; + __le64 le_qwTSFOffset = 0; local_tsf = vt6655_get_current_tsf(priv); @@ -299,7 +300,8 @@ bool card_update_tsf(struct vnt_private *priv, unsigned char rx_rate, qwTSFOffset = CARDqGetTSFOffset(rx_rate, qwBSSTimestamp, local_tsf); /* adjust TSF, HW's TSF add TSF Offset reg */ - qwTSFOffset = le64_to_cpu(qwTSFOffset); + le_qwTSFOffset = cpu_to_le64(qwTSFOffset); + qwTSFOffset = le64_to_cpu(le_qwTSFOffset); iowrite32((u32)qwTSFOffset, priv->port_offset + MAC_REG_TSFOFST); iowrite32((u32)(qwTSFOffset >> 32), priv->port_offset + MAC_REG_TSFOFST + 4); vt6655_mac_reg_bits_on(priv->port_offset, MAC_REG_TFTCTL, TFTCTL_TSFSYNCEN); @@ -324,6 +326,7 @@ bool CARDbSetBeaconPeriod(struct vnt_private *priv, unsigned short wBeaconInterval) { u64 qwNextTBTT; + __le64 le_qwNextTBTT = 0; qwNextTBTT = vt6655_get_current_tsf(priv); /* Get Local TSF counter */ @@ -333,7 +336,8 @@ bool CARDbSetBeaconPeriod(struct vnt_private *priv, iowrite16(wBeaconInterval, priv->port_offset + MAC_REG_BI); priv->wBeaconInterval = wBeaconInterval; /* Set NextTBTT */ - qwNextTBTT = le64_to_cpu(qwNextTBTT); + le_qwNextTBTT = cpu_to_le64(qwNextTBTT); + qwNextTBTT = le64_to_cpu(le_qwNextTBTT); iowrite32((u32)qwNextTBTT, priv->port_offset + MAC_REG_NEXTTBTT); iowrite32((u32)(qwNextTBTT >> 32), priv->port_offset + MAC_REG_NEXTTBTT + 4); vt6655_mac_reg_bits_on(priv->port_offset, MAC_REG_TFTCTL, TFTCTL_TBTTSYNCEN); @@ -796,12 +800,14 @@ void CARDvSetFirstNextTBTT(struct vnt_private *priv, { void __iomem *iobase = priv->port_offset; u64 qwNextTBTT; + __le64 le_qwNextTBTT = 0; qwNextTBTT = vt6655_get_current_tsf(priv); /* Get Local TSF counter */ qwNextTBTT = CARDqGetNextTBTT(qwNextTBTT, wBeaconInterval); /* Set NextTBTT */ - qwNextTBTT = le64_to_cpu(qwNextTBTT); + le_qwNextTBTT = cpu_to_le64(qwNextTBTT); + qwNextTBTT = le64_to_cpu(le_qwNextTBTT); iowrite32((u32)qwNextTBTT, iobase + MAC_REG_NEXTTBTT); iowrite32((u32)(qwNextTBTT >> 32), iobase + MAC_REG_NEXTTBTT + 4); vt6655_mac_reg_bits_on(iobase, MAC_REG_TFTCTL, TFTCTL_TBTTSYNCEN); @@ -825,10 +831,12 @@ void CARDvUpdateNextTBTT(struct vnt_private *priv, u64 qwTSF, unsigned short wBeaconInterval) { void __iomem *iobase = priv->port_offset; + __le64 le_qwTSF = 0; qwTSF = CARDqGetNextTBTT(qwTSF, wBeaconInterval); /* Set NextTBTT */ - qwTSF = le64_to_cpu(qwTSF); + le_qwTSF = cpu_to_le64(qwTSF); + qwTSF = le64_to_cpu(le_qwTSF); iowrite32((u32)qwTSF, iobase + MAC_REG_NEXTTBTT); iowrite32((u32)(qwTSF >> 32), iobase + MAC_REG_NEXTTBTT + 4); vt6655_mac_reg_bits_on(iobase, MAC_REG_TFTCTL, TFTCTL_TBTTSYNCEN); -- 2.25.1