[ARM] rtc-pcf8583: don't use BCD_TO_BIN/BIN_TO_BCD

Both BCD_TO_BIN(x) and BIN_TO_BCD(x) have an unexpected side-effect -
not only do they return the value as expected, they _modify_ their
argument in the process.

Let's play it safe and avoid these macros.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>

authored by Russell King and committed by Russell King f5e5b734 c5eb2a2b

+10 -10
+10 -10
drivers/rtc/rtc-pcf8583.c
··· 81 buf[4] &= 0x3f; 82 buf[5] &= 0x1f; 83 84 - dt->tm_sec = BCD_TO_BIN(buf[1]); 85 - dt->tm_min = BCD_TO_BIN(buf[2]); 86 - dt->tm_hour = BCD_TO_BIN(buf[3]); 87 - dt->tm_mday = BCD_TO_BIN(buf[4]); 88 - dt->tm_mon = BCD_TO_BIN(buf[5]); 89 } 90 91 return ret == 2 ? 0 : -EIO; ··· 99 buf[0] = 0; 100 buf[1] = get_ctrl(client) | 0x80; 101 buf[2] = 0; 102 - buf[3] = BIN_TO_BCD(dt->tm_sec); 103 - buf[4] = BIN_TO_BCD(dt->tm_min); 104 - buf[5] = BIN_TO_BCD(dt->tm_hour); 105 106 if (datetoo) { 107 len = 8; 108 - buf[6] = BIN_TO_BCD(dt->tm_mday) | (dt->tm_year << 6); 109 - buf[7] = BIN_TO_BCD(dt->tm_mon) | (dt->tm_wday << 5); 110 } 111 112 ret = i2c_master_send(client, (char *)buf, len);
··· 81 buf[4] &= 0x3f; 82 buf[5] &= 0x1f; 83 84 + dt->tm_sec = BCD2BIN(buf[1]); 85 + dt->tm_min = BCD2BIN(buf[2]); 86 + dt->tm_hour = BCD2BIN(buf[3]); 87 + dt->tm_mday = BCD2BIN(buf[4]); 88 + dt->tm_mon = BCD2BIN(buf[5]); 89 } 90 91 return ret == 2 ? 0 : -EIO; ··· 99 buf[0] = 0; 100 buf[1] = get_ctrl(client) | 0x80; 101 buf[2] = 0; 102 + buf[3] = BIN2BCD(dt->tm_sec); 103 + buf[4] = BIN2BCD(dt->tm_min); 104 + buf[5] = BIN2BCD(dt->tm_hour); 105 106 if (datetoo) { 107 len = 8; 108 + buf[6] = BIN2BCD(dt->tm_mday) | (dt->tm_year << 6); 109 + buf[7] = BIN2BCD(dt->tm_mon) | (dt->tm_wday << 5); 110 } 111 112 ret = i2c_master_send(client, (char *)buf, len);