Module Name:    src
Committed By:   rin
Date:           Tue Dec  1 04:14:31 UTC 2020

Modified Files:
        src/sys/arch/arm/broadcom: bcm283x_platform.c
        src/sys/arch/evbarm/rpi: rpi_vcmbox.c vcprop.h vcprop_subr.c

Log Message:
Data written to and read from bcmmbox(4) should be in little-endian.


To generate a diff of this commit:
cvs rdiff -u -r1.43 -r1.44 src/sys/arch/arm/broadcom/bcm283x_platform.c
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/evbarm/rpi/rpi_vcmbox.c
cvs rdiff -u -r1.18 -r1.19 src/sys/arch/evbarm/rpi/vcprop.h
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/evbarm/rpi/vcprop_subr.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/broadcom/bcm283x_platform.c
diff -u src/sys/arch/arm/broadcom/bcm283x_platform.c:1.43 src/sys/arch/arm/broadcom/bcm283x_platform.c:1.44
--- src/sys/arch/arm/broadcom/bcm283x_platform.c:1.43	Mon Nov 23 06:24:35 2020
+++ src/sys/arch/arm/broadcom/bcm283x_platform.c	Tue Dec  1 04:14:31 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm283x_platform.c,v 1.43 2020/11/23 06:24:35 rin Exp $	*/
+/*	$NetBSD: bcm283x_platform.c,v 1.44 2020/12/01 04:14:31 rin Exp $	*/
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill <jmcne...@invisible.ca>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.43 2020/11/23 06:24:35 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.44 2020/12/01 04:14:31 rin Exp $");
 
 #include "opt_arm_debug.h"
 #include "opt_bcm283x.h"
