diff options
author | Christian Gromm <christian.gromm@microchip.com> | 2015-09-28 17:18:41 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-09-29 03:18:50 +0200 |
commit | 1ea7e502c425605a7ae5417085f21e8a2b09297c (patch) | |
tree | 8e34e0253fec5ef9cda3dfdbef18841a611b6673 /drivers/staging/most | |
parent | c31d9d12ef5b6937d8399fa9ede2bb11dc225363 (diff) | |
download | blackbird-obmc-linux-1ea7e502c425605a7ae5417085f21e8a2b09297c.tar.gz blackbird-obmc-linux-1ea7e502c425605a7ae5417085f21e8a2b09297c.zip |
staging: most: fix MAC address representation
This patch fixes the representation of the MAC address within the HDM USB
module.
Signed-off-by: Andrey Shvetsov <andrey.shvetsov@k2l.de>
Signed-off-by: Christian Gromm <christian.gromm@microchip.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/most')
-rw-r--r-- | drivers/staging/most/hdm-usb/hdm_usb.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/drivers/staging/most/hdm-usb/hdm_usb.c b/drivers/staging/most/hdm-usb/hdm_usb.c index a9da92f14b24..315abeca7e56 100644 --- a/drivers/staging/most/hdm-usb/hdm_usb.c +++ b/drivers/staging/most/hdm-usb/hdm_usb.c @@ -790,29 +790,37 @@ exit: static int hdm_update_netinfo(struct most_dev *mdev) { struct device *dev = &mdev->usb_device->dev; - int i; - u16 link; - u8 addr[6]; + u16 hi, mi, lo, link; if (!is_valid_ether_addr(mdev->hw_addr)) { if (0 > drci_rd_reg(mdev->usb_device, - DRCI_REG_HW_ADDR_HI, addr)) { + DRCI_REG_HW_ADDR_HI, &hi)) { dev_err(dev, "Vendor request \"hw_addr_hi\" failed\n"); return -1; } + le16_to_cpus(&hi); + if (0 > drci_rd_reg(mdev->usb_device, - DRCI_REG_HW_ADDR_MI, addr + 2)) { + DRCI_REG_HW_ADDR_MI, &mi)) { dev_err(dev, "Vendor request \"hw_addr_mid\" failed\n"); return -1; } + le16_to_cpus(&mi); + if (0 > drci_rd_reg(mdev->usb_device, - DRCI_REG_HW_ADDR_LO, addr + 4)) { + DRCI_REG_HW_ADDR_LO, &lo)) { dev_err(dev, "Vendor request \"hw_addr_low\" failed\n"); return -1; } + le16_to_cpus(&lo); + mutex_lock(&mdev->io_mutex); - for (i = 0; i < 6; i++) - mdev->hw_addr[i] = addr[i]; + mdev->hw_addr[0] = hi >> 8; + mdev->hw_addr[1] = hi; + mdev->hw_addr[2] = mi >> 8; + mdev->hw_addr[3] = mi; + mdev->hw_addr[4] = lo >> 8; + mdev->hw_addr[5] = lo; mutex_unlock(&mdev->io_mutex); } |