static int tps23861_port_resistance(struct tps23861_data *data, int port)
 {
-       u16 regval;
+       unsigned int raw_val;
+       __le16 regval;
 
        regmap_bulk_read(data->regmap,
                         PORT_1_RESISTANCE_LSB + PORT_N_RESISTANCE_LSB_OFFSET * (port - 1),
                         ®val,
                         2);
 
-       switch (FIELD_GET(PORT_RESISTANCE_RSN_MASK, regval)) {
+       raw_val = le16_to_cpu(regval);
+       switch (FIELD_GET(PORT_RESISTANCE_RSN_MASK, raw_val)) {
        case PORT_RESISTANCE_RSN_OTHER:
-               return (FIELD_GET(PORT_RESISTANCE_MASK, regval) * RESISTANCE_LSB) / 10000;
+               return (FIELD_GET(PORT_RESISTANCE_MASK, raw_val) * RESISTANCE_LSB) / 10000;
        case PORT_RESISTANCE_RSN_LOW:
-               return (FIELD_GET(PORT_RESISTANCE_MASK, regval) * RESISTANCE_LSB_LOW) / 10000;
+               return (FIELD_GET(PORT_RESISTANCE_MASK, raw_val) * RESISTANCE_LSB_LOW) / 10000;
        case PORT_RESISTANCE_RSN_SHORT:
        case PORT_RESISTANCE_RSN_OPEN:
        default: