You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
zorro/UAPI: Use proper types (endianness/size) in <linux/zorro.h>
Fix member definitions for non-native userspace handling:
- All multi-byte values are big-endian, hence use __be*,
- All pointers are 32-bit pointers under AmigaOS, but unused (except for
cd_BoardAddr) under Linux, hence use __be32.
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
This commit is contained in:
@@ -14,6 +14,8 @@
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/export.h>
|
||||
|
||||
#include <asm/byteorder.h>
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/amigahw.h>
|
||||
#include <asm/setup.h>
|
||||
@@ -41,10 +43,10 @@ proc_bus_zorro_read(struct file *file, char __user *buf, size_t nbytes, loff_t *
|
||||
/* Construct a ConfigDev */
|
||||
memset(&cd, 0, sizeof(cd));
|
||||
cd.cd_Rom = z->rom;
|
||||
cd.cd_SlotAddr = z->slotaddr;
|
||||
cd.cd_SlotSize = z->slotsize;
|
||||
cd.cd_BoardAddr = (void *)zorro_resource_start(z);
|
||||
cd.cd_BoardSize = zorro_resource_len(z);
|
||||
cd.cd_SlotAddr = cpu_to_be16(z->slotaddr);
|
||||
cd.cd_SlotSize = cpu_to_be16(z->slotsize);
|
||||
cd.cd_BoardAddr = cpu_to_be32(zorro_resource_start(z));
|
||||
cd.cd_BoardSize = cpu_to_be32(zorro_resource_len(z));
|
||||
|
||||
if (copy_to_user(buf, (void *)&cd + pos, nbytes))
|
||||
return -EFAULT;
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
#include <linux/stat.h>
|
||||
#include <linux/string.h>
|
||||
|
||||
#include <asm/byteorder.h>
|
||||
|
||||
#include "zorro.h"
|
||||
|
||||
|
||||
@@ -33,10 +35,20 @@ static DEVICE_ATTR(name, S_IRUGO, show_##name, NULL);
|
||||
|
||||
zorro_config_attr(id, id, "0x%08x\n");
|
||||
zorro_config_attr(type, rom.er_Type, "0x%02x\n");
|
||||
zorro_config_attr(serial, rom.er_SerialNumber, "0x%08x\n");
|
||||
zorro_config_attr(slotaddr, slotaddr, "0x%04x\n");
|
||||
zorro_config_attr(slotsize, slotsize, "0x%04x\n");
|
||||
|
||||
static ssize_t
|
||||
show_serial(struct device *dev, struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct zorro_dev *z;
|
||||
|
||||
z = to_zorro_dev(dev);
|
||||
return sprintf(buf, "0x%08x\n", be32_to_cpu(z->rom.er_SerialNumber));
|
||||
}
|
||||
|
||||
static DEVICE_ATTR(serial, S_IRUGO, show_serial, NULL);
|
||||
|
||||
static ssize_t zorro_show_resource(struct device *dev, struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct zorro_dev *z = to_zorro_dev(dev);
|
||||
@@ -60,10 +72,10 @@ static ssize_t zorro_read_config(struct file *filp, struct kobject *kobj,
|
||||
/* Construct a ConfigDev */
|
||||
memset(&cd, 0, sizeof(cd));
|
||||
cd.cd_Rom = z->rom;
|
||||
cd.cd_SlotAddr = z->slotaddr;
|
||||
cd.cd_SlotSize = z->slotsize;
|
||||
cd.cd_BoardAddr = (void *)zorro_resource_start(z);
|
||||
cd.cd_BoardSize = zorro_resource_len(z);
|
||||
cd.cd_SlotAddr = cpu_to_be16(z->slotaddr);
|
||||
cd.cd_SlotSize = cpu_to_be16(z->slotsize);
|
||||
cd.cd_BoardAddr = cpu_to_be32(zorro_resource_start(z));
|
||||
cd.cd_BoardSize = cpu_to_be32(zorro_resource_len(z));
|
||||
|
||||
return memory_read_from_buffer(buf, count, &off, &cd, sizeof(cd));
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/slab.h>
|
||||
|
||||
#include <asm/byteorder.h>
|
||||
#include <asm/setup.h>
|
||||
#include <asm/amigahw.h>
|
||||
|
||||
@@ -161,7 +162,8 @@ static int __init amiga_zorro_probe(struct platform_device *pdev)
|
||||
z = &zorro_autocon[i];
|
||||
|
||||
z->rom = zi->rom;
|
||||
z->id = (z->rom.er_Manufacturer<<16) | (z->rom.er_Product<<8);
|
||||
z->id = (be16_to_cpu(z->rom.er_Manufacturer) << 16) |
|
||||
(z->rom.er_Product << 8);
|
||||
if (z->id == ZORRO_PROD_GVP_EPC_BASE) {
|
||||
/* GVP quirk */
|
||||
unsigned long magic = zi->boardaddr + 0x8000;
|
||||
|
||||
Reference in New Issue
Block a user