@@ -53,6 +53,7 @@ __KERNEL_RCSID(0, "$NetBSD: bcm283x_plat
 #include <sys/bus.h>
 #include <sys/cpu.h>
 #include <sys/device.h>
+#include <sys/endian.h>
 #include <sys/kmem.h>
 #include <sys/termios.h>
 
@@ -349,27 +350,28 @@ static struct {
 	struct vcprop_tag end;
 } vb_uart __cacheline_aligned = {
 	.vb_hdr = {
-		.vpb_len = sizeof(vb_uart),
-		.vpb_rcode = VCPROP_PROCESS_REQUEST,
+		.vpb_len = htole32(sizeof(vb_uart)),
+		.vpb_rcode = htole32(VCPROP_PROCESS_REQUEST),
 	},
 	.vbt_uartclockrate = {
 		.tag = {
-			.vpt_tag = VCPROPTAG_GET_CLOCKRATE,
-			.vpt_len = VCPROPTAG_LEN(vb_uart.vbt_uartclockrate),
-			.vpt_rcode = VCPROPTAG_REQUEST
+			.vpt_tag = htole32(VCPROPTAG_GET_CLOCKRATE),
+			.vpt_len =
+			    htole32(VCPROPTAG_LEN(vb_uart.vbt_uartclockrate)),
+			.vpt_rcode = htole32(VCPROPTAG_REQUEST)
 		},
-		.id = VCPROP_CLK_UART
+		.id = htole32(VCPROP_CLK_UART)
 	},
 	.vbt_vpuclockrate = {
 		.tag = {
-			.vpt_tag = VCPROPTAG_GET_CLOCKRATE,
-			.vpt_len = VCPROPTAG_LEN(vb_uart.vbt_vpuclockrate),
-			.vpt_rcode = VCPROPTAG_REQUEST
+			.vpt_tag = htole32(VCPROPTAG_GET_CLOCKRATE),
+			.vpt_len = htole32(VCPROPTAG_LEN(vb_uart.vbt_vpuclockrate)),
+			.vpt_rcode = htole32(VCPROPTAG_REQUEST)
 		},
-		.id = VCPROP_CLK_CORE
+		.id = htole32(VCPROP_CLK_CORE)
 	},
 	.end = {
-		.vpt_tag = VCPROPTAG_NULL
+		.vpt_tag = htole32(VCPROPTAG_NULL)
 	}
 };
 
@@ -390,99 +392,100 @@ static struct {
 	struct vcprop_tag end;
 } vb __cacheline_aligned = {
 	.vb_hdr = {
-		.vpb_len = sizeof(vb),
-		.vpb_rcode = VCPROP_PROCESS_REQUEST,
+		.vpb_len = htole32(sizeof(vb)),
+		.vpb_rcode = htole32(VCPROP_PROCESS_REQUEST),
 	},
 	.vbt_fwrev = {
 		.tag = {
-			.vpt_tag = VCPROPTAG_GET_FIRMWAREREV,
-			.vpt_len = VCPROPTAG_LEN(vb.vbt_fwrev),
-			.vpt_rcode = VCPROPTAG_REQUEST
+			.vpt_tag = htole32(VCPROPTAG_GET_FIRMWAREREV),
+			.vpt_len = htole32(VCPROPTAG_LEN(vb.vbt_fwrev)),
+			.vpt_rcode = htole32(VCPROPTAG_REQUEST)
 		},
 	},
 	.vbt_boardmodel = {
 		.tag = {
-			.vpt_tag = VCPROPTAG_GET_BOARDMODEL,
-			.vpt_len = VCPROPTAG_LEN(vb.vbt_boardmodel),
-			.vpt_rcode = VCPROPTAG_REQUEST
+			.vpt_tag = htole32(VCPROPTAG_GET_BOARDMODEL),
+			.vpt_len = htole32(VCPROPTAG_LEN(vb.vbt_boardmodel)),
+			.vpt_rcode = htole32(VCPROPTAG_REQUEST)
 		},
 	},
 	.vbt_boardrev = {
 		.tag = {
-			.vpt_tag = VCPROPTAG_GET_BOARDREVISION,
-			.vpt_len = VCPROPTAG_LEN(vb.vbt_boardrev),
-			.vpt_rcode = VCPROPTAG_REQUEST
+			.vpt_tag = htole32(VCPROPTAG_GET_BOARDREVISION),
+			.vpt_len = htole32(VCPROPTAG_LEN(vb.vbt_boardrev)),
+			.vpt_rcode = htole32(VCPROPTAG_REQUEST)
 		},
 	},
 	.vbt_macaddr = {
 		.tag = {
-			.vpt_tag = VCPROPTAG_GET_MACADDRESS,
-			.vpt_len = VCPROPTAG_LEN(vb.vbt_macaddr),
-			.vpt_rcode = VCPROPTAG_REQUEST
+			.vpt_tag = htole32(VCPROPTAG_GET_MACADDRESS),
+			.vpt_len = htole32(VCPROPTAG_LEN(vb.vbt_macaddr)),
+			.vpt_rcode = htole32(VCPROPTAG_REQUEST)
 		},
 	},
 	.vbt_memory = {
 		.tag = {
-			.vpt_tag = VCPROPTAG_GET_ARMMEMORY,
-			.vpt_len = VCPROPTAG_LEN(vb.vbt_memory),
-			.vpt_rcode = VCPROPTAG_REQUEST
+			.vpt_tag = htole32(VCPROPTAG_GET_ARMMEMORY),
+			.vpt_len = htole32(VCPROPTAG_LEN(vb.vbt_memory)),
+			.vpt_rcode = htole32(VCPROPTAG_REQUEST)
 		},
 	},
 	.vbt_serial = {
 		.tag = {
-			.vpt_tag = VCPROPTAG_GET_BOARDSERIAL,
-			.vpt_len = VCPROPTAG_LEN(vb.vbt_serial),
-			.vpt_rcode = VCPROPTAG_REQUEST
+			.vpt_tag = htole32(VCPROPTAG_GET_BOARDSERIAL),
+			.vpt_len = htole32(VCPROPTAG_LEN(vb.vbt_serial)),
+			.vpt_rcode = htole32(VCPROPTAG_REQUEST)
 		},
 	},
 	.vbt_dmachan = {
 		.tag = {
-			.vpt_tag = VCPROPTAG_GET_DMACHAN,
-			.vpt_len = VCPROPTAG_LEN(vb.vbt_dmachan),
-			.vpt_rcode = VCPROPTAG_REQUEST
+			.vpt_tag = htole32(VCPROPTAG_GET_DMACHAN),
+			.vpt_len = htole32(VCPROPTAG_LEN(vb.vbt_dmachan)),
+			.vpt_rcode = htole32(VCPROPTAG_REQUEST)
 		},
 	},
 	.vbt_cmdline = {
 		.tag = {
-			.vpt_tag = VCPROPTAG_GET_CMDLINE,
-			.vpt_len = VCPROPTAG_LEN(vb.vbt_cmdline),
-			.vpt_rcode = VCPROPTAG_REQUEST
+			.vpt_tag = htole32(VCPROPTAG_GET_CMDLINE),
+			.vpt_len = htole32(VCPROPTAG_LEN(vb.vbt_cmdline)),
+			.vpt_rcode = htole32(VCPROPTAG_REQUEST)
 		},
 	},
 	.vbt_emmcclockrate = {
 		.tag = {
-			.vpt_tag = VCPROPTAG_GET_CLOCKRATE,
-			.vpt_len = VCPROPTAG_LEN(vb.vbt_emmcclockrate),
-			.vpt_rcode = VCPROPTAG_REQUEST
+			.vpt_tag = htole32(VCPROPTAG_GET_CLOCKRATE),
+			.vpt_len = htole32(VCPROPTAG_LEN(vb.vbt_emmcclockrate)),
+			.vpt_rcode = htole32(VCPROPTAG_REQUEST)
 		},
-		.id = VCPROP_CLK_EMMC
+		.id = htole32(VCPROP_CLK_EMMC)
 	},
 	.vbt_armclockrate = {
 		.tag = {
-			.vpt_tag = VCPROPTAG_GET_CLOCKRATE,
-			.vpt_len = VCPROPTAG_LEN(vb.vbt_armclockrate),
-			.vpt_rcode = VCPROPTAG_REQUEST
+			.vpt_tag = htole32(VCPROPTAG_GET_CLOCKRATE),
+			.vpt_len = htole32(VCPROPTAG_LEN(vb.vbt_armclockrate)),
+			.vpt_rcode = htole32(VCPROPTAG_REQUEST)
 		},
-		.id = VCPROP_CLK_ARM
+		.id = htole32(VCPROP_CLK_ARM)
 	},
 	.vbt_vpuclockrate = {
 		.tag = {
-			.vpt_tag = VCPROPTAG_GET_CLOCKRATE,
-			.vpt_len = VCPROPTAG_LEN(vb.vbt_vpuclockrate),
-			.vpt_rcode = VCPROPTAG_REQUEST
+			.vpt_tag = htole32(VCPROPTAG_GET_CLOCKRATE),
+			.vpt_len = htole32(VCPROPTAG_LEN(vb.vbt_vpuclockrate)),
+			.vpt_rcode = htole32(VCPROPTAG_REQUEST)
 		},
-		.id = VCPROP_CLK_CORE
+		.id = htole32(VCPROP_CLK_CORE)
 	},
 	.vbt_emmc2clockrate = {
 		.tag = {
-			.vpt_tag = VCPROPTAG_GET_CLOCKRATE,
-			.vpt_len = VCPROPTAG_LEN(vb.vbt_emmc2clockrate),
-			.vpt_rcode = VCPROPTAG_REQUEST
+			.vpt_tag = htole32(VCPROPTAG_GET_CLOCKRATE),
+			.vpt_len =
+			    htole32(VCPROPTAG_LEN(vb.vbt_emmc2clockrate)),
+			.vpt_rcode = htole32(VCPROPTAG_REQUEST)
 		},
-		.id = VCPROP_CLK_EMMC2
+		.id = htole32(VCPROP_CLK_EMMC2)
 	},
 	.end = {
-		.vpt_tag = VCPROPTAG_NULL
+		.vpt_tag = htole32(VCPROPTAG_NULL)
 	}
 };
 
@@ -493,19 +496,19 @@ static struct {
 	struct vcprop_tag end;
 } vb_edid __cacheline_aligned = {
 	.vb_hdr = {
-		.vpb_len = sizeof(vb_edid),
-		.vpb_rcode = VCPROP_PROCESS_REQUEST,
+		.vpb_len = htole32(sizeof(vb_edid)),
+		.vpb_rcode = htole32(VCPROP_PROCESS_REQUEST),
 	},
 	.vbt_edid = {
 		.tag = {
-			.vpt_tag = VCPROPTAG_GET_EDID_BLOCK,
-			.vpt_len = VCPROPTAG_LEN(vb_edid.vbt_edid),
-			.vpt_rcode = VCPROPTAG_REQUEST,
+			.vpt_tag = htole32(VCPROPTAG_GET_EDID_BLOCK),
+			.vpt_len = htole32(VCPROPTAG_LEN(vb_edid.vbt_edid)),
+			.vpt_rcode = htole32(VCPROPTAG_REQUEST),
 		},
-		.blockno = 0,
+		.blockno = htole32(0),
 	},
 	.end = {
-		.vpt_tag = VCPROPTAG_NULL
+		.vpt_tag = htole32(VCPROPTAG_NULL)
 	}
 };
 
@@ -521,68 +524,69 @@ static struct {
 	struct vcprop_tag end;
 } vb_setfb __cacheline_aligned = {
 	.vb_hdr = {
-		.vpb_len = sizeof(vb_setfb),
-		.vpb_rcode = VCPROP_PROCESS_REQUEST,
+		.vpb_len = htole32(sizeof(vb_setfb)),
+		.vpb_rcode = htole32(VCPROP_PROCESS_REQUEST),
 	},
 	.vbt_res = {
 		.tag = {
-			.vpt_tag = VCPROPTAG_SET_FB_RES,
-			.vpt_len = VCPROPTAG_LEN(vb_setfb.vbt_res),
-			.vpt_rcode = VCPROPTAG_REQUEST,
+			.vpt_tag = htole32(VCPROPTAG_SET_FB_RES),
+			.vpt_len = htole32(VCPROPTAG_LEN(vb_setfb.vbt_res)),
+			.vpt_rcode = htole32(VCPROPTAG_REQUEST),
 		},
-		.width = 0,
-		.height = 0,
+		.width = htole32(0),
+		.height = htole32(0),
 	},
 	.vbt_vres = {
 		.tag = {
-			.vpt_tag = VCPROPTAG_SET_FB_VRES,
-			.vpt_len = VCPROPTAG_LEN(vb_setfb.vbt_vres),
-			.vpt_rcode = VCPROPTAG_REQUEST,
+			.vpt_tag = htole32(VCPROPTAG_SET_FB_VRES),
+			.vpt_len = htole32(VCPROPTAG_LEN(vb_setfb.vbt_vres)),
+			.vpt_rcode = htole32(VCPROPTAG_REQUEST),
 		},
-		.width = 0,
-		.height = 0,
+		.width = htole32(0),
+		.height = htole32(0),
 	},
 	.vbt_depth = {
 		.tag = {
-			.vpt_tag = VCPROPTAG_SET_FB_DEPTH,
-			.vpt_len = VCPROPTAG_LEN(vb_setfb.vbt_depth),
-			.vpt_rcode = VCPROPTAG_REQUEST,
+			.vpt_tag = htole32(VCPROPTAG_SET_FB_DEPTH),
+			.vpt_len = htole32(VCPROPTAG_LEN(vb_setfb.vbt_depth)),
+			.vpt_rcode = htole32(VCPROPTAG_REQUEST),
 		},
-		.bpp = 32,
+		.bpp = htole32(32),
 	},
 	.vbt_alpha = {
 		.tag = {
-			.vpt_tag = VCPROPTAG_SET_FB_ALPHA_MODE,
-			.vpt_len = VCPROPTAG_LEN(vb_setfb.vbt_alpha),
-			.vpt_rcode = VCPROPTAG_REQUEST,
+			.vpt_tag = htole32(VCPROPTAG_SET_FB_ALPHA_MODE),
+			.vpt_len = htole32(VCPROPTAG_LEN(vb_setfb.vbt_alpha)),
+			.vpt_rcode = htole32(VCPROPTAG_REQUEST),
 		},
-		.state = VCPROP_ALPHA_IGNORED,
+		.state = htole32(VCPROP_ALPHA_IGNORED),
 	},
 	.vbt_allocbuf = {
 		.tag = {
-			.vpt_tag = VCPROPTAG_ALLOCATE_BUFFER,
-			.vpt_len = VCPROPTAG_LEN(vb_setfb.vbt_allocbuf),
-			.vpt_rcode = VCPROPTAG_REQUEST,
+			.vpt_tag = htole32(VCPROPTAG_ALLOCATE_BUFFER),
+			.vpt_len =
+			    htole32(VCPROPTAG_LEN(vb_setfb.vbt_allocbuf)),
+			.vpt_rcode = htole32(VCPROPTAG_REQUEST),
 		},
-		.address = PAGE_SIZE,	/* alignment */
+		.address = htole32(PAGE_SIZE),	/* alignment */
 	},
 	.vbt_blank = {
 		.tag = {
-			.vpt_tag = VCPROPTAG_BLANK_SCREEN,
-			.vpt_len = VCPROPTAG_LEN(vb_setfb.vbt_blank),
-			.vpt_rcode = VCPROPTAG_REQUEST,
+			.vpt_tag = htole32(VCPROPTAG_BLANK_SCREEN),
+			.vpt_len = htole32(VCPROPTAG_LEN(vb_setfb.vbt_blank)),
+			.vpt_rcode = htole32(VCPROPTAG_REQUEST),
 		},
-		.state = VCPROP_BLANK_OFF,
+		.state = htole32(VCPROP_BLANK_OFF),
 	},
 	.vbt_pitch = {
 		.tag = {
-			.vpt_tag = VCPROPTAG_GET_FB_PITCH,
-			.vpt_len = VCPROPTAG_LEN(vb_setfb.vbt_pitch),
-			.vpt_rcode = VCPROPTAG_REQUEST,
+			.vpt_tag = htole32(VCPROPTAG_GET_FB_PITCH),
+			.vpt_len = htole32(VCPROPTAG_LEN(vb_setfb.vbt_pitch)),
+			.vpt_rcode = htole32(VCPROPTAG_REQUEST),
 		},
 	},
 	.end = {
-		.vpt_tag = VCPROPTAG_NULL,
+		.vpt_tag = htole32(VCPROPTAG_NULL),
 	},
 };
 
@@ -606,7 +610,7 @@ bcm283x_clk_get_rate_uart(void)
 {
 
 	if (vcprop_tag_success_p(&vb_uart.vbt_uartclockrate.tag))
-		return vb_uart.vbt_uartclockrate.rate;
+		return le32toh(vb_uart.vbt_uartclockrate.rate);
 	return 0;
 }
 
@@ -615,8 +619,8 @@ bcm283x_clk_get_rate_vpu(void)
 {
 
 	if (vcprop_tag_success_p(&vb.vbt_vpuclockrate.tag) &&
-	    vb.vbt_vpuclockrate.rate > 0) {
-		return vb.vbt_vpuclockrate.rate;
+	    vb.vbt_vpuclockrate.rate != 0) {
+		return le32toh(vb.vbt_vpuclockrate.rate);
 	}
 	return 0;
 }
@@ -626,8 +630,8 @@ bcm283x_clk_get_rate_emmc(void)
 {
 
 	if (vcprop_tag_success_p(&vb.vbt_emmcclockrate.tag) &&
-	    vb.vbt_emmcclockrate.rate > 0) {
-		return vb.vbt_emmcclockrate.rate;
+	    vb.vbt_emmcclockrate.rate != 0) {
+		return le32toh(vb.vbt_emmcclockrate.rate);
 	}
 	return 0;
 }
@@ -637,8 +641,8 @@ bcm283x_clk_get_rate_emmc2(void)
 {
 
 	if (vcprop_tag_success_p(&vb.vbt_emmc2clockrate.tag) &&
-	    vb.vbt_emmc2clockrate.rate > 0) {
-		return vb.vbt_emmc2clockrate.rate;
+	    vb.vbt_emmc2clockrate.rate != 0) {
+		return le32toh(vb.vbt_emmc2clockrate.rate);
 	}
 	return 0;
 }
@@ -663,9 +667,9 @@ bcm283x_uartinit(bus_space_tag_t iot, bu
 	cpu_dcache_inv_range((vaddr_t)&vb_uart, sizeof(vb_uart));
 
 	if (vcprop_tag_success_p(&vb_uart.vbt_uartclockrate.tag))
-		uart_clk = vb_uart.vbt_uartclockrate.rate;
+		uart_clk = le32toh(vb_uart.vbt_uartclockrate.rate);
 	if (vcprop_tag_success_p(&vb_uart.vbt_vpuclockrate.tag))
-		core_clk = vb_uart.vbt_vpuclockrate.rate;
+		core_clk = le32toh(vb_uart.vbt_vpuclockrate.rate);
 }
 
 #if defined(SOC_BCM2835)
@@ -758,16 +762,19 @@ bcm283x_bootparams(bus_space_tag_t iot, 
 		bootconfig.dramblocks = 0;
 
 		for (int i = 0; i < n && i < DRAM_BLOCKS; i++) {
-			bootconfig.dram[i].address = vptp_mem->mem[i].base;
-			bootconfig.dram[i].pages = atop(vptp_mem->mem[i].size);
+			bootconfig.dram[i].address =
+			    le32toh(vptp_mem->mem[i].base);
+			bootconfig.dram[i].pages =
+			    atop(le32toh(vptp_mem->mem[i].size));
 			bootconfig.dramblocks++;
 
-			bcm283x_memorysize += vptp_mem->mem[i].size;
+			bcm283x_memorysize += le32toh(vptp_mem->mem[i].size);
 		}
 	}
 
 	if (vcprop_tag_success_p(&vb.vbt_armclockrate.tag))
-		curcpu()->ci_data.cpu_cc_freq = vb.vbt_armclockrate.rate;
+		curcpu()->ci_data.cpu_cc_freq =
+		    le32toh(vb.vbt_armclockrate.rate);
 
 #ifdef VERBOSE_INIT_ARM
 	if (vcprop_tag_success_p(&vb.vbt_memory.tag))
@@ -775,34 +782,34 @@ bcm283x_bootparams(bus_space_tag_t iot, 
 		    bcm283x_memorysize);
 	if (vcprop_tag_success_p(&vb.vbt_armclockrate.tag))
 		printf("%s: arm clock    %d\n", __func__,
-		    vb.vbt_armclockrate.rate);
+		    le32toh(vb.vbt_armclockrate.rate));
 	if (vcprop_tag_success_p(&vb.vbt_vpuclockrate.tag))
 		printf("%s: vpu clock    %d\n", __func__,
-		    vb.vbt_vpuclockrate.rate);
+		    le32toh(vb.vbt_vpuclockrate.rate));
 	if (vcprop_tag_success_p(&vb.vbt_emmcclockrate.tag))
 		printf("%s: emmc clock   %d\n", __func__,
-		    vb.vbt_emmcclockrate.rate);
+		    le32toh(vb.vbt_emmcclockrate.rate));
 	if (vcprop_tag_success_p(&vb.vbt_emmc2clockrate.tag))
 		printf("%s: emmc2 clock  %d\n", __func__,
-		    vb.vbt_emmcclockrate.rate);
+		    le32toh(vb.vbt_emmcclockrate.rate));
 	if (vcprop_tag_success_p(&vb.vbt_fwrev.tag))
 		printf("%s: firmware rev %x\n", __func__,
-		    vb.vbt_fwrev.rev);
+		    le32toh(vb.vbt_fwrev.rev));
 	if (vcprop_tag_success_p(&vb.vbt_boardmodel.tag))
 		printf("%s: board model  %x\n", __func__,
-		    vb.vbt_boardmodel.model);
+		    le32toh(vb.vbt_boardmodel.model));
 	if (vcprop_tag_success_p(&vb.vbt_macaddr.tag))
 		printf("%s: mac-address  %" PRIx64 "\n", __func__,
-		    vb.vbt_macaddr.addr);
+		    le64toh(vb.vbt_macaddr.addr));
 	if (vcprop_tag_success_p(&vb.vbt_boardrev.tag))
 		printf("%s: board rev    %x\n", __func__,
-		    vb.vbt_boardrev.rev);
+		    le32toh(vb.vbt_boardrev.rev));
 	if (vcprop_tag_success_p(&vb.vbt_serial.tag))
 		printf("%s: board serial %" PRIx64 "\n", __func__,
-		    vb.vbt_serial.sn);
+		    le64toh(vb.vbt_serial.sn));
 	if (vcprop_tag_success_p(&vb.vbt_dmachan.tag))
 		printf("%s: DMA channel mask 0x%08x\n", __func__,
-		    vb.vbt_dmachan.mask);
+		    le32toh(vb.vbt_dmachan.mask));
 
 	if (vcprop_tag_success_p(&vb.vbt_cmdline.tag))
 		printf("%s: cmdline      %s\n", __func__,
@@ -955,10 +962,10 @@ rpi_fb_init(prop_dictionary_t dict, void
 		height = RPI_FB_HEIGHT;
 	}
 
-	vb_setfb.vbt_res.width = width;
-	vb_setfb.vbt_res.height = height;
-	vb_setfb.vbt_vres.width = width;
-	vb_setfb.vbt_vres.height = height;
+	vb_setfb.vbt_res.width = htole32(width);
+	vb_setfb.vbt_res.height = htole32(height);
+	vb_setfb.vbt_vres.width = htole32(width);
+	vb_setfb.vbt_vres.height = htole32(height);
 	error = bcmmbox_request(BCMMBOX_CHANARM2VC, &vb_setfb,
 	    sizeof(vb_setfb), &res);
 	if (error) {
@@ -979,15 +986,16 @@ rpi_fb_init(prop_dictionary_t dict, void
 
 #ifdef VERBOSE_INIT_ARM
 	printf("%s: addr = 0x%x size = %d\n", __func__,
-	    vb_setfb.vbt_allocbuf.address,
-	    vb_setfb.vbt_allocbuf.size);
-	printf("%s: depth = %d\n", __func__, vb_setfb.vbt_depth.bpp);
+	    le32toh(vb_setfb.vbt_allocbuf.address),
+	    le32toh(vb_setfb.vbt_allocbuf.size));
+	printf("%s: depth = %d\n", __func__, le32toh(vb_setfb.vbt_depth.bpp));
 	printf("%s: pitch = %d\n", __func__,
-	    vb_setfb.vbt_pitch.linebytes);
+	    le32toh(vb_setfb.vbt_pitch.linebytes));
 	printf("%s: width = %d height = %d\n", __func__,
-	    vb_setfb.vbt_res.width, vb_setfb.vbt_res.height);
+	    le32toh(vb_setfb.vbt_res.width), le32toh(vb_setfb.vbt_res.height));
 	printf("%s: vwidth = %d vheight = %d\n", __func__,
-	    vb_setfb.vbt_vres.width, vb_setfb.vbt_vres.height);
+	    le32toh(vb_setfb.vbt_vres.width),
+	    le32toh(vb_setfb.vbt_vres.height));
 #endif
 
 	if (vb_setfb.vbt_allocbuf.address == 0 ||
@@ -1002,13 +1010,16 @@ rpi_fb_init(prop_dictionary_t dict, void
 		return false;
 	}
 
-	prop_dictionary_set_uint32(dict, "width", vb_setfb.vbt_res.width);
-	prop_dictionary_set_uint32(dict, "height", vb_setfb.vbt_res.height);
-	prop_dictionary_set_uint8(dict, "depth", vb_setfb.vbt_depth.bpp);
+	prop_dictionary_set_uint32(dict, "width",
+	    le32toh(vb_setfb.vbt_res.width));
+	prop_dictionary_set_uint32(dict, "height",
+	    le32toh(vb_setfb.vbt_res.height));
+	prop_dictionary_set_uint8(dict, "depth",
+	    le32toh(vb_setfb.vbt_depth.bpp));
 	prop_dictionary_set_uint16(dict, "linebytes",
-	    vb_setfb.vbt_pitch.linebytes);
+	    le32toh(vb_setfb.vbt_pitch.linebytes));
 	prop_dictionary_set_uint32(dict, "address",
-	    vb_setfb.vbt_allocbuf.address);
+	    le32toh(vb_setfb.vbt_allocbuf.address));
 
 	/*
 	 * Old firmware uses BGR. New firmware uses RGB. The get and set
@@ -1414,7 +1425,7 @@ bcm283x_platform_device_register(device_
 	if (device_is_a(dev, "bcmdmac") &&
 	    vcprop_tag_success_p(&vb.vbt_dmachan.tag)) {
 		prop_dictionary_set_uint32(dict,
-		    "chanmask", vb.vbt_dmachan.mask);
+		    "chanmask", le32toh(vb.vbt_dmachan.mask));
 	}
 #if NSDHC > 0
 	if (booted_device == NULL &&
@@ -1428,13 +1439,11 @@ bcm283x_platform_device_register(device_
 	     device_is_a(dev, "mue") ||
 	     device_is_a(dev, "genet")) &&
 	    vcprop_tag_success_p(&vb.vbt_macaddr.tag)) {
+		const uint64_t addr = le64toh(vb.vbt_macaddr.addr);
 		const uint8_t enaddr[ETHER_ADDR_LEN] = {
-		     (vb.vbt_macaddr.addr >> 0) & 0xff,
-		     (vb.vbt_macaddr.addr >> 8) & 0xff,
-		     (vb.vbt_macaddr.addr >> 16) & 0xff,
-		     (vb.vbt_macaddr.addr >> 24) & 0xff,
-		     (vb.vbt_macaddr.addr >> 32) & 0xff,
-		     (vb.vbt_macaddr.addr >> 40) & 0xff
+		     (addr >> 0)  & 0xff, (addr >> 8)  & 0xff,
+		     (addr >> 16) & 0xff, (addr >> 24) & 0xff,
+		     (addr >> 32) & 0xff, (addr >> 40) & 0xff
 		};
 
 		prop_dictionary_set_data(dict, "mac-address", enaddr,

Index: src/sys/arch/evbarm/rpi/rpi_vcmbox.c
diff -u src/sys/arch/evbarm/rpi/rpi_vcmbox.c:1.6 src/sys/arch/evbarm/rpi/rpi_vcmbox.c:1.7
--- src/sys/arch/evbarm/rpi/rpi_vcmbox.c:1.6	Mon Nov 23 06:29:54 2020
+++ src/sys/arch/evbarm/rpi/rpi_vcmbox.c	Tue Dec  1 04:14:31 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: rpi_vcmbox.c,v 1.6 2020/11/23 06:29:54 rin Exp $ */
+/* $NetBSD: rpi_vcmbox.c,v 1.7 2020/12/01 04:14:31 rin Exp $ */
 
 /*-
  * Copyright (c) 2013 Jared D. McNeill <jmcne...@invisible.ca>
@@ -31,13 +31,14 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rpi_vcmbox.c,v 1.6 2020/11/23 06:29:54 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rpi_vcmbox.c,v 1.7 2020/12/01 04:14:31 rin Exp $");
 
 #include <sys/param.h>
 #include <sys/types.h>
 #include <sys/bus.h>
 #include <sys/conf.h>
 #include <sys/device.h>
+#include <sys/endian.h>
 #include <sys/kmem.h>
 #include <sys/systm.h>
 #include <sys/sysctl.h>
@@ -67,15 +68,15 @@ struct vcmbox_clockrate_request {
 #define VCMBOX_INIT_REQUEST(req)					\
 	do {								\
 		memset(&(req), 0, sizeof((req)));			\
-		(req).vb_hdr.vpb_len = sizeof((req));			\
-		(req).vb_hdr.vpb_rcode = VCPROP_PROCESS_REQUEST;	\
-		(req).end.vpt_tag = VCPROPTAG_NULL;			\
+		(req).vb_hdr.vpb_len = htole32(sizeof((req)));		\
+		(req).vb_hdr.vpb_rcode = htole32(VCPROP_PROCESS_REQUEST);\
+		(req).end.vpt_tag = htole32(VCPROPTAG_NULL);		\
 	} while (0)
 #define VCMBOX_INIT_TAG(s, t)						\
 	do {								\
-		(s).tag.vpt_tag = (t);					\
-		(s).tag.vpt_rcode = VCPROPTAG_REQUEST;			\
-		(s).tag.vpt_len = VCPROPTAG_LEN(s);			\
+		(s).tag.vpt_tag = htole32(t);				\
+		(s).tag.vpt_rcode = htole32(VCPROPTAG_REQUEST);		\
+		(s).tag.vpt_len = htole32(VCPROPTAG_LEN(s));		\
 	} while (0)
 
 struct vcmbox_softc {
@@ -168,7 +169,7 @@ vcmbox_read_temp(struct vcmbox_softc *sc
 
 	VCMBOX_INIT_REQUEST(vb);
 	VCMBOX_INIT_TAG(vb.vbt_temp, tag);
-	vb.vbt_temp.id = id;
+	vb.vbt_temp.id = htole32(id);
 	error = bcmmbox_request(BCMMBOX_CHANARM2VC, &vb, sizeof(vb), &res);
 	if (error)
 		return error;
@@ -176,7 +177,7 @@ vcmbox_read_temp(struct vcmbox_softc *sc
 	    !vcprop_tag_success_p(&vb.vbt_temp.tag)) {
 		return EIO;
 	}
-	*val = vb.vbt_temp.value;
+	*val = le32toh(vb.vbt_temp.value);
 
 	return 0;
 }
@@ -191,7 +192,7 @@ vcmbox_read_clockrate(struct vcmbox_soft
 
 	VCMBOX_INIT_REQUEST(vb);
 	VCMBOX_INIT_TAG(vb.vbt_clockrate, tag);
-	vb.vbt_clockrate.id = id;
+	vb.vbt_clockrate.id = htole32(id);
 	error = bcmmbox_request(BCMMBOX_CHANARM2VC, &vb, sizeof(vb), &res);
 	if (error)
 		return error;
@@ -199,7 +200,7 @@ vcmbox_read_clockrate(struct vcmbox_soft
 	    !vcprop_tag_success_p(&vb.vbt_clockrate.tag)) {
 		return EIO;
 	}
-	*val = vb.vbt_clockrate.rate;
+	*val = le32toh(vb.vbt_clockrate.rate);
 
 	return 0;
 }
@@ -214,8 +215,8 @@ vcmbox_write_clockrate(struct vcmbox_sof
 
 	VCMBOX_INIT_REQUEST(vb);
 	VCMBOX_INIT_TAG(vb.vbt_clockrate, tag);
-	vb.vbt_clockrate.id = id;
-	vb.vbt_clockrate.rate = val;
+	vb.vbt_clockrate.id = htole32(id);
+	vb.vbt_clockrate.rate = htole32(val);
 	error = bcmmbox_request(BCMMBOX_CHANARM2VC, &vb, sizeof(vb), &res);
 	if (error)
 		return error;

Index: src/sys/arch/evbarm/rpi/vcprop.h
diff -u src/sys/arch/evbarm/rpi/vcprop.h:1.18 src/sys/arch/evbarm/rpi/vcprop.h:1.19
--- src/sys/arch/evbarm/rpi/vcprop.h:1.18	Mon Nov 23 06:29:32 2020
+++ src/sys/arch/evbarm/rpi/vcprop.h	Tue Dec  1 04:14:31 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: vcprop.h,v 1.18 2020/11/23 06:29:32 rin Exp $	*/
+/*	$NetBSD: vcprop.h,v 1.19 2020/12/01 04:14:31 rin Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -38,6 +38,8 @@
 
 #include "opt_vcprop.h"
 
+#include <sys/endian.h>
+
 struct vcprop_tag {
 	uint32_t vpt_tag;
 #define	VCPROPTAG_NULL			0x00000000
@@ -368,21 +370,21 @@ static inline bool
 vcprop_buffer_success_p(struct vcprop_buffer_hdr *vpbh)
 {
 
-	return (vpbh->vpb_rcode & VCPROP_REQ_SUCCESS);
+	return le32toh(vpbh->vpb_rcode) & VCPROP_REQ_SUCCESS;
 }
 
 static inline bool
 vcprop_tag_success_p(struct vcprop_tag *vpbt)
 {
 
-	return (vpbt->vpt_rcode & VCPROPTAG_RESPONSE);
+	return le32toh(vpbt->vpt_rcode) & VCPROPTAG_RESPONSE;
 }
 
 static inline size_t
 vcprop_tag_resplen(struct vcprop_tag *vpbt)
 {
 
-	return (vpbt->vpt_rcode & ~VCPROPTAG_RESPONSE);
+	return le32toh(vpbt->vpt_rcode) & ~VCPROPTAG_RESPONSE;
 }
 
 #endif	/* _EVBARM_RPI_VCPROP_H_ */

