mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-28 08:35:38 +00:00
input: i8042: Use remove() instead of exported functions
We should not have exported functions in a driver. The i8042_disable() function is used to disable the keyboard. Provide a remove() method instead, which is the standard way of disabling a device. We could potentially add a method to flush input but that does not seem necessary. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
eafb4a59db
commit
165be50f5a
2 changed files with 20 additions and 30 deletions
|
@ -167,19 +167,8 @@ static int kbd_controller_present(void)
|
||||||
return in8(I8042_STS_REG) != 0xff;
|
return in8(I8042_STS_REG) != 0xff;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/** Flush all buffer from keyboard controller to host*/
|
||||||
* Implement a weak default function for boards that optionally
|
static void i8042_flush(void)
|
||||||
* need to skip the i8042 initialization.
|
|
||||||
*
|
|
||||||
* TODO(sjg@chromium.org): Use device tree for this?
|
|
||||||
*/
|
|
||||||
int __weak board_i8042_skip(void)
|
|
||||||
{
|
|
||||||
/* As default, don't skip */
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void i8042_flush(void)
|
|
||||||
{
|
{
|
||||||
int timeout;
|
int timeout;
|
||||||
|
|
||||||
|
@ -202,7 +191,13 @@ void i8042_flush(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int i8042_disable(void)
|
/**
|
||||||
|
* Disables the keyboard so that key strokes no longer generate scancodes to
|
||||||
|
* the host.
|
||||||
|
*
|
||||||
|
* @return 0 if ok, -1 if keyboard input was found while disabling
|
||||||
|
*/
|
||||||
|
static int i8042_disable(void)
|
||||||
{
|
{
|
||||||
if (kbd_input_empty() == 0)
|
if (kbd_input_empty() == 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -266,7 +261,7 @@ static int i8042_start(struct udevice *dev)
|
||||||
char *penv;
|
char *penv;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (!kbd_controller_present() || board_i8042_skip()) {
|
if (!kbd_controller_present()) {
|
||||||
debug("i8042 keyboard controller is not present\n");
|
debug("i8042 keyboard controller is not present\n");
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
}
|
}
|
||||||
|
@ -294,6 +289,15 @@ static int i8042_start(struct udevice *dev)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int i8042_kbd_remove(struct udevice *dev)
|
||||||
|
{
|
||||||
|
if (i8042_disable())
|
||||||
|
log_debug("i8042_disable() failed. fine, continue.\n");
|
||||||
|
i8042_flush();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set up the i8042 keyboard. This is called by the stdio device handler
|
* Set up the i8042 keyboard. This is called by the stdio device handler
|
||||||
*
|
*
|
||||||
|
@ -348,6 +352,7 @@ U_BOOT_DRIVER(i8042_kbd) = {
|
||||||
.id = UCLASS_KEYBOARD,
|
.id = UCLASS_KEYBOARD,
|
||||||
.of_match = i8042_kbd_ids,
|
.of_match = i8042_kbd_ids,
|
||||||
.probe = i8042_kbd_probe,
|
.probe = i8042_kbd_probe,
|
||||||
|
.remove = i8042_kbd_remove,
|
||||||
.ops = &i8042_kbd_ops,
|
.ops = &i8042_kbd_ops,
|
||||||
.priv_auto_alloc_size = sizeof(struct i8042_kbd_priv),
|
.priv_auto_alloc_size = sizeof(struct i8042_kbd_priv),
|
||||||
};
|
};
|
||||||
|
|
|
@ -72,19 +72,4 @@
|
||||||
#define BRK 0x0100 /* make break flag for keyboard */
|
#define BRK 0x0100 /* make break flag for keyboard */
|
||||||
#define ALT 0x0200 /* right alt */
|
#define ALT 0x0200 /* right alt */
|
||||||
|
|
||||||
/* exports */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Flush all buffer from keyboard controller to host.
|
|
||||||
*/
|
|
||||||
void i8042_flush(void);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Disables the keyboard so that key strokes no longer generate scancodes to
|
|
||||||
* the host.
|
|
||||||
*
|
|
||||||
* @return 0 if ok, -1 if keyboard input was found while disabling
|
|
||||||
*/
|
|
||||||
int i8042_disable(void);
|
|
||||||
|
|
||||||
#endif /* _I8042_H_ */
|
#endif /* _I8042_H_ */
|
||||||
|
|
Loading…
Add table
Reference in a new issue