Exemplo n.º 1
0
ACPI_STATUS
AcpiOsWritePort (
    ACPI_IO_ADDRESS         Address,
    UINT32                  Value,
    UINT32                  Width)
{
	switch (Width) {
	case 8:
		out_b((uint16_t)Address, (uint8_t)Value);
	break;
	
	case 16:
		out_h((uint16_t)Address, (uint16_t)Value);
	break;
	
	case 32:
		out_w((uint16_t)Address, (uint32_t)Value);
	break;
	
	default:
		return (AE_BAD_PARAMETER);
	}
	
	return (AE_OK);
}
Exemplo n.º 2
0
/*
 *	Memory block outputs (16 bit)	cnt : number of half words
 */
EXPORT	void	OutMemH(UW iob, W ix, UH *buf, W cnt)
{
	UW	port = iob + (ix * IOSTEP);

	while (--cnt >= 0) {
		out_h(port, *buf++);
	}
}
Exemplo n.º 3
0
/*
        I/O write
*/
EXPORT	W	writeIO(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:		out_w(pa, data);	break;
	case 2:		out_h(pa, data);	break;
	default:	out_b(pa, data);
	}
	return unit;
}