Index: src/sys/arch/evbarm/rpi/vcprop_subr.c
diff -u src/sys/arch/evbarm/rpi/vcprop_subr.c:1.8 src/sys/arch/evbarm/rpi/vcprop_subr.c:1.9
--- src/sys/arch/evbarm/rpi/vcprop_subr.c:1.8	Mon Nov 23 06:39:54 2020
+++ src/sys/arch/evbarm/rpi/vcprop_subr.c	Tue Dec  1 04:14:31 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: vcprop_subr.c,v 1.8 2020/11/23 06:39:54 rin Exp $	*/
+/*	$NetBSD: vcprop_subr.c,v 1.9 2020/12/01 04:14:31 rin Exp $	*/
 
 /*
  * Copyright (c) 2014 Michael Lorenz
@@ -29,11 +29,12 @@
  * Mailbox property interface wrapper functions
  */
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vcprop_subr.c,v 1.8 2020/11/23 06:39:54 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vcprop_subr.c,v 1.9 2020/12/01 04:14:31 rin Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
 #include <sys/device.h>
+#include <sys/endian.h>
 
 #include <uvm/uvm_extern.h>
 
@@ -64,19 +65,21 @@ rpi_fb_set_video(int b)
 	} vb_setblank =
 	{
 		.vb_hdr = {
-			.vpb_len = sizeof(vb_setblank),
-			.vpb_rcode = VCPROP_PROCESS_REQUEST,
+			.vpb_len = htole32(sizeof(vb_setblank)),
+			.vpb_rcode = htole32(VCPROP_PROCESS_REQUEST),
 		},
 		.vbt_blank = {
 			.tag = {
-				.vpt_tag = VCPROPTAG_BLANK_SCREEN,
-				.vpt_len = VCPROPTAG_LEN(vb_setblank.vbt_blank),
-				.vpt_rcode = VCPROPTAG_REQUEST,
+				.vpt_tag = htole32(VCPROPTAG_BLANK_SCREEN),
+				.vpt_len = htole32(VCPROPTAG_LEN(
+				    vb_setblank.vbt_blank)),
+				.vpt_rcode = htole32(VCPROPTAG_REQUEST),
 			},
-			.state = (b != 0) ? VCPROP_BLANK_OFF : VCPROP_BLANK_ON,
+			.state = htole32((b != 0) ?
+			    VCPROP_BLANK_OFF : VCPROP_BLANK_ON),
 		},
 		.end = {
-			.vpt_tag = VCPROPTAG_NULL,
+			.vpt_tag = htole32(VCPROPTAG_NULL),
 		},
 	};
 
