From: INSUN PYO Date: Thu, 15 Mar 2018 08:48:51 +0000 (+0900) Subject: usb: mtp disable in tv profile X-Git-Tag: submit/tizen/20180315.085746^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F05%2F172705%2F2;p=platform%2Fadaptation%2Fsamsung_exynos%2Fdevice-manager-plugin-odroid.git usb: mtp disable in tv profile Signed-off-by: INSUN PYO Change-Id: I0e1713d17cb32b344e340f92e14298eb8f8d9b47 --- diff --git a/hw/usb_gadget/CMakeLists.txt b/hw/usb_gadget/CMakeLists.txt index 2e28b15..0f365ff 100644 --- a/hw/usb_gadget/CMakeLists.txt +++ b/hw/usb_gadget/CMakeLists.txt @@ -4,7 +4,7 @@ PROJECT(usb_gadget C) SET(PREFIX ${CMAKE_INSTALL_PREFIX}) INCLUDE(FindPkgConfig) -pkg_check_modules(usb_gadget_pkgs REQUIRED hwcommon) +pkg_check_modules(usb_gadget_pkgs REQUIRED hwcommon capi-system-info) FOREACH(flag ${usb_gadget_pkgs_CFLAGS}) SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") diff --git a/hw/usb_gadget/usb_gadget.c b/hw/usb_gadget/usb_gadget.c index 36ff095..8f6aea6 100644 --- a/hw/usb_gadget/usb_gadget.c +++ b/hw/usb_gadget/usb_gadget.c @@ -23,6 +23,7 @@ #include #include #include +#include #define ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0])) #define zalloc(amount) calloc(1, amount) @@ -181,6 +182,25 @@ static inline struct usb_function *find_func(struct usb_gadget *gadget, return gadget->funcs[i]; } +static int is_tv_profile(void) +{ + int ret; + char *profile_name = NULL; + const char const *tv_profile_name = "tv"; + + ret = system_info_get_platform_string("http://tizen.org/feature/profile", &profile_name); + + if (ret == SYSTEM_INFO_ERROR_NONE) { + ret = strncmp(profile_name, tv_profile_name, strlen(tv_profile_name)); + free(profile_name); + + if (ret == 0) + return 1; + } + + return 0; +} + static int simple_id_to_gadget(struct usb_gadget_id *gadget_id, struct usb_gadget **_gadget) { @@ -200,6 +220,10 @@ static int simple_id_to_gadget(struct usb_gadget_id *gadget_id, if (ret) goto out; + /* XU3 TV profile does not support mtp */ + if (is_tv_profile()) + gadget_id->function_mask &= ~USB_FUNCTION_MTP; + /* * Currently all gadgets use inly single configuration but * slp-gadget is capable to handle two of them @@ -214,36 +238,38 @@ static int simple_id_to_gadget(struct usb_gadget_id *gadget_id, functions[0][1] = 0; gadget->attrs.idProduct = 0x685d; break; + case USB_FUNCTION_MTP: n_configs = 1; functions[0][0] = USB_FUNCTION_MTP; functions[0][1] = 0; gadget->attrs.idProduct = 0x6860; break; + case USB_FUNCTION_RNDIS: n_configs = 1; functions[0][0] = USB_FUNCTION_RNDIS; functions[0][1] = 0; gadget->attrs.idProduct = 0x6863; break; - case USB_FUNCTION_MTP | USB_FUNCTION_ACM | USB_FUNCTION_SDB: + + case USB_FUNCTION_ACM | USB_FUNCTION_SDB: n_configs = 1; - functions[0][0] = USB_FUNCTION_MTP; - functions[0][1] = USB_FUNCTION_ACM; - functions[0][2] = USB_FUNCTION_SDB; - functions[0][3] = 0; + functions[0][0] = USB_FUNCTION_ACM; + functions[0][1] = USB_FUNCTION_SDB; + functions[0][2] = 0; gadget->attrs.idProduct = 0x6860; break; - case USB_FUNCTION_MTP | USB_FUNCTION_ACM | USB_FUNCTION_SDB - | USB_FUNCTION_DIAG: + + case USB_FUNCTION_MTP | USB_FUNCTION_ACM | USB_FUNCTION_SDB: n_configs = 1; functions[0][0] = USB_FUNCTION_MTP; functions[0][1] = USB_FUNCTION_ACM; functions[0][2] = USB_FUNCTION_SDB; - functions[0][3] = USB_FUNCTION_DIAG; - functions[0][4] = 0; + functions[0][3] = 0; gadget->attrs.idProduct = 0x6860; break; + case USB_FUNCTION_RNDIS | USB_FUNCTION_SDB: n_configs = 1; functions[0][0] = USB_FUNCTION_RNDIS; @@ -251,6 +277,18 @@ static int simple_id_to_gadget(struct usb_gadget_id *gadget_id, functions[0][2] = 0; gadget->attrs.idProduct = 0x6864; break; + +#if 0 + case USB_FUNCTION_MTP | USB_FUNCTION_ACM | USB_FUNCTION_SDB | USB_FUNCTION_DIAG: + n_configs = 1; + functions[0][0] = USB_FUNCTION_MTP; + functions[0][1] = USB_FUNCTION_ACM; + functions[0][2] = USB_FUNCTION_SDB; + functions[0][3] = USB_FUNCTION_DIAG; + functions[0][4] = 0; + gadget->attrs.idProduct = 0x6860; + break; + case USB_FUNCTION_RNDIS | USB_FUNCTION_SDB | USB_FUNCTION_ACM | USB_FUNCTION_DIAG: n_configs = 1; functions[0][0] = USB_FUNCTION_RNDIS; @@ -260,6 +298,7 @@ static int simple_id_to_gadget(struct usb_gadget_id *gadget_id, functions[0][4] = 0; gadget->attrs.idProduct = 0x6864; break; + case USB_FUNCTION_RNDIS | USB_FUNCTION_DIAG: n_configs = 1; functions[0][0] = USB_FUNCTION_RNDIS; @@ -267,6 +306,7 @@ static int simple_id_to_gadget(struct usb_gadget_id *gadget_id, functions[0][2] = 0; gadget->attrs.idProduct = 0x6864; break; + case USB_FUNCTION_ACM | USB_FUNCTION_SDB | USB_FUNCTION_DM: n_configs = 1; functions[0][0] = USB_FUNCTION_ACM; @@ -275,6 +315,7 @@ static int simple_id_to_gadget(struct usb_gadget_id *gadget_id, functions[0][3] = 0; gadget->attrs.idProduct = 0x6860; break; + case USB_FUNCTION_DIAG | USB_FUNCTION_ACM | USB_FUNCTION_RMNET: n_configs = 1; functions[0][0] = USB_FUNCTION_DIAG; @@ -283,6 +324,7 @@ static int simple_id_to_gadget(struct usb_gadget_id *gadget_id, functions[0][3] = 0; gadget->attrs.idProduct = 0x685d; break; +#endif }; if (n_configs > 2 || n_configs <= 0) { diff --git a/packaging/device-manager-plugin-odroid.spec b/packaging/device-manager-plugin-odroid.spec index 8a65507..4466f2f 100644 --- a/packaging/device-manager-plugin-odroid.spec +++ b/packaging/device-manager-plugin-odroid.spec @@ -14,6 +14,7 @@ BuildRequires: pkgconfig(hwcommon) BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(libsystemd) BuildRequires: pkgconfig(libusbgx) +BuildRequires: pkgconfig(capi-system-info) %description Device manager plugin for ODROID development board.