Example #1
0
ACPI_STATUS
AcpiOsReadPort (
    ACPI_IO_ADDRESS         Address,
    UINT32                  *Value,
    UINT32                  Width)
{

	switch (Width) {
	case 8:
		*Value = in_b((uint16_t)Address);
	break;
	
	case 16:
		*Value = in_h((uint16_t)Address);
	break;
	
	case 32:
		*Value = in_w((uint16_t)Address);
	break;
	
	default:
		return (AE_BAD_PARAMETER);
	}
	
	return (AE_OK);
}
Example #2
0
/*
 *	Memory block inputs (16 bit)	cnt : number of half words
 */
EXPORT	void	InMemH(UW iob, W ix, UH *buf, W cnt)
{
	UW	port = iob + (ix * IOSTEP);

	while (--cnt >= 0) {
		*buf++ = in_h(port);
	}
}
Example #3
0
/*
        I/O read
*/
EXPORT	W	readIO(UW addr, UW *data, W unit)
{
	W	n;
	UW	pa;

        /* address misalignment is reported as error */
	if (addr & (unit - 1)) return 0;

        /* I/O address check & conversion to physical address */
	n = chkIOAddr(addr, &pa, unit);
	if (n < unit) return 0;

	switch(unit) {
	case 4:		*data = in_w(pa);	break;
	case 2:		*data = in_h(pa);	break;
	default:	*data = in_b(pa);
	}
	return unit;
}