Skip to content

Commit

Permalink
input: i8042: Use remove() instead of exported functions
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
sjg20 committed Dec 5, 2018
1 parent eafb4a5 commit 165be50
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 30 deletions.
35 changes: 20 additions & 15 deletions drivers/input/i8042.c
Original file line number Diff line number Diff line change
Expand Up @@ -167,19 +167,8 @@ static int kbd_controller_present(void)
return in8(I8042_STS_REG) != 0xff;
}

/*
* Implement a weak default function for boards that optionally
* need to skip the i8042 initialization.
*
* TODO([email protected]): Use device tree for this?
*/
int __weak board_i8042_skip(void)
{
/* As default, don't skip */
return 0;
}

void i8042_flush(void)
/** Flush all buffer from keyboard controller to host*/
static void i8042_flush(void)
{
int timeout;

Expand All @@ -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)
return -1;
Expand Down Expand Up @@ -266,7 +261,7 @@ static int i8042_start(struct udevice *dev)
char *penv;
int ret;

if (!kbd_controller_present() || board_i8042_skip()) {
if (!kbd_controller_present()) {
debug("i8042 keyboard controller is not present\n");
return -ENOENT;
}
Expand Down Expand Up @@ -294,6 +289,15 @@ static int i8042_start(struct udevice *dev)
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
*
Expand Down Expand Up @@ -348,6 +352,7 @@ U_BOOT_DRIVER(i8042_kbd) = {
.id = UCLASS_KEYBOARD,
.of_match = i8042_kbd_ids,
.probe = i8042_kbd_probe,
.remove = i8042_kbd_remove,
.ops = &i8042_kbd_ops,
.priv_auto_alloc_size = sizeof(struct i8042_kbd_priv),
};
15 changes: 0 additions & 15 deletions include/i8042.h
Original file line number Diff line number Diff line change
Expand Up @@ -72,19 +72,4 @@
#define BRK 0x0100 /* make break flag for keyboard */
#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_ */

0 comments on commit 165be50

Please sign in to comment.