diff options
Diffstat (limited to 'drivers/media/video/em28xx/em28xx-video.c')
-rw-r--r-- | drivers/media/video/em28xx/em28xx-video.c | 32 |
1 files changed, 14 insertions, 18 deletions
diff --git a/drivers/media/video/em28xx/em28xx-video.c b/drivers/media/video/em28xx/em28xx-video.c index 8996175cc950..285bc62bbe46 100644 --- a/drivers/media/video/em28xx/em28xx-video.c +++ b/drivers/media/video/em28xx/em28xx-video.c | |||
@@ -1166,13 +1166,13 @@ static int vidioc_g_register(struct file *file, void *priv, | |||
1166 | 1166 | ||
1167 | reg->val = ret; | 1167 | reg->val = ret; |
1168 | } else { | 1168 | } else { |
1169 | u64 val = 0; | 1169 | __le64 val = 0; |
1170 | ret = em28xx_read_reg_req_len(dev, USB_REQ_GET_STATUS, | 1170 | ret = em28xx_read_reg_req_len(dev, USB_REQ_GET_STATUS, |
1171 | reg->reg, (char *)&val, 2); | 1171 | reg->reg, (char *)&val, 2); |
1172 | if (ret < 0) | 1172 | if (ret < 0) |
1173 | return ret; | 1173 | return ret; |
1174 | 1174 | ||
1175 | reg->val = cpu_to_le64((__u64)val); | 1175 | reg->val = le64_to_cpu(val); |
1176 | } | 1176 | } |
1177 | 1177 | ||
1178 | return 0; | 1178 | return 0; |
@@ -1183,9 +1183,9 @@ static int vidioc_s_register(struct file *file, void *priv, | |||
1183 | { | 1183 | { |
1184 | struct em28xx_fh *fh = priv; | 1184 | struct em28xx_fh *fh = priv; |
1185 | struct em28xx *dev = fh->dev; | 1185 | struct em28xx *dev = fh->dev; |
1186 | u64 buf; | 1186 | __le64 buf; |
1187 | 1187 | ||
1188 | buf = le64_to_cpu((__u64)reg->val); | 1188 | buf = cpu_to_le64(reg->val); |
1189 | 1189 | ||
1190 | return em28xx_write_regs(dev, reg->reg, (char *)&buf, | 1190 | return em28xx_write_regs(dev, reg->reg, (char *)&buf, |
1191 | em28xx_reg_len(reg->reg)); | 1191 | em28xx_reg_len(reg->reg)); |
@@ -1848,32 +1848,28 @@ static DEFINE_MUTEX(em28xx_extension_devlist_lock); | |||
1848 | 1848 | ||
1849 | int em28xx_register_extension(struct em28xx_ops *ops) | 1849 | int em28xx_register_extension(struct em28xx_ops *ops) |
1850 | { | 1850 | { |
1851 | struct em28xx *h, *dev = NULL; | 1851 | struct em28xx *dev = NULL; |
1852 | |||
1853 | list_for_each_entry(h, &em28xx_devlist, devlist) | ||
1854 | dev = h; | ||
1855 | 1852 | ||
1856 | mutex_lock(&em28xx_extension_devlist_lock); | 1853 | mutex_lock(&em28xx_extension_devlist_lock); |
1857 | list_add_tail(&ops->next, &em28xx_extension_devlist); | 1854 | list_add_tail(&ops->next, &em28xx_extension_devlist); |
1858 | if (dev) | 1855 | list_for_each_entry(dev, &em28xx_devlist, devlist) { |
1859 | ops->init(dev); | 1856 | if (dev) |
1860 | 1857 | ops->init(dev); | |
1858 | } | ||
1861 | printk(KERN_INFO "Em28xx: Initialized (%s) extension\n", ops->name); | 1859 | printk(KERN_INFO "Em28xx: Initialized (%s) extension\n", ops->name); |
1862 | mutex_unlock(&em28xx_extension_devlist_lock); | 1860 | mutex_unlock(&em28xx_extension_devlist_lock); |
1863 | |||
1864 | return 0; | 1861 | return 0; |
1865 | } | 1862 | } |
1866 | EXPORT_SYMBOL(em28xx_register_extension); | 1863 | EXPORT_SYMBOL(em28xx_register_extension); |
1867 | 1864 | ||
1868 | void em28xx_unregister_extension(struct em28xx_ops *ops) | 1865 | void em28xx_unregister_extension(struct em28xx_ops *ops) |
1869 | { | 1866 | { |
1870 | struct em28xx *h, *dev = NULL; | 1867 | struct em28xx *dev = NULL; |
1871 | |||
1872 | list_for_each_entry(h, &em28xx_devlist, devlist) | ||
1873 | dev = h; | ||
1874 | 1868 | ||
1875 | if (dev) | 1869 | list_for_each_entry(dev, &em28xx_devlist, devlist) { |
1876 | ops->fini(dev); | 1870 | if (dev) |
1871 | ops->fini(dev); | ||
1872 | } | ||
1877 | 1873 | ||
1878 | mutex_lock(&em28xx_extension_devlist_lock); | 1874 | mutex_lock(&em28xx_extension_devlist_lock); |
1879 | printk(KERN_INFO "Em28xx: Removed (%s) extension\n", ops->name); | 1875 | printk(KERN_INFO "Em28xx: Removed (%s) extension\n", ops->name); |