Nokia RX-51: Convert to CONFIG_DM_KEYBOARD
authorPali Rohár <pali@kernel.org>
Thu, 3 Feb 2022 18:38:50 +0000 (19:38 +0100)
committerTom Rini <trini@konsulko.com>
Tue, 8 Feb 2022 16:00:04 +0000 (11:00 -0500)
Signed-off-by: Pali Rohár <pali@kernel.org>
board/nokia/rx51/rx51.c
configs/nokia_rx51_defconfig
include/configs/nokia_rx51.h

index 99ca36f..a526915 100644 (file)
@@ -31,6 +31,7 @@
 #include <twl4030.h>
 #include <i2c.h>
 #include <video_fb.h>
+#include <keyboard.h>
 #include <asm/global_data.h>
 #include <asm/io.h>
 #include <asm/setup.h>
@@ -579,10 +580,10 @@ static u8 keybuf_head;
 static u8 keybuf_tail;
 
 /*
- * Routine: rx51_kp_init
+ * Routine: rx51_kp_start
  * Description: Initialize HW keyboard.
  */
-int rx51_kp_init(void)
+static int rx51_kp_start(struct udevice *dev)
 {
        int ret = 0;
        u8 ctrl;
@@ -656,7 +657,7 @@ static void rx51_kp_fill(u8 k, u8 mods)
  * Routine: rx51_kp_tstc
  * Description: Test if key was pressed (from buffer).
  */
-int rx51_kp_tstc(struct stdio_dev *sdev)
+static int rx51_kp_tstc(struct udevice *dev)
 {
        u8 c, r, dk, i;
        u8 intr;
@@ -712,14 +713,36 @@ int rx51_kp_tstc(struct stdio_dev *sdev)
  * Routine: rx51_kp_getc
  * Description: Get last pressed key (from buffer).
  */
-int rx51_kp_getc(struct stdio_dev *sdev)
+static int rx51_kp_getc(struct udevice *dev)
 {
        keybuf_head %= KEYBUF_SIZE;
-       while (!rx51_kp_tstc(sdev))
+       while (!rx51_kp_tstc(dev))
                WATCHDOG_RESET();
        return keybuf[keybuf_head++];
 }
 
+static int rx51_kp_probe(struct udevice *dev)
+{
+       struct keyboard_priv *uc_priv = dev_get_uclass_priv(dev);
+       struct stdio_dev *sdev = &uc_priv->sdev;
+
+       strcpy(sdev->name, "keyboard");
+       return input_stdio_register(sdev);
+}
+
+static const struct keyboard_ops rx51_kp_ops = {
+       .start = rx51_kp_start,
+       .tstc = rx51_kp_tstc,
+       .getc = rx51_kp_getc,
+};
+
+U_BOOT_DRIVER(rx51_kp) = {
+       .name = "rx51_kp",
+       .id = UCLASS_KEYBOARD,
+       .probe = rx51_kp_probe,
+       .ops = &rx51_kp_ops,
+};
+
 static const struct mmc_config rx51_mmc_cfg = {
        .host_caps = MMC_MODE_4BIT | MMC_MODE_HS_52MHz | MMC_MODE_HS,
        .f_min = 400000,
@@ -753,3 +776,7 @@ U_BOOT_DRVINFOS(rx51_i2c) = {
 U_BOOT_DRVINFOS(rx51_watchdog) = {
        { "rx51_watchdog" },
 };
+
+U_BOOT_DRVINFOS(rx51_kp) = {
+       { "rx51_kp" },
+};
index 4a95f42..47b7bc3 100644 (file)
@@ -66,6 +66,7 @@ CONFIG_DM=y
 # CONFIG_DM_SEQ_ALIAS is not set
 # CONFIG_BLOCK_CACHE is not set
 CONFIG_DM_I2C=y
+CONFIG_DM_KEYBOARD=y
 # CONFIG_MMC_HW_PARTITIONING is not set
 # CONFIG_MMC_VERBOSE is not set
 CONFIG_MMC_OMAP_HS=y
@@ -78,7 +79,6 @@ CONFIG_USB_MUSB_UDC=y
 CONFIG_USB_OMAP3=y
 CONFIG_CFB_CONSOLE=y
 CONFIG_CFB_CONSOLE_ANSI=y
-# CONFIG_VGA_AS_SINGLE_DEVICE is not set
 CONFIG_SPLASH_SCREEN=y
 CONFIG_WATCHDOG_TIMEOUT_MSECS=31000
 CONFIG_WDT=y
index adfc055..9be64c3 100644 (file)
 #define VIDEO_FB_16BPP_PIXEL_SWAP
 #define VIDEO_FB_16BPP_WORD_SWAP
 
-/* functions for cfb_console */
-#define VIDEO_KBD_INIT_FCT             rx51_kp_init()
-#define VIDEO_TSTC_FCT                 rx51_kp_tstc
-#define VIDEO_GETC_FCT                 rx51_kp_getc
-#ifndef __ASSEMBLY__
-struct stdio_dev;
-int rx51_kp_init(void);
-int rx51_kp_tstc(struct stdio_dev *sdev);
-int rx51_kp_getc(struct stdio_dev *sdev);
-#endif
-
 /* Environment information */
 #define CONFIG_EXTRA_ENV_SETTINGS \
        "usbtty=cdc_acm\0" \
-       "stdin=usbtty,serial,vga\0" \
+       "stdin=usbtty,serial,keyboard\0" \
        "stdout=usbtty,serial,vga\0" \
        "stderr=usbtty,serial,vga\0" \
        "slide=gpio input " __stringify(GPIO_SLIDE) "\0" \