[RFC/PATCH 2/2] powerpc: Add legacy PCI access via sysfs

Jesse Barnes jbarnes at virtuousgeek.org
Sat Oct 4 01:59:12 EST 2008


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



More information about the Linuxppc-dev mailing list