Home | History | Annotate | Download | only in include
      1 #ifndef __KEYBOARD_H
      2 #define __KEYBOARD_H
      3 
      4 #include <input.h>
      5 #include <stdio_dev.h>
      6 
      7 /**
      8  * struct keyboard_priv - information about a keyboard, for the uclass
      9  *
     10  * @sdev:	stdio device
     11  * @input:	input configuration (the driver may use this if desired)
     12  */
     13 struct keyboard_priv {
     14 	struct stdio_dev sdev;
     15 
     16 	/*
     17 	 * This is set up by the uclass but will only be used if the driver
     18 	 * sets input.dev to its device pointer (it is initially NULL).
     19 	 */
     20 	struct input_config input;
     21 };
     22 
     23 /**
     24  * struct keyboard_ops - keyboard device operations
     25  */
     26 struct keyboard_ops {
     27 	/**
     28 	 * start() - enable the keyboard ready for use
     29 	 *
     30 	 * @dev:	Device to enable
     31 	 * @return 0 if OK, -ve on error
     32 	 */
     33 	int (*start)(struct udevice *dev);
     34 
     35 	/**
     36 	 * stop() - disable the keyboard when no-longer needed
     37 	 *
     38 	 * @dev:	Device to disable
     39 	 * @return 0 if OK, -ve on error
     40 	 */
     41 	int (*stop)(struct udevice *dev);
     42 
     43 	/**
     44 	 * tstc() - check if a key is available
     45 	 *
     46 	 * @dev:	Device to check
     47 	 * @return 0 if no key is available, 1 if a key is available, -ve on
     48 	 *	   error
     49 	 */
     50 	int (*tstc)(struct udevice *dev);
     51 
     52 	/**
     53 	 * getc() - get a key
     54 	 *
     55 	 * TODO(sjg (at) chromium.org): At present this method may wait if it calls
     56 	 * input_getc().
     57 	 *
     58 	 * @dev:	Device to read from
     59 	 * @return -EAGAIN if no key is available, otherwise key value read
     60 	 *	   (as ASCII).
     61 	 */
     62 	int (*getc)(struct udevice *dev);
     63 
     64 	/**
     65 	 * update_leds() - update keyboard LEDs
     66 	 *
     67 	 * This is called when the LEDs have changed and need to be updated.
     68 	 * For example, if 'caps lock' is pressed then this method will be
     69 	 * called with the new LED value.
     70 	 *
     71 	 * @dev:	Device to update
     72 	 * @leds:	New LED mask (see INPUT_LED_... in input.h)
     73 	 */
     74 	int (*update_leds)(struct udevice *dev, int leds);
     75 };
     76 
     77 #define keyboard_get_ops(dev)	((struct keyboard_ops *)(dev)->driver->ops)
     78 
     79 #endif /* __KEYBOARD_H */
     80