micrel.c (75e75cbd55183ff12459666c0a1d3e71fe1481ab) micrel.c (529ed12752635ba8a35dc78ec70ed6f42570b4ca)
1/*
2 * drivers/net/phy/micrel.c
3 *
4 * Driver for Micrel PHYs
5 *
6 * Author: David J. Choi
7 *
8 * Copyright (c) 2010-2013 Micrel, Inc.

--- 776 unchanged lines hidden (view full) ---

785 return 0;
786}
787
788static struct phy_driver ksphy_driver[] = {
789{
790 .phy_id = PHY_ID_KS8737,
791 .phy_id_mask = MICREL_PHY_ID_MASK,
792 .name = "Micrel KS8737",
1/*
2 * drivers/net/phy/micrel.c
3 *
4 * Driver for Micrel PHYs
5 *
6 * Author: David J. Choi
7 *
8 * Copyright (c) 2010-2013 Micrel, Inc.

--- 776 unchanged lines hidden (view full) ---

785 return 0;
786}
787
788static struct phy_driver ksphy_driver[] = {
789{
790 .phy_id = PHY_ID_KS8737,
791 .phy_id_mask = MICREL_PHY_ID_MASK,
792 .name = "Micrel KS8737",
793 .features = (PHY_BASIC_FEATURES | SUPPORTED_Pause),
793 .features = PHY_BASIC_FEATURES,
794 .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
795 .driver_data = &ks8737_type,
796 .config_init = kszphy_config_init,
797 .config_aneg = genphy_config_aneg,
798 .read_status = genphy_read_status,
799 .ack_interrupt = kszphy_ack_interrupt,
800 .config_intr = kszphy_config_intr,
801 .get_sset_count = kszphy_get_sset_count,
802 .get_strings = kszphy_get_strings,
803 .get_stats = kszphy_get_stats,
804 .suspend = genphy_suspend,
805 .resume = genphy_resume,
806}, {
807 .phy_id = PHY_ID_KSZ8021,
808 .phy_id_mask = 0x00ffffff,
809 .name = "Micrel KSZ8021 or KSZ8031",
794 .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
795 .driver_data = &ks8737_type,
796 .config_init = kszphy_config_init,
797 .config_aneg = genphy_config_aneg,
798 .read_status = genphy_read_status,
799 .ack_interrupt = kszphy_ack_interrupt,
800 .config_intr = kszphy_config_intr,
801 .get_sset_count = kszphy_get_sset_count,
802 .get_strings = kszphy_get_strings,
803 .get_stats = kszphy_get_stats,
804 .suspend = genphy_suspend,
805 .resume = genphy_resume,
806}, {
807 .phy_id = PHY_ID_KSZ8021,
808 .phy_id_mask = 0x00ffffff,
809 .name = "Micrel KSZ8021 or KSZ8031",
810 .features = (PHY_BASIC_FEATURES | SUPPORTED_Pause |
811 SUPPORTED_Asym_Pause),
810 .features = PHY_BASIC_FEATURES,
812 .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
813 .driver_data = &ksz8021_type,
814 .probe = kszphy_probe,
815 .config_init = kszphy_config_init,
816 .config_aneg = genphy_config_aneg,
817 .read_status = genphy_read_status,
818 .ack_interrupt = kszphy_ack_interrupt,
819 .config_intr = kszphy_config_intr,
820 .get_sset_count = kszphy_get_sset_count,
821 .get_strings = kszphy_get_strings,
822 .get_stats = kszphy_get_stats,
823 .suspend = genphy_suspend,
824 .resume = genphy_resume,
825}, {
826 .phy_id = PHY_ID_KSZ8031,
827 .phy_id_mask = 0x00ffffff,
828 .name = "Micrel KSZ8031",
811 .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
812 .driver_data = &ksz8021_type,
813 .probe = kszphy_probe,
814 .config_init = kszphy_config_init,
815 .config_aneg = genphy_config_aneg,
816 .read_status = genphy_read_status,
817 .ack_interrupt = kszphy_ack_interrupt,
818 .config_intr = kszphy_config_intr,
819 .get_sset_count = kszphy_get_sset_count,
820 .get_strings = kszphy_get_strings,
821 .get_stats = kszphy_get_stats,
822 .suspend = genphy_suspend,
823 .resume = genphy_resume,
824}, {
825 .phy_id = PHY_ID_KSZ8031,
826 .phy_id_mask = 0x00ffffff,
827 .name = "Micrel KSZ8031",
829 .features = (PHY_BASIC_FEATURES | SUPPORTED_Pause |
830 SUPPORTED_Asym_Pause),
828 .features = PHY_BASIC_FEATURES,
831 .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
832 .driver_data = &ksz8021_type,
833 .probe = kszphy_probe,
834 .config_init = kszphy_config_init,
835 .config_aneg = genphy_config_aneg,
836 .read_status = genphy_read_status,
837 .ack_interrupt = kszphy_ack_interrupt,
838 .config_intr = kszphy_config_intr,
839 .get_sset_count = kszphy_get_sset_count,
840 .get_strings = kszphy_get_strings,
841 .get_stats = kszphy_get_stats,
842 .suspend = genphy_suspend,
843 .resume = genphy_resume,
844}, {
845 .phy_id = PHY_ID_KSZ8041,
846 .phy_id_mask = MICREL_PHY_ID_MASK,
847 .name = "Micrel KSZ8041",
829 .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
830 .driver_data = &ksz8021_type,
831 .probe = kszphy_probe,
832 .config_init = kszphy_config_init,
833 .config_aneg = genphy_config_aneg,
834 .read_status = genphy_read_status,
835 .ack_interrupt = kszphy_ack_interrupt,
836 .config_intr = kszphy_config_intr,
837 .get_sset_count = kszphy_get_sset_count,
838 .get_strings = kszphy_get_strings,
839 .get_stats = kszphy_get_stats,
840 .suspend = genphy_suspend,
841 .resume = genphy_resume,
842}, {
843 .phy_id = PHY_ID_KSZ8041,
844 .phy_id_mask = MICREL_PHY_ID_MASK,
845 .name = "Micrel KSZ8041",
848 .features = (PHY_BASIC_FEATURES | SUPPORTED_Pause
849 | SUPPORTED_Asym_Pause),
846 .features = PHY_BASIC_FEATURES,
850 .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
851 .driver_data = &ksz8041_type,
852 .probe = kszphy_probe,
853 .config_init = ksz8041_config_init,
854 .config_aneg = ksz8041_config_aneg,
855 .read_status = genphy_read_status,
856 .ack_interrupt = kszphy_ack_interrupt,
857 .config_intr = kszphy_config_intr,
858 .get_sset_count = kszphy_get_sset_count,
859 .get_strings = kszphy_get_strings,
860 .get_stats = kszphy_get_stats,
861 .suspend = genphy_suspend,
862 .resume = genphy_resume,
863}, {
864 .phy_id = PHY_ID_KSZ8041RNLI,
865 .phy_id_mask = MICREL_PHY_ID_MASK,
866 .name = "Micrel KSZ8041RNLI",
847 .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
848 .driver_data = &ksz8041_type,
849 .probe = kszphy_probe,
850 .config_init = ksz8041_config_init,
851 .config_aneg = ksz8041_config_aneg,
852 .read_status = genphy_read_status,
853 .ack_interrupt = kszphy_ack_interrupt,
854 .config_intr = kszphy_config_intr,
855 .get_sset_count = kszphy_get_sset_count,
856 .get_strings = kszphy_get_strings,
857 .get_stats = kszphy_get_stats,
858 .suspend = genphy_suspend,
859 .resume = genphy_resume,
860}, {
861 .phy_id = PHY_ID_KSZ8041RNLI,
862 .phy_id_mask = MICREL_PHY_ID_MASK,
863 .name = "Micrel KSZ8041RNLI",
867 .features = PHY_BASIC_FEATURES |
868 SUPPORTED_Pause | SUPPORTED_Asym_Pause,
864 .features = PHY_BASIC_FEATURES,
869 .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
870 .driver_data = &ksz8041_type,
871 .probe = kszphy_probe,
872 .config_init = kszphy_config_init,
873 .config_aneg = genphy_config_aneg,
874 .read_status = genphy_read_status,
875 .ack_interrupt = kszphy_ack_interrupt,
876 .config_intr = kszphy_config_intr,
877 .get_sset_count = kszphy_get_sset_count,
878 .get_strings = kszphy_get_strings,
879 .get_stats = kszphy_get_stats,
880 .suspend = genphy_suspend,
881 .resume = genphy_resume,
882}, {
883 .phy_id = PHY_ID_KSZ8051,
884 .phy_id_mask = MICREL_PHY_ID_MASK,
885 .name = "Micrel KSZ8051",
865 .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
866 .driver_data = &ksz8041_type,
867 .probe = kszphy_probe,
868 .config_init = kszphy_config_init,
869 .config_aneg = genphy_config_aneg,
870 .read_status = genphy_read_status,
871 .ack_interrupt = kszphy_ack_interrupt,
872 .config_intr = kszphy_config_intr,
873 .get_sset_count = kszphy_get_sset_count,
874 .get_strings = kszphy_get_strings,
875 .get_stats = kszphy_get_stats,
876 .suspend = genphy_suspend,
877 .resume = genphy_resume,
878}, {
879 .phy_id = PHY_ID_KSZ8051,
880 .phy_id_mask = MICREL_PHY_ID_MASK,
881 .name = "Micrel KSZ8051",
886 .features = (PHY_BASIC_FEATURES | SUPPORTED_Pause
887 | SUPPORTED_Asym_Pause),
882 .features = PHY_BASIC_FEATURES,
888 .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
889 .driver_data = &ksz8051_type,
890 .probe = kszphy_probe,
891 .config_init = kszphy_config_init,
892 .config_aneg = genphy_config_aneg,
893 .read_status = genphy_read_status,
894 .ack_interrupt = kszphy_ack_interrupt,
895 .config_intr = kszphy_config_intr,
896 .get_sset_count = kszphy_get_sset_count,
897 .get_strings = kszphy_get_strings,
898 .get_stats = kszphy_get_stats,
899 .suspend = genphy_suspend,
900 .resume = genphy_resume,
901}, {
902 .phy_id = PHY_ID_KSZ8001,
903 .name = "Micrel KSZ8001 or KS8721",
904 .phy_id_mask = 0x00fffffc,
883 .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
884 .driver_data = &ksz8051_type,
885 .probe = kszphy_probe,
886 .config_init = kszphy_config_init,
887 .config_aneg = genphy_config_aneg,
888 .read_status = genphy_read_status,
889 .ack_interrupt = kszphy_ack_interrupt,
890 .config_intr = kszphy_config_intr,
891 .get_sset_count = kszphy_get_sset_count,
892 .get_strings = kszphy_get_strings,
893 .get_stats = kszphy_get_stats,
894 .suspend = genphy_suspend,
895 .resume = genphy_resume,
896}, {
897 .phy_id = PHY_ID_KSZ8001,
898 .name = "Micrel KSZ8001 or KS8721",
899 .phy_id_mask = 0x00fffffc,
905 .features = (PHY_BASIC_FEATURES | SUPPORTED_Pause),
900 .features = PHY_BASIC_FEATURES,
906 .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
907 .driver_data = &ksz8041_type,
908 .probe = kszphy_probe,
909 .config_init = kszphy_config_init,
910 .config_aneg = genphy_config_aneg,
911 .read_status = genphy_read_status,
912 .ack_interrupt = kszphy_ack_interrupt,
913 .config_intr = kszphy_config_intr,
914 .get_sset_count = kszphy_get_sset_count,
915 .get_strings = kszphy_get_strings,
916 .get_stats = kszphy_get_stats,
917 .suspend = genphy_suspend,
918 .resume = genphy_resume,
919}, {
920 .phy_id = PHY_ID_KSZ8081,
921 .name = "Micrel KSZ8081 or KSZ8091",
922 .phy_id_mask = MICREL_PHY_ID_MASK,
901 .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
902 .driver_data = &ksz8041_type,
903 .probe = kszphy_probe,
904 .config_init = kszphy_config_init,
905 .config_aneg = genphy_config_aneg,
906 .read_status = genphy_read_status,
907 .ack_interrupt = kszphy_ack_interrupt,
908 .config_intr = kszphy_config_intr,
909 .get_sset_count = kszphy_get_sset_count,
910 .get_strings = kszphy_get_strings,
911 .get_stats = kszphy_get_stats,
912 .suspend = genphy_suspend,
913 .resume = genphy_resume,
914}, {
915 .phy_id = PHY_ID_KSZ8081,
916 .name = "Micrel KSZ8081 or KSZ8091",
917 .phy_id_mask = MICREL_PHY_ID_MASK,
923 .features = (PHY_BASIC_FEATURES | SUPPORTED_Pause),
918 .features = PHY_BASIC_FEATURES,
924 .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
925 .driver_data = &ksz8081_type,
926 .probe = kszphy_probe,
927 .config_init = kszphy_config_init,
928 .config_aneg = genphy_config_aneg,
929 .read_status = genphy_read_status,
930 .ack_interrupt = kszphy_ack_interrupt,
931 .config_intr = kszphy_config_intr,
932 .get_sset_count = kszphy_get_sset_count,
933 .get_strings = kszphy_get_strings,
934 .get_stats = kszphy_get_stats,
935 .suspend = kszphy_suspend,
936 .resume = kszphy_resume,
937}, {
938 .phy_id = PHY_ID_KSZ8061,
939 .name = "Micrel KSZ8061",
940 .phy_id_mask = MICREL_PHY_ID_MASK,
919 .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
920 .driver_data = &ksz8081_type,
921 .probe = kszphy_probe,
922 .config_init = kszphy_config_init,
923 .config_aneg = genphy_config_aneg,
924 .read_status = genphy_read_status,
925 .ack_interrupt = kszphy_ack_interrupt,
926 .config_intr = kszphy_config_intr,
927 .get_sset_count = kszphy_get_sset_count,
928 .get_strings = kszphy_get_strings,
929 .get_stats = kszphy_get_stats,
930 .suspend = kszphy_suspend,
931 .resume = kszphy_resume,
932}, {
933 .phy_id = PHY_ID_KSZ8061,
934 .name = "Micrel KSZ8061",
935 .phy_id_mask = MICREL_PHY_ID_MASK,
941 .features = (PHY_BASIC_FEATURES | SUPPORTED_Pause),
936 .features = PHY_BASIC_FEATURES,
942 .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
943 .config_init = kszphy_config_init,
944 .config_aneg = genphy_config_aneg,
945 .read_status = genphy_read_status,
946 .ack_interrupt = kszphy_ack_interrupt,
947 .config_intr = kszphy_config_intr,
948 .get_sset_count = kszphy_get_sset_count,
949 .get_strings = kszphy_get_strings,
950 .get_stats = kszphy_get_stats,
951 .suspend = genphy_suspend,
952 .resume = genphy_resume,
953}, {
954 .phy_id = PHY_ID_KSZ9021,
955 .phy_id_mask = 0x000ffffe,
956 .name = "Micrel KSZ9021 Gigabit PHY",
937 .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
938 .config_init = kszphy_config_init,
939 .config_aneg = genphy_config_aneg,
940 .read_status = genphy_read_status,
941 .ack_interrupt = kszphy_ack_interrupt,
942 .config_intr = kszphy_config_intr,
943 .get_sset_count = kszphy_get_sset_count,
944 .get_strings = kszphy_get_strings,
945 .get_stats = kszphy_get_stats,
946 .suspend = genphy_suspend,
947 .resume = genphy_resume,
948}, {
949 .phy_id = PHY_ID_KSZ9021,
950 .phy_id_mask = 0x000ffffe,
951 .name = "Micrel KSZ9021 Gigabit PHY",
957 .features = (PHY_GBIT_FEATURES | SUPPORTED_Pause),
952 .features = PHY_GBIT_FEATURES,
958 .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
959 .driver_data = &ksz9021_type,
960 .config_init = ksz9021_config_init,
961 .config_aneg = genphy_config_aneg,
962 .read_status = genphy_read_status,
963 .ack_interrupt = kszphy_ack_interrupt,
964 .config_intr = kszphy_config_intr,
965 .get_sset_count = kszphy_get_sset_count,
966 .get_strings = kszphy_get_strings,
967 .get_stats = kszphy_get_stats,
968 .suspend = genphy_suspend,
969 .resume = genphy_resume,
970 .read_mmd_indirect = ksz9021_rd_mmd_phyreg,
971 .write_mmd_indirect = ksz9021_wr_mmd_phyreg,
972}, {
973 .phy_id = PHY_ID_KSZ9031,
974 .phy_id_mask = MICREL_PHY_ID_MASK,
975 .name = "Micrel KSZ9031 Gigabit PHY",
953 .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
954 .driver_data = &ksz9021_type,
955 .config_init = ksz9021_config_init,
956 .config_aneg = genphy_config_aneg,
957 .read_status = genphy_read_status,
958 .ack_interrupt = kszphy_ack_interrupt,
959 .config_intr = kszphy_config_intr,
960 .get_sset_count = kszphy_get_sset_count,
961 .get_strings = kszphy_get_strings,
962 .get_stats = kszphy_get_stats,
963 .suspend = genphy_suspend,
964 .resume = genphy_resume,
965 .read_mmd_indirect = ksz9021_rd_mmd_phyreg,
966 .write_mmd_indirect = ksz9021_wr_mmd_phyreg,
967}, {
968 .phy_id = PHY_ID_KSZ9031,
969 .phy_id_mask = MICREL_PHY_ID_MASK,
970 .name = "Micrel KSZ9031 Gigabit PHY",
976 .features = (PHY_GBIT_FEATURES | SUPPORTED_Pause),
971 .features = PHY_GBIT_FEATURES,
977 .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
978 .driver_data = &ksz9021_type,
979 .config_init = ksz9031_config_init,
980 .config_aneg = genphy_config_aneg,
981 .read_status = ksz9031_read_status,
982 .ack_interrupt = kszphy_ack_interrupt,
983 .config_intr = kszphy_config_intr,
984 .get_sset_count = kszphy_get_sset_count,
985 .get_strings = kszphy_get_strings,
986 .get_stats = kszphy_get_stats,
987 .suspend = genphy_suspend,
988 .resume = kszphy_resume,
989}, {
990 .phy_id = PHY_ID_KSZ8873MLL,
991 .phy_id_mask = MICREL_PHY_ID_MASK,
992 .name = "Micrel KSZ8873MLL Switch",
972 .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
973 .driver_data = &ksz9021_type,
974 .config_init = ksz9031_config_init,
975 .config_aneg = genphy_config_aneg,
976 .read_status = ksz9031_read_status,
977 .ack_interrupt = kszphy_ack_interrupt,
978 .config_intr = kszphy_config_intr,
979 .get_sset_count = kszphy_get_sset_count,
980 .get_strings = kszphy_get_strings,
981 .get_stats = kszphy_get_stats,
982 .suspend = genphy_suspend,
983 .resume = kszphy_resume,
984}, {
985 .phy_id = PHY_ID_KSZ8873MLL,
986 .phy_id_mask = MICREL_PHY_ID_MASK,
987 .name = "Micrel KSZ8873MLL Switch",
993 .features = (SUPPORTED_Pause | SUPPORTED_Asym_Pause),
994 .flags = PHY_HAS_MAGICANEG,
995 .config_init = kszphy_config_init,
996 .config_aneg = ksz8873mll_config_aneg,
997 .read_status = ksz8873mll_read_status,
998 .get_sset_count = kszphy_get_sset_count,
999 .get_strings = kszphy_get_strings,
1000 .get_stats = kszphy_get_stats,
1001 .suspend = genphy_suspend,
1002 .resume = genphy_resume,
1003}, {
1004 .phy_id = PHY_ID_KSZ886X,
1005 .phy_id_mask = MICREL_PHY_ID_MASK,
1006 .name = "Micrel KSZ886X Switch",
988 .flags = PHY_HAS_MAGICANEG,
989 .config_init = kszphy_config_init,
990 .config_aneg = ksz8873mll_config_aneg,
991 .read_status = ksz8873mll_read_status,
992 .get_sset_count = kszphy_get_sset_count,
993 .get_strings = kszphy_get_strings,
994 .get_stats = kszphy_get_stats,
995 .suspend = genphy_suspend,
996 .resume = genphy_resume,
997}, {
998 .phy_id = PHY_ID_KSZ886X,
999 .phy_id_mask = MICREL_PHY_ID_MASK,
1000 .name = "Micrel KSZ886X Switch",
1007 .features = (PHY_BASIC_FEATURES | SUPPORTED_Pause),
1001 .features = PHY_BASIC_FEATURES,
1008 .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
1009 .config_init = kszphy_config_init,
1010 .config_aneg = genphy_config_aneg,
1011 .read_status = genphy_read_status,
1012 .get_sset_count = kszphy_get_sset_count,
1013 .get_strings = kszphy_get_strings,
1014 .get_stats = kszphy_get_stats,
1015 .suspend = genphy_suspend,

--- 26 unchanged lines hidden ---
1002 .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
1003 .config_init = kszphy_config_init,
1004 .config_aneg = genphy_config_aneg,
1005 .read_status = genphy_read_status,
1006 .get_sset_count = kszphy_get_sset_count,
1007 .get_strings = kszphy_get_strings,
1008 .get_stats = kszphy_get_stats,
1009 .suspend = genphy_suspend,

--- 26 unchanged lines hidden ---