@@ -84,8 +87,8 @@ rpi_fb_set_video(int b)
 	    sizeof(vb_setblank), &res);
 #ifdef RPI_IOCTL_DEBUG
 	printf("%s: %d %d %d %08x %08x\n", __func__, b,
-	    vb_setblank.vbt_blank.state, error, res,
-	    vb_setblank.vbt_blank.tag.vpt_rcode);
+	    le32toh(vb_setblank.vbt_blank.state), error, res,
+	    le32toh(vb_setblank.vbt_blank.tag.vpt_rcode));
 #endif
 	if (error)
 		return error;
@@ -111,21 +114,22 @@ rpi_alloc_mem(uint32_t size, uint32_t al
 	} vb_allocmem =
 	{
 		.vb_hdr = {
-			.vpb_len = sizeof(vb_allocmem),
-			.vpb_rcode = VCPROP_PROCESS_REQUEST,
+			.vpb_len = htole32(sizeof(vb_allocmem)),
+			.vpb_rcode = htole32(VCPROP_PROCESS_REQUEST),
 		},
 		.vbt_am = {
 			.tag = {
-				.vpt_tag = VCPROPTAG_ALLOCMEM,
-				.vpt_len = VCPROPTAG_LEN(vb_allocmem.vbt_am),
-				.vpt_rcode = VCPROPTAG_REQUEST,
+				.vpt_tag = htole32(VCPROPTAG_ALLOCMEM),
+				.vpt_len =
+				    htole32(VCPROPTAG_LEN(vb_allocmem.vbt_am)),
+				.vpt_rcode = htole32(VCPROPTAG_REQUEST),
 			},
-			.size = size,
-			.align = align,
-			.flags = flags,
+			.size = htole32(size),
+			.align = htole32(align),
+			.flags = htole32(flags),
 		},
 		.end = {
-			.vpt_tag = VCPROPTAG_NULL,
+			.vpt_tag = htole32(VCPROPTAG_NULL),
 		},
 	};
 
