gadget_chips.h revision 409a15da9851b6e6a5e1c5787be31a987184b7cf
11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * USB device controllers have lots of quirks. Use these macros in 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * gadget drivers or other code that needs to deal with them, and which 41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * autoconfigures instead of using early binding to the hardware. 51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 61c05ad4447e4ecbd61647c102fb6f2f5a6634ff3David Brownell * This SHOULD eventually work like the ARM mach_is_*() stuff, driven by 71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * some config file that gets updated as new hardware is supported. 81c05ad4447e4ecbd61647c102fb6f2f5a6634ff3David Brownell * (And avoiding all runtime comparisons in typical one-choice configs!) 91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * NOTE: some of these controller drivers may not be available yet. 117f9985c2e4e5555b750d6f891b4923e63cc834c1David Brownell * Some are available on 2.4 kernels; several are available, but not 127f9985c2e4e5555b750d6f891b4923e63cc834c1David Brownell * yet pushed in the 2.6 mainline tree. 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 14e67d70f2f55d90c79dcb384ad5b798f0f9a68085Felipe Balbi 15e67d70f2f55d90c79dcb384ad5b798f0f9a68085Felipe Balbi#ifndef __GADGET_CHIPS_H 16e67d70f2f55d90c79dcb384ad5b798f0f9a68085Felipe Balbi#define __GADGET_CHIPS_H 17e67d70f2f55d90c79dcb384ad5b798f0f9a68085Felipe Balbi 181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_USB_GADGET_NET2280 191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_net2280(g) !strcmp("net2280", (g)->name) 201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_net2280(g) 0 221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2455d402d854ade6b63b26e958f201ee2ef00b7b15Thomas Dahlmann#ifdef CONFIG_USB_GADGET_AMD5536UDC 2555d402d854ade6b63b26e958f201ee2ef00b7b15Thomas Dahlmann#define gadget_is_amd5536udc(g) !strcmp("amd5536udc", (g)->name) 2655d402d854ade6b63b26e958f201ee2ef00b7b15Thomas Dahlmann#else 2755d402d854ade6b63b26e958f201ee2ef00b7b15Thomas Dahlmann#define gadget_is_amd5536udc(g) 0 2855d402d854ade6b63b26e958f201ee2ef00b7b15Thomas Dahlmann#endif 2955d402d854ade6b63b26e958f201ee2ef00b7b15Thomas Dahlmann 301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_USB_GADGET_DUMMY_HCD 311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_dummy(g) !strcmp("dummy_udc", (g)->name) 321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_dummy(g) 0 341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 367a8576204333d133d58cbcc59dacf49a5546e3e4Philipp Zabel#ifdef CONFIG_USB_GADGET_PXA25X 377a8576204333d133d58cbcc59dacf49a5546e3e4Philipp Zabel#define gadget_is_pxa(g) !strcmp("pxa25x_udc", (g)->name) 381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_pxa(g) 0 401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_USB_GADGET_GOKU 431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_goku(g) !strcmp("goku_udc", (g)->name) 441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_goku(g) 0 461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_USB_GADGET_LH7A40X 491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_lh7a40x(g) !strcmp("lh7a40x_udc", (g)->name) 501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_lh7a40x(g) 0 521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_USB_GADGET_OMAP 551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_omap(g) !strcmp("omap_udc", (g)->name) 561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_omap(g) 0 581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 607f9985c2e4e5555b750d6f891b4923e63cc834c1David Brownell/* various unstable versions available */ 611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_USB_GADGET_PXA27X 621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_pxa27x(g) !strcmp("pxa27x_udc", (g)->name) 631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_pxa27x(g) 0 651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 6755b3fd41b0846929f68b5fb1058ad8077289f584Haavard Skinnemoen#ifdef CONFIG_USB_GADGET_ATMEL_USBA 6855b3fd41b0846929f68b5fb1058ad8077289f584Haavard Skinnemoen#define gadget_is_atmel_usba(g) !strcmp("atmel_usba_udc", (g)->name) 691f5b9cc9e4cf5847e7550c4079cebb80170e71ddH�vard Skinnemoen#else 7055b3fd41b0846929f68b5fb1058ad8077289f584Haavard Skinnemoen#define gadget_is_atmel_usba(g) 0 711f5b9cc9e4cf5847e7550c4079cebb80170e71ddH�vard Skinnemoen#endif 721f5b9cc9e4cf5847e7550c4079cebb80170e71ddH�vard Skinnemoen 731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_USB_GADGET_S3C2410 741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_s3c2410(g) !strcmp("s3c2410_udc", (g)->name) 751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_s3c2410(g) 0 771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_USB_GADGET_AT91 801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_at91(g) !strcmp("at91_udc", (g)->name) 811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_at91(g) 0 831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 8591e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell#ifdef CONFIG_USB_GADGET_IMX 8691e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell#define gadget_is_imx(g) !strcmp("imx_udc", (g)->name) 8791e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell#else 8891e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell#define gadget_is_imx(g) 0 8991e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell#endif 9091e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell 91d2eef1fc99640f7de302dcdbcfbdfcec2eef13f6Li Yang#ifdef CONFIG_USB_GADGET_FSL_USB2 92d2eef1fc99640f7de302dcdbcfbdfcec2eef13f6Li Yang#define gadget_is_fsl_usb2(g) !strcmp("fsl-usb2-udc", (g)->name) 93d2eef1fc99640f7de302dcdbcfbdfcec2eef13f6Li Yang#else 94d2eef1fc99640f7de302dcdbcfbdfcec2eef13f6Li Yang#define gadget_is_fsl_usb2(g) 0 95d2eef1fc99640f7de302dcdbcfbdfcec2eef13f6Li Yang#endif 96d2eef1fc99640f7de302dcdbcfbdfcec2eef13f6Li Yang 9742795410c325108d59d0b1e750657197a7374c04David Brownell/* Mentor high speed "dual role" controller, in peripheral role */ 9842795410c325108d59d0b1e750657197a7374c04David Brownell#ifdef CONFIG_USB_GADGET_MUSB_HDRC 9942795410c325108d59d0b1e750657197a7374c04David Brownell#define gadget_is_musbhdrc(g) !strcmp("musb_hdrc", (g)->name) 1001c05ad4447e4ecbd61647c102fb6f2f5a6634ff3David Brownell#else 1011c05ad4447e4ecbd61647c102fb6f2f5a6634ff3David Brownell#define gadget_is_musbhdrc(g) 0 1021c05ad4447e4ecbd61647c102fb6f2f5a6634ff3David Brownell#endif 1031c05ad4447e4ecbd61647c102fb6f2f5a6634ff3David Brownell 1045be19a9daa2df2507adf5b4676a7db8d131cf56eXiaochen Shen#ifdef CONFIG_USB_GADGET_LANGWELL 1055be19a9daa2df2507adf5b4676a7db8d131cf56eXiaochen Shen#define gadget_is_langwell(g) (!strcmp("langwell_udc", (g)->name)) 1065be19a9daa2df2507adf5b4676a7db8d131cf56eXiaochen Shen#else 1075be19a9daa2df2507adf5b4676a7db8d131cf56eXiaochen Shen#define gadget_is_langwell(g) 0 1085be19a9daa2df2507adf5b4676a7db8d131cf56eXiaochen Shen#endif 1095be19a9daa2df2507adf5b4676a7db8d131cf56eXiaochen Shen 1104cf2503c6801a69fee25030475eceeefb36d1b56Yoshihiro Shimoda#ifdef CONFIG_USB_GADGET_M66592 1114cf2503c6801a69fee25030475eceeefb36d1b56Yoshihiro Shimoda#define gadget_is_m66592(g) !strcmp("m66592_udc", (g)->name) 1124cf2503c6801a69fee25030475eceeefb36d1b56Yoshihiro Shimoda#else 1134cf2503c6801a69fee25030475eceeefb36d1b56Yoshihiro Shimoda#define gadget_is_m66592(g) 0 1144cf2503c6801a69fee25030475eceeefb36d1b56Yoshihiro Shimoda#endif 1154cf2503c6801a69fee25030475eceeefb36d1b56Yoshihiro Shimoda 1163948f0e0c999a6201e9898bb8fbe3c6cc1199276Li Yang/* Freescale CPM/QE UDC SUPPORT */ 1173948f0e0c999a6201e9898bb8fbe3c6cc1199276Li Yang#ifdef CONFIG_USB_GADGET_FSL_QE 1183948f0e0c999a6201e9898bb8fbe3c6cc1199276Li Yang#define gadget_is_fsl_qe(g) !strcmp("fsl_qe_udc", (g)->name) 1193948f0e0c999a6201e9898bb8fbe3c6cc1199276Li Yang#else 1203948f0e0c999a6201e9898bb8fbe3c6cc1199276Li Yang#define gadget_is_fsl_qe(g) 0 1213948f0e0c999a6201e9898bb8fbe3c6cc1199276Li Yang#endif 1223948f0e0c999a6201e9898bb8fbe3c6cc1199276Li Yang 123409a15da9851b6e6a5e1c5787be31a987184b7cfPavankumar Kondeti#ifdef CONFIG_USB_GADGET_CI13XXX_PCI 124409a15da9851b6e6a5e1c5787be31a987184b7cfPavankumar Kondeti#define gadget_is_ci13xxx_pci(g) (!strcmp("ci13xxx_pci", (g)->name)) 125aa69a8093ff985873cb44fe1157bd6db29a20fe4David Lopo#else 126409a15da9851b6e6a5e1c5787be31a987184b7cfPavankumar Kondeti#define gadget_is_ci13xxx_pci(g) 0 127aa69a8093ff985873cb44fe1157bd6db29a20fe4David Lopo#endif 1284cf2503c6801a69fee25030475eceeefb36d1b56Yoshihiro Shimoda 1291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds// CONFIG_USB_GADGET_SX2 1301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds// CONFIG_USB_GADGET_AU1X00 1311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds// ... 1321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 133c41442474a26984abaa094e96e42182868eab658Yoshihiro Shimoda#ifdef CONFIG_USB_GADGET_R8A66597 134c41442474a26984abaa094e96e42182868eab658Yoshihiro Shimoda#define gadget_is_r8a66597(g) !strcmp("r8a66597_udc", (g)->name) 135c41442474a26984abaa094e96e42182868eab658Yoshihiro Shimoda#else 136c41442474a26984abaa094e96e42182868eab658Yoshihiro Shimoda#define gadget_is_r8a66597(g) 0 137c41442474a26984abaa094e96e42182868eab658Yoshihiro Shimoda#endif 138c41442474a26984abaa094e96e42182868eab658Yoshihiro Shimoda 13983ba11d93434e6f0cc2e060336b0b19a3f687fa3Maurus Cuelenaere#ifdef CONFIG_USB_S3C_HSOTG 14083ba11d93434e6f0cc2e060336b0b19a3f687fa3Maurus Cuelenaere#define gadget_is_s3c_hsotg(g) (!strcmp("s3c-hsotg", (g)->name)) 14183ba11d93434e6f0cc2e060336b0b19a3f687fa3Maurus Cuelenaere#else 14283ba11d93434e6f0cc2e060336b0b19a3f687fa3Maurus Cuelenaere#define gadget_is_s3c_hsotg(g) 0 14383ba11d93434e6f0cc2e060336b0b19a3f687fa3Maurus Cuelenaere#endif 14483ba11d93434e6f0cc2e060336b0b19a3f687fa3Maurus Cuelenaere 145f646cf94520e22cb11eb5d2e9a35b33bfe4bea1bToshiharu Okada#ifdef CONFIG_USB_GADGET_EG20T 146f646cf94520e22cb11eb5d2e9a35b33bfe4bea1bToshiharu Okada#define gadget_is_pch(g) (!strcmp("pch_udc", (g)->name)) 147f646cf94520e22cb11eb5d2e9a35b33bfe4bea1bToshiharu Okada#else 148f646cf94520e22cb11eb5d2e9a35b33bfe4bea1bToshiharu Okada#define gadget_is_pch(g) 0 149f646cf94520e22cb11eb5d2e9a35b33bfe4bea1bToshiharu Okada#endif 15091e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell 15191e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell/** 15291e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell * usb_gadget_controller_number - support bcdDevice id convention 15391e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell * @gadget: the controller being driven 15491e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell * 15591e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell * Return a 2-digit BCD value associated with the peripheral controller, 15691e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell * suitable for use as part of a bcdDevice value, or a negative error code. 15791e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell * 15891e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell * NOTE: this convention is purely optional, and has no meaning in terms of 15991e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell * any USB specification. If you want to use a different convention in your 16091e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell * gadget driver firmware -- maybe a more formal revision ID -- feel free. 16191e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell * 16291e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell * Hosts see these bcdDevice numbers, and are allowed (but not encouraged!) 16391e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell * to change their behavior accordingly. For example it might help avoiding 16491e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell * some chip bug. 16591e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell */ 16691e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownellstatic inline int usb_gadget_controller_number(struct usb_gadget *gadget) 16791e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell{ 16891e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell if (gadget_is_net2280(gadget)) 16991e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell return 0x01; 17091e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell else if (gadget_is_dummy(gadget)) 17191e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell return 0x02; 17291e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell else if (gadget_is_pxa(gadget)) 17391e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell return 0x03; 17491e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell else if (gadget_is_goku(gadget)) 17591e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell return 0x06; 17691e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell else if (gadget_is_omap(gadget)) 17791e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell return 0x08; 17891e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell else if (gadget_is_lh7a40x(gadget)) 17991e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell return 0x09; 18091e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell else if (gadget_is_pxa27x(gadget)) 18191e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell return 0x11; 18291e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell else if (gadget_is_s3c2410(gadget)) 18391e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell return 0x12; 18491e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell else if (gadget_is_at91(gadget)) 18591e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell return 0x13; 18691e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell else if (gadget_is_imx(gadget)) 18791e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell return 0x14; 1881c05ad4447e4ecbd61647c102fb6f2f5a6634ff3David Brownell else if (gadget_is_musbhdrc(gadget)) 1891c05ad4447e4ecbd61647c102fb6f2f5a6634ff3David Brownell return 0x16; 19055b3fd41b0846929f68b5fb1058ad8077289f584Haavard Skinnemoen else if (gadget_is_atmel_usba(gadget)) 1911f5b9cc9e4cf5847e7550c4079cebb80170e71ddH�vard Skinnemoen return 0x18; 192d2eef1fc99640f7de302dcdbcfbdfcec2eef13f6Li Yang else if (gadget_is_fsl_usb2(gadget)) 193d2eef1fc99640f7de302dcdbcfbdfcec2eef13f6Li Yang return 0x19; 19455d402d854ade6b63b26e958f201ee2ef00b7b15Thomas Dahlmann else if (gadget_is_amd5536udc(gadget)) 19555d402d854ade6b63b26e958f201ee2ef00b7b15Thomas Dahlmann return 0x20; 1964cf2503c6801a69fee25030475eceeefb36d1b56Yoshihiro Shimoda else if (gadget_is_m66592(gadget)) 197598f22e11bef8171f2244128bf0341da38fe8a23Yoshihiro Shimoda return 0x21; 1983948f0e0c999a6201e9898bb8fbe3c6cc1199276Li Yang else if (gadget_is_fsl_qe(gadget)) 1993948f0e0c999a6201e9898bb8fbe3c6cc1199276Li Yang return 0x22; 200409a15da9851b6e6a5e1c5787be31a987184b7cfPavankumar Kondeti else if (gadget_is_ci13xxx_pci(gadget)) 201aa69a8093ff985873cb44fe1157bd6db29a20fe4David Lopo return 0x23; 2025be19a9daa2df2507adf5b4676a7db8d131cf56eXiaochen Shen else if (gadget_is_langwell(gadget)) 2035be19a9daa2df2507adf5b4676a7db8d131cf56eXiaochen Shen return 0x24; 204c41442474a26984abaa094e96e42182868eab658Yoshihiro Shimoda else if (gadget_is_r8a66597(gadget)) 205c41442474a26984abaa094e96e42182868eab658Yoshihiro Shimoda return 0x25; 20683ba11d93434e6f0cc2e060336b0b19a3f687fa3Maurus Cuelenaere else if (gadget_is_s3c_hsotg(gadget)) 20783ba11d93434e6f0cc2e060336b0b19a3f687fa3Maurus Cuelenaere return 0x26; 208f646cf94520e22cb11eb5d2e9a35b33bfe4bea1bToshiharu Okada else if (gadget_is_pch(gadget)) 209f646cf94520e22cb11eb5d2e9a35b33bfe4bea1bToshiharu Okada return 0x27; 21091e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell return -ENOENT; 21191e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell} 212da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell 213da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell 214da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell/** 215da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell * gadget_supports_altsettings - return true if altsettings work 216da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell * @gadget: the gadget in question 217da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell */ 218da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownellstatic inline bool gadget_supports_altsettings(struct usb_gadget *gadget) 219da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell{ 220da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell /* PXA 21x/25x/26x has no altsettings at all */ 221da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell if (gadget_is_pxa(gadget)) 222da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell return false; 223da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell 224da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell /* PXA 27x and 3xx have *broken* altsetting support */ 225da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell if (gadget_is_pxa27x(gadget)) 226da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell return false; 227da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell 228da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell /* Everything else is *presumably* fine ... */ 229da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell return true; 230da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell} 231e67d70f2f55d90c79dcb384ad5b798f0f9a68085Felipe Balbi 232e67d70f2f55d90c79dcb384ad5b798f0f9a68085Felipe Balbi#endif /* __GADGET_CHIPS_H */ 233