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 <[email protected]>
@@ -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 <[email protected]>
@@ -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;