Skip to content
Permalink
Browse files
usb: early: xhci-dbc: Move cpu_to_le16_array() to core
It's used in USB but it might be useful for other drivers as well.
While at it, introduce a counterpart helper, i.e. le16_to_cpu_array().

Make them available through byteorder/generic.h.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
  • Loading branch information
andy-shev authored and intel-lab-lkp committed Aug 17, 2020
1 parent 662ff60 commit 379f669600c31fef2fa3b729ebb9ecf706d69621
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 11 deletions.
@@ -9,6 +9,7 @@

#define pr_fmt(fmt) KBUILD_MODNAME ":%s: " fmt, __func__

#include <linux/byteorder/generic.h>
#include <linux/console.h>
#include <linux/pci_regs.h>
#include <linux/pci_ids.h>
@@ -200,14 +201,6 @@ static void xdbc_reset_ring(struct xdbc_ring *ring)
}
}

static inline void xdbc_put_utf16(u16 *s, const char *c, size_t size)
{
int i;

for (i = 0; i < size; i++)
s[i] = cpu_to_le16(c[i]);
}

static void xdbc_mem_init(void)
{
struct xdbc_ep_context *ep_in, *ep_out;
@@ -263,7 +256,7 @@ static void xdbc_mem_init(void)
s_desc->bLength = (strlen(XDBC_STRING_SERIAL) + 1) * 2;
s_desc->bDescriptorType = USB_DT_STRING;

xdbc_put_utf16(s_desc->wData, XDBC_STRING_SERIAL, strlen(XDBC_STRING_SERIAL));
cpu_to_le16_array(s_desc->wData, XDBC_STRING_SERIAL, strlen(XDBC_STRING_SERIAL));
string_length = s_desc->bLength;
string_length <<= 8;

@@ -272,7 +265,7 @@ static void xdbc_mem_init(void)
s_desc->bLength = (strlen(XDBC_STRING_PRODUCT) + 1) * 2;
s_desc->bDescriptorType = USB_DT_STRING;

xdbc_put_utf16(s_desc->wData, XDBC_STRING_PRODUCT, strlen(XDBC_STRING_PRODUCT));
cpu_to_le16_array(s_desc->wData, XDBC_STRING_PRODUCT, strlen(XDBC_STRING_PRODUCT));
string_length += s_desc->bLength;
string_length <<= 8;

@@ -281,7 +274,7 @@ static void xdbc_mem_init(void)
s_desc->bLength = (strlen(XDBC_STRING_MANUFACTURER) + 1) * 2;
s_desc->bDescriptorType = USB_DT_STRING;

xdbc_put_utf16(s_desc->wData, XDBC_STRING_MANUFACTURER, strlen(XDBC_STRING_MANUFACTURER));
cpu_to_le16_array(s_desc->wData, XDBC_STRING_MANUFACTURER, strlen(XDBC_STRING_MANUFACTURER));
string_length += s_desc->bLength;
string_length <<= 8;

@@ -156,6 +156,22 @@ static inline void le64_add_cpu(__le64 *var, u64 val)
*var = cpu_to_le64(le64_to_cpu(*var) + val);
}

static inline void cpu_to_le16_array(__le16 *dst, const u16 *src, size_t len)
{
int i;

for (i = 0; i < len; i++)
dst[i] = cpu_to_le16(src[i]);
}

static inline void le16_to_cpu_array(u16 *dst, const __le16 *src, size_t len)
{
int i;

for (i = 0; i < len; i++)
dst[i] = le16_to_cpu(src[i]);
}

/* XXX: this stuff can be optimized */
static inline void le32_to_cpu_array(u32 *buf, unsigned int words)
{

0 comments on commit 379f669

Please sign in to comment.