mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2026-01-07 16:11:43 +00:00
Support the keyscan test functionality on stm32. Note: This is enabled by default so that it continues to build. But it is unlikely that we will want this in a shipping image. I suggest we add the facility for a dev build. Secondly, the stack has to be larger due to a printf (which admittedly I could just remove). Should we make the stack size conditional on the CONFIG? Seems a bit ugly, on the other hand we don't want to waste IRAM. BUG=chrome-os-partner:12179 BRANCH=none TEST=manual for now: On snow: ./ectool keyscan 20000 key_sequence.txt See that the test passes. Change-Id: Ic441ca0bde1be9589a924374605e2f146d16f423 Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/35118
43 lines
1.2 KiB
C
43 lines
1.2 KiB
C
/*
|
|
* Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
|
|
/* Keyboard scanner test module for Chrome EC */
|
|
|
|
#ifndef __CROS_EC_KEYBOARD_TEST_H
|
|
#define __CROS_EC_KEYBOARD_TEST_H
|
|
|
|
#include <timer.h>
|
|
|
|
/*
|
|
* Keyboard scan test item - contains a single scan to 'present' to key scan
|
|
* logic.
|
|
*/
|
|
struct keyscan_item {
|
|
timestamp_t abs_time; /* absolute timestamp to present this item */
|
|
uint32_t time_us; /* time for this item relative to test start */
|
|
uint8_t done; /* 1 if we managed to present this */
|
|
uint8_t scan[KB_OUTPUTS];
|
|
};
|
|
|
|
/**
|
|
* Get the next key scan from the test sequence, if any
|
|
*
|
|
* @param column Column to read (-1 to OR all columns together
|
|
* @param scan Raw scan data read from GPIOs
|
|
* @return test scan, or just 'scan' if no test is active
|
|
*/
|
|
uint8_t keyscan_seq_get_scan(int column, uint8_t scan);
|
|
|
|
/**
|
|
* Calculate the delay until the next key scan event needs to be presented
|
|
*
|
|
* @return number of microseconds from now until the next key scan event, or
|
|
* -1 if there is no future key scan event (e.g. testing is complete)
|
|
*/
|
|
int keyscan_seq_next_event_delay(void);
|
|
|
|
#endif
|