@@ -133,8 +137,8 @@ rpi_alloc_mem(uint32_t size, uint32_t al
 	    sizeof(vb_allocmem), &res);
 #ifdef RPI_IOCTL_DEBUG
 	printf("%s: %d %d %08x %08x\n", __func__,
-	    vb_allocmem.vbt_am.size, error, res,
-	    vb_allocmem.vbt_am.tag.vpt_rcode);
+	    le32toh(vb_allocmem.vbt_am.size), error, res,
+	    le32toh(vb_allocmem.vbt_am.tag.vpt_rcode));
 #endif
 	if (error)
 		return error;
@@ -145,7 +149,7 @@ rpi_alloc_mem(uint32_t size, uint32_t al
 	}
 
 	/* Return the handle from the VC */
-	return vb_allocmem.vbt_am.size;
+	return le32toh(vb_allocmem.vbt_am.size);
 }
 
 bus_addr_t
@@ -161,19 +165,20 @@ rpi_lock_mem(uint32_t handle)
 	} vb_lockmem =
 	{
 		.vb_hdr = {
-			.vpb_len = sizeof(vb_lockmem),
-			.vpb_rcode = VCPROP_PROCESS_REQUEST,
+			.vpb_len = htole32(sizeof(vb_lockmem)),
+			.vpb_rcode = htole32(VCPROP_PROCESS_REQUEST),
 		},
 		.vbt_lm = {
 			.tag = {
-				.vpt_tag = VCPROPTAG_LOCKMEM,
-				.vpt_len = VCPROPTAG_LEN(vb_lockmem.vbt_lm),
-				.vpt_rcode = VCPROPTAG_REQUEST,
+				.vpt_tag = htole32(VCPROPTAG_LOCKMEM),
+				.vpt_len =
+				    htole32(VCPROPTAG_LEN(vb_lockmem.vbt_lm)),
+				.vpt_rcode = htole32(VCPROPTAG_REQUEST),
 			},
-			.handle = handle,
+			.handle = htole32(handle),
 		},
 		.end = {
-			.vpt_tag = VCPROPTAG_NULL,
+			.vpt_tag = htole32(VCPROPTAG_NULL),
 		},
 	};
 
