Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a5abdeaf authored by Harvey Harrison's avatar Harvey Harrison Committed by Linus Torvalds
Browse files

usb: use get/put_unaligned_* helpers



Signed-off-by: default avatarHarvey Harrison <harvey.harrison@gmail.com>
Acked-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
Cc: Alan Stern <stern@rowland.harvard.edu>
Cc: David Brownell <dbrownell@users.sourceforge.net>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 6b1e6f63
Loading
Loading
Loading
Loading
+23 −25
Original line number Diff line number Diff line
@@ -305,8 +305,6 @@ enum {
 */

#define FW_GET_BYTE(p)	*((__u8 *) (p))
#define FW_GET_WORD(p)	le16_to_cpu(get_unaligned((__le16 *) (p)))
#define FW_GET_LONG(p)	le32_to_cpu(get_unaligned((__le32 *) (p)))

#define FW_DIR "ueagle-atm/"
#define NB_MODEM 4
@@ -621,7 +619,7 @@ static void uea_upload_pre_firmware(const struct firmware *fw_entry, void *conte
	if (size < 4)
		goto err_fw_corrupted;

	crc = FW_GET_LONG(pfw);
	crc = get_unaligned_le32(pfw);
	pfw += 4;
	size -= 4;
	if (crc32_be(0, pfw, size) != crc)
@@ -640,7 +638,7 @@ static void uea_upload_pre_firmware(const struct firmware *fw_entry, void *conte

	while (size > 3) {
		u8 len = FW_GET_BYTE(pfw);
		u16 add = FW_GET_WORD(pfw + 1);
		u16 add = get_unaligned_le16(pfw + 1);

		size -= len + 3;
		if (size < 0)
@@ -738,7 +736,7 @@ static int check_dsp_e1(u8 *dsp, unsigned int len)

	for (i = 0; i < pagecount; i++) {

		pageoffset = FW_GET_LONG(dsp + p);
		pageoffset = get_unaligned_le32(dsp + p);
		p += 4;

		if (pageoffset == 0)
@@ -759,7 +757,7 @@ static int check_dsp_e1(u8 *dsp, unsigned int len)
				return 1;

			pp += 2;	/* skip blockaddr */
			blocksize = FW_GET_WORD(dsp + pp);
			blocksize = get_unaligned_le16(dsp + pp);
			pp += 2;

			/* enough space for block data? */
@@ -928,7 +926,7 @@ static void uea_load_page_e1(struct work_struct *work)
		goto bad1;

	p += 4 * pageno;
	pageoffset = FW_GET_LONG(p);
	pageoffset = get_unaligned_le32(p);

	if (pageoffset == 0)
		goto bad1;
@@ -945,10 +943,10 @@ static void uea_load_page_e1(struct work_struct *work)
	bi.wOvlOffset = cpu_to_le16(ovl | 0x8000);

	for (i = 0; i < blockcount; i++) {
		blockaddr = FW_GET_WORD(p);
		blockaddr = get_unaligned_le16(p);
		p += 2;

		blocksize = FW_GET_WORD(p);
		blocksize = get_unaligned_le16(p);
		p += 2;

		bi.wSize = cpu_to_le16(blocksize);
@@ -1152,9 +1150,9 @@ static int uea_cmv_e1(struct uea_softc *sc,
	cmv.bDirection = E1_HOSTTOMODEM;
	cmv.bFunction = function;
	cmv.wIndex = cpu_to_le16(sc->cmv_dsc.e1.idx);
	put_unaligned(cpu_to_le32(address), &cmv.dwSymbolicAddress);
	put_unaligned_le32(address, &cmv.dwSymbolicAddress);
	cmv.wOffsetAddress = cpu_to_le16(offset);
	put_unaligned(cpu_to_le32(data >> 16 | data << 16), &cmv.dwData);
	put_unaligned_le32(data >> 16 | data << 16, &cmv.dwData);

	ret = uea_request(sc, UEA_E1_SET_BLOCK, UEA_MPTX_START, sizeof(cmv), &cmv);
	if (ret < 0)
@@ -1646,7 +1644,7 @@ static int request_cmvs(struct uea_softc *sc,
	if (size < 5)
		goto err_fw_corrupted;

	crc = FW_GET_LONG(data);
	crc = get_unaligned_le32(data);
	data += 4;
	size -= 4;
	if (crc32_be(0, data, size) != crc)
@@ -1696,9 +1694,9 @@ static int uea_send_cmvs_e1(struct uea_softc *sc)
			"please update your firmware\n");

		for (i = 0; i < len; i++) {
			ret = uea_write_cmv_e1(sc, FW_GET_LONG(&cmvs_v1[i].address),
						FW_GET_WORD(&cmvs_v1[i].offset),
						FW_GET_LONG(&cmvs_v1[i].data));
			ret = uea_write_cmv_e1(sc, get_unaligned_le32(&cmvs_v1[i].address),
						get_unaligned_le16(&cmvs_v1[i].offset),
						get_unaligned_le32(&cmvs_v1[i].data));
			if (ret < 0)
				goto out;
		}
@@ -1706,9 +1704,9 @@ static int uea_send_cmvs_e1(struct uea_softc *sc)
		struct uea_cmvs_v2 *cmvs_v2 = cmvs_ptr;

		for (i = 0; i < len; i++) {
			ret = uea_write_cmv_e1(sc, FW_GET_LONG(&cmvs_v2[i].address),
						(u16) FW_GET_LONG(&cmvs_v2[i].offset),
						FW_GET_LONG(&cmvs_v2[i].data));
			ret = uea_write_cmv_e1(sc, get_unaligned_le32(&cmvs_v2[i].address),
						(u16) get_unaligned_le32(&cmvs_v2[i].offset),
						get_unaligned_le32(&cmvs_v2[i].data));
			if (ret < 0)
				goto out;
		}
@@ -1759,10 +1757,10 @@ static int uea_send_cmvs_e4(struct uea_softc *sc)

		for (i = 0; i < len; i++) {
			ret = uea_write_cmv_e4(sc, 1,
						FW_GET_LONG(&cmvs_v2[i].group),
						FW_GET_LONG(&cmvs_v2[i].address),
						FW_GET_LONG(&cmvs_v2[i].offset),
						FW_GET_LONG(&cmvs_v2[i].data));
						get_unaligned_le32(&cmvs_v2[i].group),
						get_unaligned_le32(&cmvs_v2[i].address),
						get_unaligned_le32(&cmvs_v2[i].offset),
						get_unaligned_le32(&cmvs_v2[i].data));
			if (ret < 0)
				goto out;
		}
@@ -1964,7 +1962,7 @@ static void uea_dispatch_cmv_e1(struct uea_softc *sc, struct intr_pkt *intr)
		if (UEA_CHIP_VERSION(sc) == ADI930
				&& cmv->bFunction ==  E1_MAKEFUNCTION(2, 2)) {
			cmv->wIndex = cpu_to_le16(dsc->idx);
			put_unaligned(cpu_to_le32(dsc->address), &cmv->dwSymbolicAddress);
			put_unaligned_le32(dsc->address, &cmv->dwSymbolicAddress);
			cmv->wOffsetAddress = cpu_to_le16(dsc->offset);
		} else
			goto bad2;
@@ -1978,11 +1976,11 @@ static void uea_dispatch_cmv_e1(struct uea_softc *sc, struct intr_pkt *intr)

	/* in case of MEMACCESS */
	if (le16_to_cpu(cmv->wIndex) != dsc->idx ||
	    le32_to_cpu(get_unaligned(&cmv->dwSymbolicAddress)) != dsc->address ||
	    get_unaligned_le32(&cmv->dwSymbolicAddress) != dsc->address ||
	    le16_to_cpu(cmv->wOffsetAddress) != dsc->offset)
		goto bad2;

	sc->data = le32_to_cpu(get_unaligned(&cmv->dwData));
	sc->data = get_unaligned_le32(&cmv->dwData);
	sc->data = sc->data << 16 | sc->data >> 16;

	wake_up_cmv_ack(sc);
+1 −1
Original line number Diff line number Diff line
@@ -280,7 +280,7 @@ static void acm_ctrl_irq(struct urb *urb)

		case USB_CDC_NOTIFY_SERIAL_STATE:

			newctrl = le16_to_cpu(get_unaligned((__le16 *) data));
			newctrl = get_unaligned_le16(data);

			if (acm->tty && !acm->clocal && (acm->ctrlin & ~newctrl & ACM_CTRL_DCD)) {
				dbg("calling hangup");
+1 −1
Original line number Diff line number Diff line
@@ -127,7 +127,7 @@ goku_ep_enable(struct usb_ep *_ep, const struct usb_endpoint_descriptor *desc)

	/* enabling the no-toggle interrupt mode would need an api hook */
	mode = 0;
	max = le16_to_cpu(get_unaligned(&desc->wMaxPacketSize));
	max = get_unaligned_le16(&desc->wMaxPacketSize);
	switch (max) {
	case 64:	mode++;
	case 32:	mode++;
+15 −25
Original line number Diff line number Diff line
@@ -183,14 +183,10 @@ gen_ndis_query_resp (int configNr, u32 OID, u8 *buf, unsigned buf_len,
		DBG("query OID %08x value, len %d:\n", OID, buf_len);
		for (i = 0; i < buf_len; i += 16) {
			DBG("%03d: %08x %08x %08x %08x\n", i,
				le32_to_cpu(get_unaligned((__le32 *)
					&buf[i])),
				le32_to_cpu(get_unaligned((__le32 *)
					&buf[i + 4])),
				le32_to_cpu(get_unaligned((__le32 *)
					&buf[i + 8])),
				le32_to_cpu(get_unaligned((__le32 *)
					&buf[i + 12])));
				get_unaligned_le32(&buf[i]),
				get_unaligned_le32(&buf[i + 4]),
				get_unaligned_le32(&buf[i + 8]),
				get_unaligned_le32(&buf[i + 12]));
		}
	}

@@ -666,7 +662,7 @@ gen_ndis_query_resp (int configNr, u32 OID, u8 *buf, unsigned buf_len,
		break;
	case OID_PNP_QUERY_POWER:
		DBG("%s: OID_PNP_QUERY_POWER D%d\n", __func__,
				le32_to_cpu(get_unaligned((__le32 *)buf)) - 1);
				get_unaligned_le32(buf) - 1);
		/* only suspend is a real power state, and
		 * it can't be entered by OID_PNP_SET_POWER...
		 */
@@ -705,14 +701,10 @@ static int gen_ndis_set_resp (u8 configNr, u32 OID, u8 *buf, u32 buf_len,
		DBG("set OID %08x value, len %d:\n", OID, buf_len);
		for (i = 0; i < buf_len; i += 16) {
			DBG("%03d: %08x %08x %08x %08x\n", i,
				le32_to_cpu(get_unaligned((__le32 *)
					&buf[i])),
				le32_to_cpu(get_unaligned((__le32 *)
					&buf[i + 4])),
				le32_to_cpu(get_unaligned((__le32 *)
					&buf[i + 8])),
				le32_to_cpu(get_unaligned((__le32 *)
					&buf[i + 12])));
				get_unaligned_le32(&buf[i]),
				get_unaligned_le32(&buf[i + 4]),
				get_unaligned_le32(&buf[i + 8]),
				get_unaligned_le32(&buf[i + 12]));
		}
	}

@@ -726,8 +718,7 @@ static int gen_ndis_set_resp (u8 configNr, u32 OID, u8 *buf, u32 buf_len,
		 *	PROMISCUOUS, DIRECTED,
		 *	MULTICAST, ALL_MULTICAST, BROADCAST
		 */
		*params->filter = (u16) le32_to_cpu(get_unaligned(
				(__le32 *)buf));
		*params->filter = (u16)get_unaligned_le32(buf);
		DBG("%s: OID_GEN_CURRENT_PACKET_FILTER %08x\n",
			__func__, *params->filter);

@@ -777,7 +768,7 @@ static int gen_ndis_set_resp (u8 configNr, u32 OID, u8 *buf, u32 buf_len,
		 * resuming, Windows forces a reset, and then SET_POWER D0.
		 * FIXME ... then things go batty; Windows wedges itself.
		 */
		i = le32_to_cpu(get_unaligned((__le32 *)buf));
		i = get_unaligned_le32(buf);
		DBG("%s: OID_PNP_SET_POWER D%d\n", __func__, i - 1);
		switch (i) {
		case NdisDeviceStateD0:
@@ -1064,8 +1055,8 @@ int rndis_msg_parser (u8 configNr, u8 *buf)
		return -ENOMEM;

	tmp = (__le32 *) buf;
	MsgType   = le32_to_cpu(get_unaligned(tmp++));
	MsgLength = le32_to_cpu(get_unaligned(tmp++));
	MsgType   = get_unaligned_le32(tmp++);
	MsgLength = get_unaligned_le32(tmp++);

	if (configNr >= RNDIS_MAX_CONFIGS)
		return -ENOTSUPP;
@@ -1296,10 +1287,9 @@ int rndis_rm_hdr(struct sk_buff *skb)
	tmp++;

	/* DataOffset, DataLength */
	if (!skb_pull(skb, le32_to_cpu(get_unaligned(tmp++))
			+ 8 /* offset of DataOffset */))
	if (!skb_pull(skb, get_unaligned_le32(tmp++) + 8))
		return -EOVERFLOW;
	skb_trim(skb, le32_to_cpu(get_unaligned(tmp++)));
	skb_trim(skb, get_unaligned_le32(tmp++));

	return 0;
}
+1 −1
Original line number Diff line number Diff line
@@ -74,7 +74,7 @@ static int utf8_to_utf16le(const char *s, __le16 *cp, unsigned len)
				goto fail;
		} else
			uchar = c;
		put_unaligned (cpu_to_le16 (uchar), cp++);
		put_unaligned_le16(uchar, cp++);
		count++;
		len--;
	}
Loading