staging: fieldbus: anybus-s: keep device bus id in bus endianness
authorSven Van Asbroeck <thesven73@gmail.com>
Tue, 30 Apr 2019 15:25:14 +0000 (11:25 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 30 Apr 2019 15:40:34 +0000 (17:40 +0200)
"Normal" bus structures such as USB or PCI keep device bus ids
in bus endinanness, and driver bus ids in host endianness.
Endianness conversion happens each time bus_match() is called.

Modify anybus-s to conform to this pattern. As a pleasant side-
effect, sparse warnings will now disappear.

This was suggested by Al Viro.

Link: https://lkml.org/lkml/2019/4/30/834
Signed-off-by: Sven Van Asbroeck <TheSven73@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/fieldbus/anybuss/anybuss-client.h
drivers/staging/fieldbus/anybuss/host.c

index 2e48fb8..dce60f8 100644 (file)
@@ -17,7 +17,7 @@ struct anybuss_host;
 struct anybuss_client {
        struct device dev;
        struct anybuss_host *host;
-       u16 fieldbus_type;
+       __be16 fieldbus_type;
        /*
         * these can be optionally set by the client to receive event
         * notifications from the host.
index e34d424..a153b0f 100644 (file)
@@ -1173,7 +1173,7 @@ static int anybus_bus_match(struct device *dev,
        struct anybuss_client *adev =
                to_anybuss_client(dev);
 
-       return adrv->fieldbus_type == adev->fieldbus_type;
+       return adrv->fieldbus_type == be16_to_cpu(adev->fieldbus_type);
 }
 
 static int anybus_bus_probe(struct device *dev)
@@ -1264,7 +1264,7 @@ anybuss_host_common_probe(struct device *dev,
 {
        int ret, i;
        u8 val[4];
-       u16 fieldbus_type;
+       __be16 fieldbus_type;
        struct anybuss_host *cd;
 
        cd = devm_kzalloc(dev, sizeof(*cd), GFP_KERNEL);
@@ -1348,8 +1348,7 @@ anybuss_host_common_probe(struct device *dev,
        add_device_randomness(&val, 4);
        regmap_bulk_read(cd->regmap, REG_FIELDBUS_TYPE, &fieldbus_type,
                         sizeof(fieldbus_type));
-       fieldbus_type = be16_to_cpu(fieldbus_type);
-       dev_info(dev, "Fieldbus type: %04X", fieldbus_type);
+       dev_info(dev, "Fieldbus type: %04X", be16_to_cpu(fieldbus_type));
        regmap_bulk_read(cd->regmap, REG_MODULE_SW_V, val, 2);
        dev_info(dev, "Module SW version: %02X%02X",
                 val[0], val[1]);