@@ -181,8 +186,8 @@ rpi_lock_mem(uint32_t handle)
 	    sizeof(vb_lockmem), &res);
 #ifdef RPI_IOCTL_DEBUG
 	printf("%s: %d %d %08x %08x\n", __func__,
-	    vb_lockmem.vbt_lm.handle, error, res,
-	    vb_lockmem.vbt_lm.tag.vpt_rcode);
+	    le32toh(vb_lockmem.vbt_lm.handle), error, res,
+	    le32toh(vb_lockmem.vbt_lm.tag.vpt_rcode));
 #endif
 	if (error)
 		return 0;
@@ -192,7 +197,7 @@ rpi_lock_mem(uint32_t handle)
 		return 0;
 	}
 
-	return vb_lockmem.vbt_lm.handle;
+	return le32toh(vb_lockmem.vbt_lm.handle);
 }
 
 int
@@ -208,19 +213,20 @@ rpi_unlock_mem(uint32_t handle)
 	} vb_unlockmem =
 	{
 		.vb_hdr = {
-			.vpb_len = sizeof(vb_unlockmem),
-			.vpb_rcode = VCPROP_PROCESS_REQUEST,
+			.vpb_len = htole32(sizeof(vb_unlockmem)),
+			.vpb_rcode = htole32(VCPROP_PROCESS_REQUEST),
 		},
 		.vbt_lm = {
 			.tag = {
-				.vpt_tag = VCPROPTAG_UNLOCKMEM,
-				.vpt_len = VCPROPTAG_LEN(vb_unlockmem.vbt_lm),
-				.vpt_rcode = VCPROPTAG_REQUEST,
+				.vpt_tag = htole32(VCPROPTAG_UNLOCKMEM),
+				.vpt_len =
+				    htole32(VCPROPTAG_LEN(vb_unlockmem.vbt_lm)),
+				.vpt_rcode = htole32(VCPROPTAG_REQUEST),
 			},
-			.handle = handle,
+			.handle = htole32(handle),
 		},
 		.end = {
-			.vpt_tag = VCPROPTAG_NULL,
+			.vpt_tag = htole32(VCPROPTAG_NULL),
 		},
 	};
 
