================================================ Misc sensors (fingerprint, hall, keyboard cover) ================================================ The small peripherals that don't carry enough register/protocol-level detail to earn their own page: the fingerprint sensor, the hall-effect cover switch, and the detachable keyboard cover's connector pins. All are DT-bound and built into ``artifacts/kernel`` (:doc:`/boot/dtbo`); none of them needed disassembly beyond confirming the binding. None of these are physical keys you press — the power/volume buttons are in :doc:`/boot/keys`. DT bindings =========== .. list-table:: :header-rows: 1 :widths: 22 16 12 50 * - Device - ``compatible`` - Bus - GPIOs / notes * - **Fingerprint** (``fragment@57``) - ``fortsense,fortsense_fp`` / ``chipsailing_fp`` / ``microarray_fp`` - SPI - three vendor drivers compiled in; the one whose chip answers is used (``cs-gpios``, ``onyx,rst_gpio``, ``onyx,irq_gpio``) — that selection-by-probe behavior is inferred from driver structure, not traced at runtime, see `Fingerprint`_ below. TA/firmware side: ``fpchips64`` in ``/vendor/firmware`` (:doc:`/trustzone/secure-world`) * - **Hall sensor** (``onyx_hall``) - onyx hall (``fragment@52``) - GPIO - ``irq-gpio`` — magnetic cover/case-close detection * - **Keyboard cover** (``onyx-keyboard``) - ``onyx,keyboard-ultra2`` - — - ``vcc-ctrl``, ``id-gpio``, ``id-gpio2``, ``wake-gpio`` — pogo-pin *connector* pins (presence/wake detection); the keyboard's own keys are not something this DT node describes The camera nodes (``qcom,cam-sensor@*``, ``qcom,eeprom@*``) in the overlay are stock SM6350 reference-design entries with no populated sensor on this PCB — the same reference-base pattern as the DSI/AMOLED panel names (:doc:`/display/panel`). Fingerprint =========== Three vendor drivers are compiled in and DT-described (``fortsense,fortsense_fp``, ``chipsailing_fp``, ``microarray_fp``), all on SPI with ``cs-gpios`` + reset/irq GPIOs; the driver whose chip is physically present is inferred to bind (from the compiled-in-driver structure, not traced at runtime) — the same "compile every candidate, whichever chip answers wins" pattern as the pen/touch swappable suppliers (:doc:`/display/wacom-pen`, :doc:`touchscreen`). The secure/enrolment side is handled off-CPU (the ``fpchips64`` firmware in ``/vendor/firmware`` and the TZ path, :doc:`/trustzone/secure-world`). Hall sensor =========== ``onyx_hall`` is a magnetic-field switch on an ``irq-gpio``, used to detect the magnetic cover opening/closing (sleep/wake the panel). It reports a proximity/field state, not a press — not a key. Keyboard cover =============== ``onyx,keyboard-ultra2`` is the detachable pogo-pin keyboard cover, identified by ``id-gpio``/``id-gpio2`` and woken via ``wake-gpio`` (kernel ``onyx_keyboard_connect`` path). This DT node only describes the *connector* pins — presence detection and wake — not the keyboard's own individual keys, which this dump has no register/protocol-level visibility into. The power and volume buttons, which are physical keys, are documented in :doc:`/boot/keys`. Sensors and charger (documented elsewhere) =========================================== - **Sensors** (IMU, ALS, etc.) run on the ADSP via the SSC/QMI stack (``qcom,qmi-sensors``); there is no separate SLPI core on this SM6350 build (:doc:`/audio/dsp-firmware`). - **Charger** is the PM7250B ``qcom,qpnp-smb5`` with the SMB1396/SMB1398 charge pumps (``qcom,smb1396-div2-cp-master`` / ``-slave`` / ``smb1398-pre-regulator``) for fast charging (:doc:`/soc/pmic`). Provenance ========== :Source: ``artifacts/dtbo_a/overlay_0.dts`` (all ``compatible`` bindings, SPI/GPIO assignments). :Method: device-tree reading only — none of these devices carried enough register/protocol content to warrant static disassembly beyond confirming the DT binding. No code executed. :Cross-refs: :doc:`/display/wacom-pen`, :doc:`touchscreen`, :doc:`/trustzone/secure-world`, :doc:`/audio/dsp-firmware`, :doc:`/soc/pmic`, :doc:`/boot/keys`, :doc:`/boot/dtbo`.