The new machconfig probes USB keyboard and touch screen, and then sets HAVE_* variables according to detection.
Detectable devices: USB HID keyboards (Generic Desktop) USB HID touch screens (Digitizer) Note: The intention is to have a way to provide initial formfactor settings in a boot procedure. That means supported keyboard and touch screen must be connected before machconfig runs. Any new connection or disconnection won't be detected until machconfig is executed again. Limitation: There could be some USB HID devices presents more than one usage in a single descriptor. We will add support once such device emerges. Some platforms may have _virtual_ devices provided by BIOS. It will cause false detection when they are presented as types we supported. We can add black list logic when it becomes a big concern. Fixes [YOCTO #9205] Signed-off-by: Jianxun Zhang <jianxun.zh...@linux.intel.com> --- Tom & Saul, V3 puts entire logic in machconfig into a new if block, so that detection will be skipped when any error occurs at the first step. Same basic test is done as before. Let me know if this version makes more sense. Thanks .../recipes-bsp/formfactor/formfactor/machconfig | 37 ++++++++++++++++++++++ .../recipes-bsp/formfactor/formfactor_0.0.bbappend | 1 + 2 files changed, 38 insertions(+) create mode 100644 common/recipes-bsp/formfactor/formfactor/machconfig create mode 100644 common/recipes-bsp/formfactor/formfactor_0.0.bbappend diff --git a/common/recipes-bsp/formfactor/formfactor/machconfig b/common/recipes-bsp/formfactor/formfactor/machconfig new file mode 100644 index 0000000..22d3112 --- /dev/null +++ b/common/recipes-bsp/formfactor/formfactor/machconfig @@ -0,0 +1,37 @@ +# Note: super user permission is required to run usbhid-dump +# successfully. + +# HEX keys are according to USB HID spec and USB HID usage table +# We could add more keys as needed in the future. + +# It may not be very accurate. Here we only look for first two lines +# of a descriptor section. Example: +# +# 001:003:000:DESCRIPTOR 1460501386.337809 +# 05 01 09 02 A1 01 09 01 A1 00 05 09 19 01 29 03 +# 15 00 25 01 95 03 75 01 81 02 .. .. .. .. .. .. +# .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. +# +# By doing so we elimiate false matches when HEX keys are in the lines +# in the middle of whole descriptor section. + +if USBHID_DUMP_OUTPUT=$(usbhid-dump -e descriptor 2>/dev/null|grep -A1 DESCRIPTOR); then + # checker for generic USB HID keyboard + USBHID_KBD_CMD="grep -E '^ 05 01 09 06'" + + # checker for touch screen + USBHID_TS_CMD="grep -E '^ 05 0D 09 04'" + + if echo "$USBHID_DUMP_OUTPUT"|eval $USBHID_TS_CMD &>/dev/null; then + HAVE_TOUCHSCREEN=1 + fi + + if echo "$USBHID_DUMP_OUTPUT"|eval $USBHID_KBD_CMD &>/dev/null; then + HAVE_KEYBOARD=1 + else + # config script in OE will set HAVE_KEYBOARD=1 + # if we don't set any value. We have to explicitly + # tell it when keyboard is not detected. + HAVE_KEYBOARD=0 + fi +fi diff --git a/common/recipes-bsp/formfactor/formfactor_0.0.bbappend b/common/recipes-bsp/formfactor/formfactor_0.0.bbappend new file mode 100644 index 0000000..72d991c --- /dev/null +++ b/common/recipes-bsp/formfactor/formfactor_0.0.bbappend @@ -0,0 +1 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" -- 2.7.4 -- _______________________________________________ meta-intel mailing list meta-intel@yoctoproject.org https://lists.yoctoproject.org/listinfo/meta-intel