@@ -228,8 +234,8 @@ rpi_unlock_mem(uint32_t handle)
 	    sizeof(vb_unlockmem), &res);
 #ifdef RPI_IOCTL_DEBUG
 	printf("%s: %d %d %08x %08x\n", __func__,
-	    vb_unlockmem.vbt_lm.handle, error, res,
-	    vb_unlockmem.vbt_lm.tag.vpt_rcode);
+	    le32toh(vb_unlockmem.vbt_lm.handle), error, res,
+	    le32toh(vb_unlockmem.vbt_lm.tag.vpt_rcode));
 #endif
 	if (error)
 		return error;
@@ -255,19 +261,20 @@ rpi_release_mem(uint32_t handle)
 	} vb_releasemem =
 	{
 		.vb_hdr = {
-			.vpb_len = sizeof(vb_releasemem),
-			.vpb_rcode = VCPROP_PROCESS_REQUEST,
+			.vpb_len = htole32(sizeof(vb_releasemem)),
+			.vpb_rcode = htole32(VCPROP_PROCESS_REQUEST),
 		},
 		.vbt_lm = {
 			.tag = {
-				.vpt_tag = VCPROPTAG_RELEASEMEM,
-				.vpt_len = VCPROPTAG_LEN(vb_releasemem.vbt_lm),
-				.vpt_rcode = VCPROPTAG_REQUEST,
+				.vpt_tag = htole32(VCPROPTAG_RELEASEMEM),
+				.vpt_len = htole32(VCPROPTAG_LEN(
+				    vb_releasemem.vbt_lm)),
+				.vpt_rcode = htole32(VCPROPTAG_REQUEST),
 			},
-			.handle = handle,
+			.handle = htole32(handle),
 		},
 		.end = {
-			.vpt_tag = VCPROPTAG_NULL,
+			.vpt_tag = htole32(VCPROPTAG_NULL),
 		},
 	};
 
