/* SPDX-License-Identifier: GPL-2.0-only */

	/* SuperIO control port */
	Name (SPIO, 0x2E)

	/* SuperIO control map */
	OperationRegion (SPIM, SystemIO, SPIO, 0x02)
		Field (SPIM, ByteAcc, NoLock, Preserve) {
		SIOI, 8,
		SIOD, 8
	}

	/* SuperIO control registers */
	IndexField (SIOI, SIOD, ByteAcc, NoLock, Preserve) {
		Offset (0x2A),
		CR2A, 8,		/* Pin function selection */
	}

	Device (PS2K)		// Keyboard
	{
		Name(_HID, EISAID("PNP0303"))
		Name(_CID, EISAID("PNP030B"))

		Name(_CRS, ResourceTemplate()
		{
			IO (Decode16, 0x60, 0x60, 0x01, 0x01)
			IO (Decode16, 0x64, 0x64, 0x01, 0x01)
			IRQ (Edge, ActiveHigh, Exclusive) { 0x01 } // IRQ 1
		})

		Method (_STA, 0)
		{
			Return (0xf)
		}
	}

	Device (PS2M)		// Mouse
	{
		Name(_HID, EISAID("PNP0F13"))
		Name(_CRS, ResourceTemplate()
		{
			IRQ (Edge, ActiveHigh, Exclusive) { 0x0c } // IRQ 12
		})

		Method(_STA, 0)
		{
			/* Access SuperIO ACPI device */
			SIOI = 0x87
			SIOI = 0x87

			/* Read Pin56 function select */
			Local0 = CR2A & 2

			/* Restore default SuperIO access */
			SIOI = 0xAA

			if (Local0 == 0) {
				/* Mouse function selected */
				Return (0xf)
			}
			Return (0x0)
		}
	}