From: Marek Szyprowski Date: Tue, 8 Oct 2024 09:02:07 +0000 (+0200) Subject: extcon: add fixed (always connected) USB extcon driver X-Git-Tag: accepted/tizen/9.0/unified/20241101.025315~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3272819bfcb77d28b864c3337fb4d94676e22265;p=platform%2Fkernel%2Flinux-tizen-modules-source.git extcon: add fixed (always connected) USB extcon driver Some boards doesn't have capability of detecting USB cable connection and thus doesn't implement any extcon driver. Add simple, fixed, always connected USB extcon driver to notify Tizen that USB cable is indeed connected and let it start SDB/MTP services. Change-Id: I33d3e4cfa9a7f259312cef38e08c19a166f61a27 Signed-off-by: Marek Szyprowski --- diff --git a/kernel/Makefile b/kernel/Makefile index e0d8a3f..db51bcd 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -21,6 +21,7 @@ CFLAGS_inform-reboot.o += -DTIZEN_INFORM_PATH="\"$(TIZEN_INFORM_PATH)\"" # it won't get automatically build in packages using it (that would break these automatically as file list # would no longer match). BUILD_dm_bow ?= n +BUILD_extcon_usb_fixed ?= n BUILD_inform_reboot ?= n BUILD_logger ?= n BUILD_proc_tsm ?= n @@ -28,6 +29,7 @@ BUILD_kdbus ?= n BUILD_zlogger ?= n obj-$(BUILD_dm_bow) += dm-bow.o +obj-$(BUILD_extcon_usb_fixed) += extcon-usb-fixed.o obj-$(BUILD_inform_reboot) += inform-reboot.o obj-$(BUILD_logger) += logger.o obj-$(BUILD_proc_tsm) += proc-tsm.o diff --git a/kernel/extcon-usb-fixed.c b/kernel/extcon-usb-fixed.c new file mode 100644 index 0000000..aa6aeeb --- /dev/null +++ b/kernel/extcon-usb-fixed.c @@ -0,0 +1,57 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * extcon_usb_fixed.c - Fixed state (always connected) USB extcon driver + * + * Copyright (C) 2024 Samsung Electrnoics + * Author: Marek Szyprowski + */ + +#include +#include +#include +#include +#include + +static struct extcon_dev *edev; + +static const unsigned int supported_cable[] = { + EXTCON_USB, + EXTCON_NONE, +}; + +static struct platform_device extcon_usb_fixed_dev = { + .name = "extcon_usb_fixed", +}; + +static int fixed_usb_extcon_init(void) +{ + int ret; + + ret = platform_device_register(&extcon_usb_fixed_dev); + if (ret) + return ret; + + edev = devm_extcon_dev_allocate(&extcon_usb_fixed_dev.dev, supported_cable); + if (IS_ERR(edev)) + return PTR_ERR(edev); + + ret = devm_extcon_dev_register(&extcon_usb_fixed_dev.dev, edev); + if (ret) + return ret; + + extcon_set_state_sync(edev, EXTCON_USB, true); + + return 0; +} + +static void fixed_usb_extcon_exit(void) +{ + platform_device_unregister(&extcon_usb_fixed_dev); +} + +module_init(fixed_usb_extcon_init); +module_exit(fixed_usb_extcon_exit); + +MODULE_AUTHOR("Marek Szyprowski "); +MODULE_DESCRIPTION("Fixed USB extcon driver"); +MODULE_LICENSE("GPL");