@@ -275,8 +282,8 @@ rpi_release_mem(uint32_t handle)
 	    sizeof(vb_releasemem), &res);
 #ifdef RPI_IOCTL_DEBUG
 	printf("%s: %d %d %08x %08x\n", __func__,
-	    vb_releasemem.vbt_lm.handle, error, res,
-	    vb_releasemem.vbt_lm.tag.vpt_rcode);
+	    le32toh(vb_releasemem.vbt_lm.handle), error, res,
+	    le32toh(vb_releasemem.vbt_lm.tag.vpt_rcode));
 #endif
 	if (error)
 		return error;
@@ -302,22 +309,23 @@ rpi_fb_movecursor(int x, int y, int on)
 	} vb_cursorstate =
 	{
 		.vb_hdr = {
-			.vpb_len = sizeof(vb_cursorstate),
-			.vpb_rcode = VCPROP_PROCESS_REQUEST,
+			.vpb_len = htole32(sizeof(vb_cursorstate)),
+			.vpb_rcode = htole32(VCPROP_PROCESS_REQUEST),
 		},
 		.vbt_cs = {
 			.tag = {
-				.vpt_tag = VCPROPTAG_SET_CURSOR_STATE,
-				.vpt_len = VCPROPTAG_LEN(vb_cursorstate.vbt_cs),
-				.vpt_rcode = VCPROPTAG_REQUEST,
+				.vpt_tag = htole32(VCPROPTAG_SET_CURSOR_STATE),
+				.vpt_len = htole32(VCPROPTAG_LEN(
+				    vb_cursorstate.vbt_cs)),
+				.vpt_rcode = htole32(VCPROPTAG_REQUEST),
 			},
-			.enable = (on != 0) ? 1 : 0,
-			.x = x,
-			.y = y,
-			.flags = 1,
+			.enable = htole32((on != 0) ? 1 : 0),
+			.x = htole32(x),
+			.y = htole32(y),
+			.flags = htole32(1),
 		},
 		.end = {
-			.vpt_tag = VCPROPTAG_NULL,
+			.vpt_tag = htole32(VCPROPTAG_NULL),
 		},
 	};
 
@@ -325,8 +333,8 @@ rpi_fb_movecursor(int x, int y, int on)
 	    sizeof(vb_cursorstate), &res);
 #ifdef RPI_IOCTL_DEBUG
 	printf("%s: %08x %d %08x %08x\n", __func__,
-	    vb_cursorstate.vbt_cs.enable, error, res,
-	    vb_cursorstate.vbt_cs.tag.vpt_rcode);
+	    le32toh(vb_cursorstate.vbt_cs.enable), error, res,
+	    le32toh(vb_cursorstate.vbt_cs.tag.vpt_rcode));
 #endif
 	if (error)
 		return error;
@@ -353,24 +361,25 @@ rpi_fb_initcursor(bus_addr_t pixels, int
 	} vb_cursorinfo =
 	{
 		.vb_hdr = {
-			.vpb_len = sizeof(vb_cursorinfo),
-			.vpb_rcode = VCPROP_PROCESS_REQUEST,
+			.vpb_len = htole32(sizeof(vb_cursorinfo)),
+			.vpb_rcode = htole32(VCPROP_PROCESS_REQUEST),
 		},
 		.vbt_ci = {
 			.tag = {
-				.vpt_tag = VCPROPTAG_SET_CURSOR_INFO,
-				.vpt_len = VCPROPTAG_LEN(vb_cursorinfo.vbt_ci),
-				.vpt_rcode = VCPROPTAG_REQUEST,
+				.vpt_tag = htole32(VCPROPTAG_SET_CURSOR_INFO),
+				.vpt_len = htole32(VCPROPTAG_LEN(
+				    vb_cursorinfo.vbt_ci)),
+				.vpt_rcode = htole32(VCPROPTAG_REQUEST),
 			},
-			.width = 64,
-			.height = 64,
-			.format = 0,
-			.pixels = pixels,
-			.hotspot_x = hx,
-			.hotspot_y = hy,
+			.width = htole32(64),
+			.height = htole32(64),
+			.format = htole32(0),
+			.pixels = htole32(pixels),
+			.hotspot_x = htole32(hx),
+			.hotspot_y = htole32(hy),
 		},
 		.end = {
-			.vpt_tag = VCPROPTAG_NULL,
+			.vpt_tag = htole32(VCPROPTAG_NULL),
 		},
 	};
 
@@ -378,8 +387,8 @@ rpi_fb_initcursor(bus_addr_t pixels, int
 	    sizeof(vb_cursorinfo), &res);
 #ifdef RPI_IOCTL_DEBUG
 	printf("%s: %d %d %08x %08x\n", __func__,
-	    vb_cursorinfo.vbt_ci.width, error, res,
-	    vb_cursorinfo.vbt_ci.tag.vpt_rcode);
+	    le32toh(vb_cursorinfo.vbt_ci.width), error, res,
+	    le32toh(vb_cursorinfo.vbt_ci.tag.vpt_rcode));
 #endif
 	if (error)
 		return error;

Reply via email to