[media] s2255: fix big-endian support
authorHans Verkuil <hans.verkuil@cisco.com>
Tue, 26 Feb 2013 17:14:19 +0000 (14:14 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 5 Mar 2013 18:42:30 +0000 (15:42 -0300)
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/usb/s2255/s2255drv.c

index cd06f3cc4f98baf930726c04eba9fce7a77e5cba..2bd86132d3e38069599c49bcd0cff361e4f01567 100644 (file)
@@ -522,7 +522,7 @@ static void s2255_timer(unsigned long user_data)
 
 
 /* this loads the firmware asynchronously.
-   Originally this was done synchroously in probe.
+   Originally this was done synchronously in probe.
    But it is better to load it asynchronously here than block
    inside the probe function. Blocking inside probe affects boot time.
    FW loading is triggered by the timer in the probe function
@@ -1157,6 +1157,8 @@ static int s2255_set_mode(struct s2255_channel *channel,
        __le32 *buffer;
        unsigned long chn_rev;
        struct s2255_dev *dev = to_s2255_dev(channel->vdev.v4l2_dev);
+       int i;
+
        chn_rev = G_chnmap[channel->idx];
        dprintk(3, "%s channel: %d\n", __func__, channel->idx);
        /* if JPEG, set the quality */
@@ -1179,7 +1181,8 @@ static int s2255_set_mode(struct s2255_channel *channel,
        buffer[0] = IN_DATA_TOKEN;
        buffer[1] = (__le32) cpu_to_le32(chn_rev);
        buffer[2] = CMD_SET_MODE;
-       memcpy(&buffer[3], &channel->mode, sizeof(struct s2255_mode));
+       for (i = 0; i < sizeof(struct s2255_mode) / sizeof(u32); i++)
+               buffer[3 + i] = cpu_to_le32(((u32 *)&channel->mode)[i]);
        channel->setmode_ready = 0;
        res = s2255_write_config(dev->udev, (unsigned char *)buffer, 512);
        if (debug)
@@ -2511,7 +2514,7 @@ static int s2255_probe(struct usb_interface *interface,
                return -ENOMEM;
        }
        atomic_set(&dev->num_channels, 0);
-       dev->pid = id->idProduct;
+       dev->pid = le16_to_cpu(id->idProduct);
        dev->fw_data = kzalloc(sizeof(struct s2255_fw), GFP_KERNEL);
        if (!dev->fw_data)
                goto errorFWDATA1;
@@ -2581,7 +2584,7 @@ static int s2255_probe(struct usb_interface *interface,
                /* make sure firmware is the latest */
                __le32 *pRel;
                pRel = (__le32 *) &dev->fw_data->fw->data[fw_size - 4];
-               printk(KERN_INFO "s2255 dsp fw version %x\n", *pRel);
+               printk(KERN_INFO "s2255 dsp fw version %x\n", le32_to_cpu(*pRel));
                dev->dsp_fw_ver = le32_to_cpu(*pRel);
                if (dev->dsp_fw_ver < S2255_CUR_DSP_FWVER)
                        printk(KERN_INFO "s2255: f2255usb.bin out of date.\n");