[PATCH] PPC: Rework assignment of keyboard devalias.

Rather than simply copy the value of input-device, we scan the device tree for an entry with a device_type of keyboard and use that. This ensures that the keyboard alias always points to a physical keyboard device. Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> --- openbios-devel/arch/ppc/qemu/qemu.fs | 36 +++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/openbios-devel/arch/ppc/qemu/qemu.fs b/openbios-devel/arch/ppc/qemu/qemu.fs index 0d691f7..29c4cf6 100644 --- a/openbios-devel/arch/ppc/qemu/qemu.fs +++ b/openbios-devel/arch/ppc/qemu/qemu.fs @@ -46,12 +46,38 @@ then ; -\ set the keyboard alias to stdin +variable keyboard-phandle 0 keyboard-phandle ! + +: (find-keyboard-device) ( phandle -- ) + recursive + >dn.child @ + begin ?dup while + dup dup " device_type" rot get-package-property 0= if + drop dup cstrlen + " keyboard" strcmp 0= if + dup to keyboard-phandle + then + then + (find-keyboard-device) + >dn.peer @ + repeat +; + +\ create the keyboard devalias :noname - active-package - " /aliases" find-device - input-device encode-string " keyboard" property - active-package! + device-tree @ (find-keyboard-device) + keyboard-phandle @ if + active-package + " /aliases" find-device + keyboard-phandle @ get-nodename + \ dictionary abused for temporary storage + here >r + " /" r@ 200 + tmpstrcat drop + keyboard-phandle @ >dn.parent @ get-package-path + r@ 240 + tmpstrcat r> 2drop + encode-string " keyboard" property + active-package! + then ; SYSTEM-initializer \ ------------------------------------------------------------------------- -- 1.7.10.4

On Mon, Nov 26, 2012 at 12:13 AM, Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> wrote:
Rather than simply copy the value of input-device, we scan the device tree for an entry with a device_type of keyboard and use that. This ensures that the keyboard alias always points to a physical keyboard device.
Maybe I'm missing something, but other keyboard drivers (escc.c and pc_kbd.c) just add the keyboard alias themselves, this should be slightly faster because the scan is avoided. It's also only two lines of code.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> --- openbios-devel/arch/ppc/qemu/qemu.fs | 36 +++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-)
diff --git a/openbios-devel/arch/ppc/qemu/qemu.fs b/openbios-devel/arch/ppc/qemu/qemu.fs index 0d691f7..29c4cf6 100644 --- a/openbios-devel/arch/ppc/qemu/qemu.fs +++ b/openbios-devel/arch/ppc/qemu/qemu.fs @@ -46,12 +46,38 @@ then ;
-\ set the keyboard alias to stdin +variable keyboard-phandle 0 keyboard-phandle ! + +: (find-keyboard-device) ( phandle -- ) + recursive + >dn.child @ + begin ?dup while + dup dup " device_type" rot get-package-property 0= if + drop dup cstrlen + " keyboard" strcmp 0= if + dup to keyboard-phandle + then + then + (find-keyboard-device) + >dn.peer @ + repeat +; + +\ create the keyboard devalias :noname - active-package - " /aliases" find-device - input-device encode-string " keyboard" property - active-package! + device-tree @ (find-keyboard-device) + keyboard-phandle @ if + active-package + " /aliases" find-device + keyboard-phandle @ get-nodename + \ dictionary abused for temporary storage + here >r + " /" r@ 200 + tmpstrcat drop + keyboard-phandle @ >dn.parent @ get-package-path + r@ 240 + tmpstrcat r> 2drop + encode-string " keyboard" property + active-package! + then ; SYSTEM-initializer
\ ------------------------------------------------------------------------- -- 1.7.10.4
-- OpenBIOS http://openbios.org/ Mailinglist: http://lists.openbios.org/mailman/listinfo Free your System - May the Forth be with you
participants (2)
-
Blue Swirl
-
Mark Cave-Ayland