gadget_chips.h revision c41442474a26984abaa094e96e42182868eab658
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 487f9985c2e4e5555b750d6f891b4923e63cc834c1David Brownell/* SH3 UDC -- not yet ported 2.4 --> 2.6 */ 491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_USB_GADGET_SUPERH 501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_sh(g) !strcmp("sh_udc", (g)->name) 511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_sh(g) 0 531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 557f9985c2e4e5555b750d6f891b4923e63cc834c1David Brownell/* not yet stable on 2.6 (would help "original Zaurus") */ 561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_USB_GADGET_SA1100 571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_sa1100(g) !strcmp("sa1100_udc", (g)->name) 581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_sa1100(g) 0 601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_USB_GADGET_LH7A40X 631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_lh7a40x(g) !strcmp("lh7a40x_udc", (g)->name) 641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_lh7a40x(g) 0 661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 687f9985c2e4e5555b750d6f891b4923e63cc834c1David Brownell/* handhelds.org tree (?) */ 691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_USB_GADGET_MQ11XX 701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_mq11xx(g) !strcmp("mq11xx_udc", (g)->name) 711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_mq11xx(g) 0 731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_USB_GADGET_OMAP 761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_omap(g) !strcmp("omap_udc", (g)->name) 771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_omap(g) 0 791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 817f9985c2e4e5555b750d6f891b4923e63cc834c1David Brownell/* not yet ported 2.4 --> 2.6 */ 821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_USB_GADGET_N9604 831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_n9604(g) !strcmp("n9604_udc", (g)->name) 841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_n9604(g) 0 861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 887f9985c2e4e5555b750d6f891b4923e63cc834c1David Brownell/* various unstable versions available */ 891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_USB_GADGET_PXA27X 901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_pxa27x(g) !strcmp("pxa27x_udc", (g)->name) 911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_pxa27x(g) 0 931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 9555b3fd41b0846929f68b5fb1058ad8077289f584Haavard Skinnemoen#ifdef CONFIG_USB_GADGET_ATMEL_USBA 9655b3fd41b0846929f68b5fb1058ad8077289f584Haavard Skinnemoen#define gadget_is_atmel_usba(g) !strcmp("atmel_usba_udc", (g)->name) 971f5b9cc9e4cf5847e7550c4079cebb80170e71ddH�vard Skinnemoen#else 9855b3fd41b0846929f68b5fb1058ad8077289f584Haavard Skinnemoen#define gadget_is_atmel_usba(g) 0 991f5b9cc9e4cf5847e7550c4079cebb80170e71ddH�vard Skinnemoen#endif 1001f5b9cc9e4cf5847e7550c4079cebb80170e71ddH�vard Skinnemoen 1011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_USB_GADGET_S3C2410 1021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_s3c2410(g) !strcmp("s3c2410_udc", (g)->name) 1031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 1041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_s3c2410(g) 0 1051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 1061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_USB_GADGET_AT91 1081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_at91(g) !strcmp("at91_udc", (g)->name) 1091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 1101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define gadget_is_at91(g) 0 1111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 1121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 11391e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell#ifdef CONFIG_USB_GADGET_IMX 11491e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell#define gadget_is_imx(g) !strcmp("imx_udc", (g)->name) 11591e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell#else 11691e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell#define gadget_is_imx(g) 0 11791e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell#endif 11891e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell 119d2eef1fc99640f7de302dcdbcfbdfcec2eef13f6Li Yang#ifdef CONFIG_USB_GADGET_FSL_USB2 120d2eef1fc99640f7de302dcdbcfbdfcec2eef13f6Li Yang#define gadget_is_fsl_usb2(g) !strcmp("fsl-usb2-udc", (g)->name) 121d2eef1fc99640f7de302dcdbcfbdfcec2eef13f6Li Yang#else 122d2eef1fc99640f7de302dcdbcfbdfcec2eef13f6Li Yang#define gadget_is_fsl_usb2(g) 0 123d2eef1fc99640f7de302dcdbcfbdfcec2eef13f6Li Yang#endif 124d2eef1fc99640f7de302dcdbcfbdfcec2eef13f6Li Yang 1251c05ad4447e4ecbd61647c102fb6f2f5a6634ff3David Brownell/* Mentor high speed function controller */ 1267f9985c2e4e5555b750d6f891b4923e63cc834c1David Brownell/* from Montavista kernel (?) */ 1271c05ad4447e4ecbd61647c102fb6f2f5a6634ff3David Brownell#ifdef CONFIG_USB_GADGET_MUSBHSFC 1281c05ad4447e4ecbd61647c102fb6f2f5a6634ff3David Brownell#define gadget_is_musbhsfc(g) !strcmp("musbhsfc_udc", (g)->name) 1291c05ad4447e4ecbd61647c102fb6f2f5a6634ff3David Brownell#else 1301c05ad4447e4ecbd61647c102fb6f2f5a6634ff3David Brownell#define gadget_is_musbhsfc(g) 0 1311c05ad4447e4ecbd61647c102fb6f2f5a6634ff3David Brownell#endif 1321c05ad4447e4ecbd61647c102fb6f2f5a6634ff3David Brownell 13342795410c325108d59d0b1e750657197a7374c04David Brownell/* Mentor high speed "dual role" controller, in peripheral role */ 13442795410c325108d59d0b1e750657197a7374c04David Brownell#ifdef CONFIG_USB_GADGET_MUSB_HDRC 13542795410c325108d59d0b1e750657197a7374c04David Brownell#define gadget_is_musbhdrc(g) !strcmp("musb_hdrc", (g)->name) 1361c05ad4447e4ecbd61647c102fb6f2f5a6634ff3David Brownell#else 1371c05ad4447e4ecbd61647c102fb6f2f5a6634ff3David Brownell#define gadget_is_musbhdrc(g) 0 1381c05ad4447e4ecbd61647c102fb6f2f5a6634ff3David Brownell#endif 1391c05ad4447e4ecbd61647c102fb6f2f5a6634ff3David Brownell 1405be19a9daa2df2507adf5b4676a7db8d131cf56eXiaochen Shen#ifdef CONFIG_USB_GADGET_LANGWELL 1415be19a9daa2df2507adf5b4676a7db8d131cf56eXiaochen Shen#define gadget_is_langwell(g) (!strcmp("langwell_udc", (g)->name)) 1425be19a9daa2df2507adf5b4676a7db8d131cf56eXiaochen Shen#else 1435be19a9daa2df2507adf5b4676a7db8d131cf56eXiaochen Shen#define gadget_is_langwell(g) 0 1445be19a9daa2df2507adf5b4676a7db8d131cf56eXiaochen Shen#endif 1455be19a9daa2df2507adf5b4676a7db8d131cf56eXiaochen Shen 1467f9985c2e4e5555b750d6f891b4923e63cc834c1David Brownell/* from Montavista kernel (?) */ 1471c05ad4447e4ecbd61647c102fb6f2f5a6634ff3David Brownell#ifdef CONFIG_USB_GADGET_MPC8272 1481c05ad4447e4ecbd61647c102fb6f2f5a6634ff3David Brownell#define gadget_is_mpc8272(g) !strcmp("mpc8272_udc", (g)->name) 1491c05ad4447e4ecbd61647c102fb6f2f5a6634ff3David Brownell#else 1501c05ad4447e4ecbd61647c102fb6f2f5a6634ff3David Brownell#define gadget_is_mpc8272(g) 0 1511c05ad4447e4ecbd61647c102fb6f2f5a6634ff3David Brownell#endif 1521c05ad4447e4ecbd61647c102fb6f2f5a6634ff3David Brownell 1534cf2503c6801a69fee25030475eceeefb36d1b56Yoshihiro Shimoda#ifdef CONFIG_USB_GADGET_M66592 1544cf2503c6801a69fee25030475eceeefb36d1b56Yoshihiro Shimoda#define gadget_is_m66592(g) !strcmp("m66592_udc", (g)->name) 1554cf2503c6801a69fee25030475eceeefb36d1b56Yoshihiro Shimoda#else 1564cf2503c6801a69fee25030475eceeefb36d1b56Yoshihiro Shimoda#define gadget_is_m66592(g) 0 1574cf2503c6801a69fee25030475eceeefb36d1b56Yoshihiro Shimoda#endif 1584cf2503c6801a69fee25030475eceeefb36d1b56Yoshihiro Shimoda 1593948f0e0c999a6201e9898bb8fbe3c6cc1199276Li Yang/* Freescale CPM/QE UDC SUPPORT */ 1603948f0e0c999a6201e9898bb8fbe3c6cc1199276Li Yang#ifdef CONFIG_USB_GADGET_FSL_QE 1613948f0e0c999a6201e9898bb8fbe3c6cc1199276Li Yang#define gadget_is_fsl_qe(g) !strcmp("fsl_qe_udc", (g)->name) 1623948f0e0c999a6201e9898bb8fbe3c6cc1199276Li Yang#else 1633948f0e0c999a6201e9898bb8fbe3c6cc1199276Li Yang#define gadget_is_fsl_qe(g) 0 1643948f0e0c999a6201e9898bb8fbe3c6cc1199276Li Yang#endif 1653948f0e0c999a6201e9898bb8fbe3c6cc1199276Li Yang 166aa69a8093ff985873cb44fe1157bd6db29a20fe4David Lopo#ifdef CONFIG_USB_GADGET_CI13XXX 167aa69a8093ff985873cb44fe1157bd6db29a20fe4David Lopo#define gadget_is_ci13xxx(g) (!strcmp("ci13xxx_udc", (g)->name)) 168aa69a8093ff985873cb44fe1157bd6db29a20fe4David Lopo#else 169aa69a8093ff985873cb44fe1157bd6db29a20fe4David Lopo#define gadget_is_ci13xxx(g) 0 170aa69a8093ff985873cb44fe1157bd6db29a20fe4David Lopo#endif 1714cf2503c6801a69fee25030475eceeefb36d1b56Yoshihiro Shimoda 1721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds// CONFIG_USB_GADGET_SX2 1731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds// CONFIG_USB_GADGET_AU1X00 1741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds// ... 1751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 176c41442474a26984abaa094e96e42182868eab658Yoshihiro Shimoda#ifdef CONFIG_USB_GADGET_R8A66597 177c41442474a26984abaa094e96e42182868eab658Yoshihiro Shimoda#define gadget_is_r8a66597(g) !strcmp("r8a66597_udc", (g)->name) 178c41442474a26984abaa094e96e42182868eab658Yoshihiro Shimoda#else 179c41442474a26984abaa094e96e42182868eab658Yoshihiro Shimoda#define gadget_is_r8a66597(g) 0 180c41442474a26984abaa094e96e42182868eab658Yoshihiro Shimoda#endif 181c41442474a26984abaa094e96e42182868eab658Yoshihiro Shimoda 18291e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell 18391e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell/** 18491e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell * usb_gadget_controller_number - support bcdDevice id convention 18591e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell * @gadget: the controller being driven 18691e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell * 18791e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell * Return a 2-digit BCD value associated with the peripheral controller, 18891e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell * suitable for use as part of a bcdDevice value, or a negative error code. 18991e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell * 19091e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell * NOTE: this convention is purely optional, and has no meaning in terms of 19191e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell * any USB specification. If you want to use a different convention in your 19291e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell * gadget driver firmware -- maybe a more formal revision ID -- feel free. 19391e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell * 19491e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell * Hosts see these bcdDevice numbers, and are allowed (but not encouraged!) 19591e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell * to change their behavior accordingly. For example it might help avoiding 19691e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell * some chip bug. 19791e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell */ 19891e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownellstatic inline int usb_gadget_controller_number(struct usb_gadget *gadget) 19991e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell{ 20091e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell if (gadget_is_net2280(gadget)) 20191e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell return 0x01; 20291e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell else if (gadget_is_dummy(gadget)) 20391e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell return 0x02; 20491e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell else if (gadget_is_pxa(gadget)) 20591e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell return 0x03; 20691e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell else if (gadget_is_sh(gadget)) 20791e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell return 0x04; 20891e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell else if (gadget_is_sa1100(gadget)) 20991e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell return 0x05; 21091e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell else if (gadget_is_goku(gadget)) 21191e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell return 0x06; 21291e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell else if (gadget_is_mq11xx(gadget)) 21391e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell return 0x07; 21491e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell else if (gadget_is_omap(gadget)) 21591e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell return 0x08; 21691e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell else if (gadget_is_lh7a40x(gadget)) 21791e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell return 0x09; 21891e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell else if (gadget_is_n9604(gadget)) 21991e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell return 0x10; 22091e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell else if (gadget_is_pxa27x(gadget)) 22191e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell return 0x11; 22291e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell else if (gadget_is_s3c2410(gadget)) 22391e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell return 0x12; 22491e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell else if (gadget_is_at91(gadget)) 22591e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell return 0x13; 22691e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell else if (gadget_is_imx(gadget)) 22791e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell return 0x14; 2281c05ad4447e4ecbd61647c102fb6f2f5a6634ff3David Brownell else if (gadget_is_musbhsfc(gadget)) 2291c05ad4447e4ecbd61647c102fb6f2f5a6634ff3David Brownell return 0x15; 2301c05ad4447e4ecbd61647c102fb6f2f5a6634ff3David Brownell else if (gadget_is_musbhdrc(gadget)) 2311c05ad4447e4ecbd61647c102fb6f2f5a6634ff3David Brownell return 0x16; 2321c05ad4447e4ecbd61647c102fb6f2f5a6634ff3David Brownell else if (gadget_is_mpc8272(gadget)) 2331c05ad4447e4ecbd61647c102fb6f2f5a6634ff3David Brownell return 0x17; 23455b3fd41b0846929f68b5fb1058ad8077289f584Haavard Skinnemoen else if (gadget_is_atmel_usba(gadget)) 2351f5b9cc9e4cf5847e7550c4079cebb80170e71ddH�vard Skinnemoen return 0x18; 236d2eef1fc99640f7de302dcdbcfbdfcec2eef13f6Li Yang else if (gadget_is_fsl_usb2(gadget)) 237d2eef1fc99640f7de302dcdbcfbdfcec2eef13f6Li Yang return 0x19; 23855d402d854ade6b63b26e958f201ee2ef00b7b15Thomas Dahlmann else if (gadget_is_amd5536udc(gadget)) 23955d402d854ade6b63b26e958f201ee2ef00b7b15Thomas Dahlmann return 0x20; 2404cf2503c6801a69fee25030475eceeefb36d1b56Yoshihiro Shimoda else if (gadget_is_m66592(gadget)) 241598f22e11bef8171f2244128bf0341da38fe8a23Yoshihiro Shimoda return 0x21; 2423948f0e0c999a6201e9898bb8fbe3c6cc1199276Li Yang else if (gadget_is_fsl_qe(gadget)) 2433948f0e0c999a6201e9898bb8fbe3c6cc1199276Li Yang return 0x22; 244aa69a8093ff985873cb44fe1157bd6db29a20fe4David Lopo else if (gadget_is_ci13xxx(gadget)) 245aa69a8093ff985873cb44fe1157bd6db29a20fe4David Lopo return 0x23; 2465be19a9daa2df2507adf5b4676a7db8d131cf56eXiaochen Shen else if (gadget_is_langwell(gadget)) 2475be19a9daa2df2507adf5b4676a7db8d131cf56eXiaochen Shen return 0x24; 248c41442474a26984abaa094e96e42182868eab658Yoshihiro Shimoda else if (gadget_is_r8a66597(gadget)) 249c41442474a26984abaa094e96e42182868eab658Yoshihiro Shimoda return 0x25; 25091e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell return -ENOENT; 25191e79c91fab10f5790159d8d0c1d16da2a9653f9David Brownell} 252da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell 253da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell 254da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell/** 255da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell * gadget_supports_altsettings - return true if altsettings work 256da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell * @gadget: the gadget in question 257da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell */ 258da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownellstatic inline bool gadget_supports_altsettings(struct usb_gadget *gadget) 259da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell{ 260da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell /* PXA 21x/25x/26x has no altsettings at all */ 261da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell if (gadget_is_pxa(gadget)) 262da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell return false; 263da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell 264da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell /* PXA 27x and 3xx have *broken* altsetting support */ 265da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell if (gadget_is_pxa27x(gadget)) 266da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell return false; 267da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell 268da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell /* SH3 hardware just doesn't do altsettings */ 269da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell if (gadget_is_sh(gadget)) 270da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell return false; 271da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell 272da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell /* Everything else is *presumably* fine ... */ 273da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell return true; 274da741b8c56d612b5dd26ffa31341911a5fea23eeDavid Brownell} 275e67d70f2f55d90c79dcb384ad5b798f0f9a68085Felipe Balbi 276e67d70f2f55d90c79dcb384ad5b798f0f9a68085Felipe Balbi#endif /* __GADGET_CHIPS_H */ 277