From 6e14addfbc2a739744a5de1c76dfc07172824175 Mon Sep 17 00:00:00 2001 From: Joseph Chen Date: Fri, 27 Oct 2017 17:42:18 +0800 Subject: [PATCH] dm: key: add key type and key name interface Change-Id: Ifd054c609d92557b15acb8e53580dddd72325ff8 Signed-off-by: Joseph Chen --- drivers/input/key-uclass.c | 20 ++++++++++++++++++++ include/key.h | 4 ++++ 2 files changed, 24 insertions(+) diff --git a/drivers/input/key-uclass.c b/drivers/input/key-uclass.c index 0d38fbda81..6abd1cf3c0 100644 --- a/drivers/input/key-uclass.c +++ b/drivers/input/key-uclass.c @@ -17,6 +17,26 @@ int key_read(struct udevice *dev) return ops->read(dev); } +int key_type(struct udevice *dev) +{ + const struct dm_key_ops *ops = dev_get_driver_ops(dev); + + if (!ops || !ops->type) + return -ENOSYS; + + return ops->type; +} + +const char *key_name(struct udevice *dev) +{ + const struct dm_key_ops *ops = dev_get_driver_ops(dev); + + if (!ops || !ops->name) + return NULL; + + return ops->name; +} + UCLASS_DRIVER(key) = { .id = UCLASS_KEY, .name = "key", diff --git a/include/key.h b/include/key.h index 56ae16681f..16bf4cac5b 100644 --- a/include/key.h +++ b/include/key.h @@ -14,9 +14,13 @@ enum key_state { }; struct dm_key_ops { + int type; + const char *name; int (*read)(struct udevice *dev); }; int key_read(struct udevice *dev); +int key_type(struct udevice *dev); +const char *key_label(struct udevice *dev); #endif