diff options
Diffstat (limited to 'drivers/usb/host/ohci-hcd.c')
-rw-r--r-- | drivers/usb/host/ohci-hcd.c | 92 |
1 files changed, 80 insertions, 12 deletions
diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c index c1c1d871aba4..3f80003b40bd 100644 --- a/drivers/usb/host/ohci-hcd.c +++ b/drivers/usb/host/ohci-hcd.c | |||
@@ -855,63 +855,131 @@ MODULE_LICENSE ("GPL"); | |||
855 | 855 | ||
856 | #ifdef CONFIG_PCI | 856 | #ifdef CONFIG_PCI |
857 | #include "ohci-pci.c" | 857 | #include "ohci-pci.c" |
858 | #define PCI_DRIVER ohci_pci_driver | ||
858 | #endif | 859 | #endif |
859 | 860 | ||
860 | #ifdef CONFIG_SA1111 | 861 | #ifdef CONFIG_SA1111 |
861 | #include "ohci-sa1111.c" | 862 | #include "ohci-sa1111.c" |
863 | #define SA1111_DRIVER ohci_hcd_sa1111_driver | ||
862 | #endif | 864 | #endif |
863 | 865 | ||
864 | #ifdef CONFIG_ARCH_S3C2410 | 866 | #ifdef CONFIG_ARCH_S3C2410 |
865 | #include "ohci-s3c2410.c" | 867 | #include "ohci-s3c2410.c" |
868 | #define PLATFORM_DRIVER ohci_hcd_s3c2410_driver | ||
866 | #endif | 869 | #endif |
867 | 870 | ||
868 | #ifdef CONFIG_ARCH_OMAP | 871 | #ifdef CONFIG_ARCH_OMAP |
869 | #include "ohci-omap.c" | 872 | #include "ohci-omap.c" |
873 | #define PLATFORM_DRIVER ohci_hcd_omap_driver | ||
870 | #endif | 874 | #endif |
871 | 875 | ||
872 | #ifdef CONFIG_ARCH_LH7A404 | 876 | #ifdef CONFIG_ARCH_LH7A404 |
873 | #include "ohci-lh7a404.c" | 877 | #include "ohci-lh7a404.c" |
878 | #define PLATFORM_DRIVER ohci_hcd_lh7a404_driver | ||
874 | #endif | 879 | #endif |
875 | 880 | ||
876 | #ifdef CONFIG_PXA27x | 881 | #ifdef CONFIG_PXA27x |
877 | #include "ohci-pxa27x.c" | 882 | #include "ohci-pxa27x.c" |
883 | #define PLATFORM_DRIVER ohci_hcd_pxa27x_driver | ||
878 | #endif | 884 | #endif |
879 | 885 | ||
880 | #ifdef CONFIG_ARCH_EP93XX | 886 | #ifdef CONFIG_ARCH_EP93XX |
881 | #include "ohci-ep93xx.c" | 887 | #include "ohci-ep93xx.c" |
888 | #define PLATFORM_DRIVER ohci_hcd_ep93xx_driver | ||
882 | #endif | 889 | #endif |
883 | 890 | ||
884 | #ifdef CONFIG_SOC_AU1X00 | 891 | #ifdef CONFIG_SOC_AU1X00 |
885 | #include "ohci-au1xxx.c" | 892 | #include "ohci-au1xxx.c" |
893 | #define PLATFORM_DRIVER ohci_hcd_au1xxx_driver | ||
886 | #endif | 894 | #endif |
887 | 895 | ||
888 | #ifdef CONFIG_PNX8550 | 896 | #ifdef CONFIG_PNX8550 |
889 | #include "ohci-pnx8550.c" | 897 | #include "ohci-pnx8550.c" |
898 | #define PLATFORM_DRIVER ohci_hcd_pnx8550_driver | ||
890 | #endif | 899 | #endif |
891 | 900 | ||
892 | #ifdef CONFIG_USB_OHCI_HCD_PPC_SOC | 901 | #ifdef CONFIG_USB_OHCI_HCD_PPC_SOC |
893 | #include "ohci-ppc-soc.c" | 902 | #include "ohci-ppc-soc.c" |
903 | #define PLATFORM_DRIVER ohci_hcd_ppc_soc_driver | ||
894 | #endif | 904 | #endif |
895 | 905 | ||
896 | #ifdef CONFIG_ARCH_AT91 | 906 | #ifdef CONFIG_ARCH_AT91 |
897 | #include "ohci-at91.c" | 907 | #include "ohci-at91.c" |
908 | #define PLATFORM_DRIVER ohci_hcd_at91_driver | ||
898 | #endif | 909 | #endif |
899 | 910 | ||
900 | #ifdef CONFIG_ARCH_PNX4008 | 911 | #ifdef CONFIG_ARCH_PNX4008 |
901 | #include "ohci-pnx4008.c" | 912 | #include "ohci-pnx4008.c" |
913 | #define PLATFORM_DRIVER usb_hcd_pnx4008_driver | ||
902 | #endif | 914 | #endif |
903 | 915 | ||
904 | #if !(defined(CONFIG_PCI) \ | 916 | |
905 | || defined(CONFIG_SA1111) \ | 917 | #if !defined(PCI_DRIVER) && \ |
906 | || defined(CONFIG_ARCH_S3C2410) \ | 918 | !defined(PLATFORM_DRIVER) && \ |
907 | || defined(CONFIG_ARCH_OMAP) \ | 919 | !defined(SA1111_DRIVER) |
908 | || defined (CONFIG_ARCH_LH7A404) \ | ||
909 | || defined (CONFIG_PXA27x) \ | ||
910 | || defined (CONFIG_ARCH_EP93XX) \ | ||
911 | || defined (CONFIG_SOC_AU1X00) \ | ||
912 | || defined (CONFIG_USB_OHCI_HCD_PPC_SOC) \ | ||
913 | || defined (CONFIG_ARCH_AT91) \ | ||
914 | || defined (CONFIG_ARCH_PNX4008) \ | ||
915 | ) | ||
916 | #error "missing bus glue for ohci-hcd" | 920 | #error "missing bus glue for ohci-hcd" |
917 | #endif | 921 | #endif |
922 | |||
923 | static int __init ohci_hcd_mod_init(void) | ||
924 | { | ||
925 | int retval = 0; | ||
926 | int ls = 0; | ||
927 | |||
928 | if (usb_disabled()) | ||
929 | return -ENODEV; | ||
930 | |||
931 | printk (KERN_DEBUG "%s: " DRIVER_INFO "\n", hcd_name); | ||
932 | pr_debug ("%s: block sizes: ed %Zd td %Zd\n", hcd_name, | ||
933 | sizeof (struct ed), sizeof (struct td)); | ||
934 | |||
935 | #ifdef PLATFORM_DRIVER | ||
936 | retval = platform_driver_register(&PLATFORM_DRIVER); | ||
937 | if (retval < 0) | ||
938 | return retval; | ||
939 | ls++; | ||
940 | #endif | ||
941 | |||
942 | #ifdef SA1111_DRIVER | ||
943 | retval = sa1111_driver_register(&SA1111_DRIVER); | ||
944 | if (retval < 0) | ||
945 | goto error; | ||
946 | ls++; | ||
947 | #endif | ||
948 | |||
949 | #ifdef PCI_DRIVER | ||
950 | retval = pci_register_driver(&PCI_DRIVER); | ||
951 | if (retval < 0) | ||
952 | goto error; | ||
953 | ls++; | ||
954 | #endif | ||
955 | |||
956 | return retval; | ||
957 | |||
958 | /* Error path */ | ||
959 | error: | ||
960 | #ifdef PLATFORM_DRIVER | ||
961 | if (ls--) | ||
962 | platform_driver_unregister(&PLATFORM_DRIVER); | ||
963 | #endif | ||
964 | #ifdef SA1111_DRIVER | ||
965 | if (ls--) | ||
966 | sa1111_driver_unregister(&SA1111_DRIVER); | ||
967 | #endif | ||
968 | return retval; | ||
969 | } | ||
970 | module_init(ohci_hcd_mod_init); | ||
971 | |||
972 | static void __exit ohci_hcd_mod_exit(void) | ||
973 | { | ||
974 | #ifdef PCI_DRIVER | ||
975 | pci_unregister_driver(&PCI_DRIVER); | ||
976 | #endif | ||
977 | #ifdef SA1111_DRIVER | ||
978 | sa1111_driver_unregister(&SA1111_DRIVER); | ||
979 | #endif | ||
980 | #ifdef PLATFORM_DRIVER | ||
981 | platform_driver_unregister(&PLATFORM_DRIVER); | ||
982 | #endif | ||
983 | } | ||
984 | module_exit(ohci_hcd_mod_exit); | ||
985 | |||