On Friday, October 3, 2008 2:49 am Benjamin Herrenschmidt wrote: > + /* WARNING: The generic code is idiotic. It gets passed a pointer > + * to what can be a 1, 2 or 4 byte quantity and always reads that > + * as a u32, which means that we have to correct the location of > + * the data read within those 32 bits for size 1 and 2 > + */ > + switch(size) { > + case 1: > + out_8(addr, val >> 24); > + return 1; > + case 2: > + if (port & 1) > + return -EINVAL; > + out_le16(addr, val >> 16); > + return 2; > + case 4: > + if (port & 3) > + return -EINVAL; > + out_le32(addr, val); > + return 4; > + } > + return -EINVAL; Feel free to change the generic code if it makes things easier for you, the only limitation is that we have to live within the generic sysfs read/write functions. Obviously I didn't worry about it when doing this code on ia64... Jesse -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html