diff options
Diffstat (limited to 'drivers/scsi/aacraid/linit.c')
-rw-r--r-- | drivers/scsi/aacraid/linit.c | 93 |
1 files changed, 53 insertions, 40 deletions
diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c index ae5f74fb62d5..c6391838b2cd 100644 --- a/drivers/scsi/aacraid/linit.c +++ b/drivers/scsi/aacraid/linit.c | |||
@@ -755,10 +755,10 @@ static long aac_compat_cfg_ioctl(struct file *file, unsigned cmd, unsigned long | |||
755 | } | 755 | } |
756 | #endif | 756 | #endif |
757 | 757 | ||
758 | static ssize_t aac_show_model(struct class_device *class_dev, | 758 | static ssize_t aac_show_model(struct device *device, |
759 | char *buf) | 759 | struct device_attribute *attr, char *buf) |
760 | { | 760 | { |
761 | struct aac_dev *dev = (struct aac_dev*)class_to_shost(class_dev)->hostdata; | 761 | struct aac_dev *dev = (struct aac_dev*)class_to_shost(device)->hostdata; |
762 | int len; | 762 | int len; |
763 | 763 | ||
764 | if (dev->supplement_adapter_info.AdapterTypeText[0]) { | 764 | if (dev->supplement_adapter_info.AdapterTypeText[0]) { |
@@ -774,10 +774,10 @@ static ssize_t aac_show_model(struct class_device *class_dev, | |||
774 | return len; | 774 | return len; |
775 | } | 775 | } |
776 | 776 | ||
777 | static ssize_t aac_show_vendor(struct class_device *class_dev, | 777 | static ssize_t aac_show_vendor(struct device *device, |
778 | char *buf) | 778 | struct device_attribute *attr, char *buf) |
779 | { | 779 | { |
780 | struct aac_dev *dev = (struct aac_dev*)class_to_shost(class_dev)->hostdata; | 780 | struct aac_dev *dev = (struct aac_dev*)class_to_shost(device)->hostdata; |
781 | int len; | 781 | int len; |
782 | 782 | ||
783 | if (dev->supplement_adapter_info.AdapterTypeText[0]) { | 783 | if (dev->supplement_adapter_info.AdapterTypeText[0]) { |
@@ -793,10 +793,11 @@ static ssize_t aac_show_vendor(struct class_device *class_dev, | |||
793 | return len; | 793 | return len; |
794 | } | 794 | } |
795 | 795 | ||
796 | static ssize_t aac_show_flags(struct class_device *class_dev, char *buf) | 796 | static ssize_t aac_show_flags(struct device *cdev, |
797 | struct device_attribute *attr, char *buf) | ||
797 | { | 798 | { |
798 | int len = 0; | 799 | int len = 0; |
799 | struct aac_dev *dev = (struct aac_dev*)class_to_shost(class_dev)->hostdata; | 800 | struct aac_dev *dev = (struct aac_dev*)class_to_shost(cdev)->hostdata; |
800 | 801 | ||
801 | if (nblank(dprintk(x))) | 802 | if (nblank(dprintk(x))) |
802 | len = snprintf(buf, PAGE_SIZE, "dprintk\n"); | 803 | len = snprintf(buf, PAGE_SIZE, "dprintk\n"); |
@@ -812,10 +813,11 @@ static ssize_t aac_show_flags(struct class_device *class_dev, char *buf) | |||
812 | return len; | 813 | return len; |
813 | } | 814 | } |
814 | 815 | ||
815 | static ssize_t aac_show_kernel_version(struct class_device *class_dev, | 816 | static ssize_t aac_show_kernel_version(struct device *device, |
816 | char *buf) | 817 | struct device_attribute *attr, |
818 | char *buf) | ||
817 | { | 819 | { |
818 | struct aac_dev *dev = (struct aac_dev*)class_to_shost(class_dev)->hostdata; | 820 | struct aac_dev *dev = (struct aac_dev*)class_to_shost(device)->hostdata; |
819 | int len, tmp; | 821 | int len, tmp; |
820 | 822 | ||
821 | tmp = le32_to_cpu(dev->adapter_info.kernelrev); | 823 | tmp = le32_to_cpu(dev->adapter_info.kernelrev); |
@@ -825,10 +827,11 @@ static ssize_t aac_show_kernel_version(struct class_device *class_dev, | |||
825 | return len; | 827 | return len; |
826 | } | 828 | } |
827 | 829 | ||
828 | static ssize_t aac_show_monitor_version(struct class_device *class_dev, | 830 | static ssize_t aac_show_monitor_version(struct device *device, |
829 | char *buf) | 831 | struct device_attribute *attr, |
832 | char *buf) | ||
830 | { | 833 | { |
831 | struct aac_dev *dev = (struct aac_dev*)class_to_shost(class_dev)->hostdata; | 834 | struct aac_dev *dev = (struct aac_dev*)class_to_shost(device)->hostdata; |
832 | int len, tmp; | 835 | int len, tmp; |
833 | 836 | ||
834 | tmp = le32_to_cpu(dev->adapter_info.monitorrev); | 837 | tmp = le32_to_cpu(dev->adapter_info.monitorrev); |
@@ -838,10 +841,11 @@ static ssize_t aac_show_monitor_version(struct class_device *class_dev, | |||
838 | return len; | 841 | return len; |
839 | } | 842 | } |
840 | 843 | ||
841 | static ssize_t aac_show_bios_version(struct class_device *class_dev, | 844 | static ssize_t aac_show_bios_version(struct device *device, |
842 | char *buf) | 845 | struct device_attribute *attr, |
846 | char *buf) | ||
843 | { | 847 | { |
844 | struct aac_dev *dev = (struct aac_dev*)class_to_shost(class_dev)->hostdata; | 848 | struct aac_dev *dev = (struct aac_dev*)class_to_shost(device)->hostdata; |
845 | int len, tmp; | 849 | int len, tmp; |
846 | 850 | ||
847 | tmp = le32_to_cpu(dev->adapter_info.biosrev); | 851 | tmp = le32_to_cpu(dev->adapter_info.biosrev); |
@@ -851,9 +855,10 @@ static ssize_t aac_show_bios_version(struct class_device *class_dev, | |||
851 | return len; | 855 | return len; |
852 | } | 856 | } |
853 | 857 | ||
854 | ssize_t aac_show_serial_number(struct class_device *class_dev, char *buf) | 858 | ssize_t aac_show_serial_number(struct device *device, |
859 | struct device_attribute *attr, char *buf) | ||
855 | { | 860 | { |
856 | struct aac_dev *dev = (struct aac_dev*)class_to_shost(class_dev)->hostdata; | 861 | struct aac_dev *dev = (struct aac_dev*)class_to_shost(device)->hostdata; |
857 | int len = 0; | 862 | int len = 0; |
858 | 863 | ||
859 | if (le32_to_cpu(dev->adapter_info.serial[0]) != 0xBAD0) | 864 | if (le32_to_cpu(dev->adapter_info.serial[0]) != 0xBAD0) |
@@ -869,35 +874,39 @@ ssize_t aac_show_serial_number(struct class_device *class_dev, char *buf) | |||
869 | return len; | 874 | return len; |
870 | } | 875 | } |
871 | 876 | ||
872 | static ssize_t aac_show_max_channel(struct class_device *class_dev, char *buf) | 877 | static ssize_t aac_show_max_channel(struct device *device, |
878 | struct device_attribute *attr, char *buf) | ||
873 | { | 879 | { |
874 | return snprintf(buf, PAGE_SIZE, "%d\n", | 880 | return snprintf(buf, PAGE_SIZE, "%d\n", |
875 | class_to_shost(class_dev)->max_channel); | 881 | class_to_shost(device)->max_channel); |
876 | } | 882 | } |
877 | 883 | ||
878 | static ssize_t aac_show_max_id(struct class_device *class_dev, char *buf) | 884 | static ssize_t aac_show_max_id(struct device *device, |
885 | struct device_attribute *attr, char *buf) | ||
879 | { | 886 | { |
880 | return snprintf(buf, PAGE_SIZE, "%d\n", | 887 | return snprintf(buf, PAGE_SIZE, "%d\n", |
881 | class_to_shost(class_dev)->max_id); | 888 | class_to_shost(device)->max_id); |
882 | } | 889 | } |
883 | 890 | ||
884 | static ssize_t aac_store_reset_adapter(struct class_device *class_dev, | 891 | static ssize_t aac_store_reset_adapter(struct device *device, |
885 | const char *buf, size_t count) | 892 | struct device_attribute *attr, |
893 | const char *buf, size_t count) | ||
886 | { | 894 | { |
887 | int retval = -EACCES; | 895 | int retval = -EACCES; |
888 | 896 | ||
889 | if (!capable(CAP_SYS_ADMIN)) | 897 | if (!capable(CAP_SYS_ADMIN)) |
890 | return retval; | 898 | return retval; |
891 | retval = aac_reset_adapter((struct aac_dev*)class_to_shost(class_dev)->hostdata, buf[0] == '!'); | 899 | retval = aac_reset_adapter((struct aac_dev*)class_to_shost(device)->hostdata, buf[0] == '!'); |
892 | if (retval >= 0) | 900 | if (retval >= 0) |
893 | retval = count; | 901 | retval = count; |
894 | return retval; | 902 | return retval; |
895 | } | 903 | } |
896 | 904 | ||
897 | static ssize_t aac_show_reset_adapter(struct class_device *class_dev, | 905 | static ssize_t aac_show_reset_adapter(struct device *device, |
898 | char *buf) | 906 | struct device_attribute *attr, |
907 | char *buf) | ||
899 | { | 908 | { |
900 | struct aac_dev *dev = (struct aac_dev*)class_to_shost(class_dev)->hostdata; | 909 | struct aac_dev *dev = (struct aac_dev*)class_to_shost(device)->hostdata; |
901 | int len, tmp; | 910 | int len, tmp; |
902 | 911 | ||
903 | tmp = aac_adapter_check_health(dev); | 912 | tmp = aac_adapter_check_health(dev); |
@@ -907,70 +916,70 @@ static ssize_t aac_show_reset_adapter(struct class_device *class_dev, | |||
907 | return len; | 916 | return len; |
908 | } | 917 | } |
909 | 918 | ||
910 | static struct class_device_attribute aac_model = { | 919 | static struct device_attribute aac_model = { |
911 | .attr = { | 920 | .attr = { |
912 | .name = "model", | 921 | .name = "model", |
913 | .mode = S_IRUGO, | 922 | .mode = S_IRUGO, |
914 | }, | 923 | }, |
915 | .show = aac_show_model, | 924 | .show = aac_show_model, |
916 | }; | 925 | }; |
917 | static struct class_device_attribute aac_vendor = { | 926 | static struct device_attribute aac_vendor = { |
918 | .attr = { | 927 | .attr = { |
919 | .name = "vendor", | 928 | .name = "vendor", |
920 | .mode = S_IRUGO, | 929 | .mode = S_IRUGO, |
921 | }, | 930 | }, |
922 | .show = aac_show_vendor, | 931 | .show = aac_show_vendor, |
923 | }; | 932 | }; |
924 | static struct class_device_attribute aac_flags = { | 933 | static struct device_attribute aac_flags = { |
925 | .attr = { | 934 | .attr = { |
926 | .name = "flags", | 935 | .name = "flags", |
927 | .mode = S_IRUGO, | 936 | .mode = S_IRUGO, |
928 | }, | 937 | }, |
929 | .show = aac_show_flags, | 938 | .show = aac_show_flags, |
930 | }; | 939 | }; |
931 | static struct class_device_attribute aac_kernel_version = { | 940 | static struct device_attribute aac_kernel_version = { |
932 | .attr = { | 941 | .attr = { |
933 | .name = "hba_kernel_version", | 942 | .name = "hba_kernel_version", |
934 | .mode = S_IRUGO, | 943 | .mode = S_IRUGO, |
935 | }, | 944 | }, |
936 | .show = aac_show_kernel_version, | 945 | .show = aac_show_kernel_version, |
937 | }; | 946 | }; |
938 | static struct class_device_attribute aac_monitor_version = { | 947 | static struct device_attribute aac_monitor_version = { |
939 | .attr = { | 948 | .attr = { |
940 | .name = "hba_monitor_version", | 949 | .name = "hba_monitor_version", |
941 | .mode = S_IRUGO, | 950 | .mode = S_IRUGO, |
942 | }, | 951 | }, |
943 | .show = aac_show_monitor_version, | 952 | .show = aac_show_monitor_version, |
944 | }; | 953 | }; |
945 | static struct class_device_attribute aac_bios_version = { | 954 | static struct device_attribute aac_bios_version = { |
946 | .attr = { | 955 | .attr = { |
947 | .name = "hba_bios_version", | 956 | .name = "hba_bios_version", |
948 | .mode = S_IRUGO, | 957 | .mode = S_IRUGO, |
949 | }, | 958 | }, |
950 | .show = aac_show_bios_version, | 959 | .show = aac_show_bios_version, |
951 | }; | 960 | }; |
952 | static struct class_device_attribute aac_serial_number = { | 961 | static struct device_attribute aac_serial_number = { |
953 | .attr = { | 962 | .attr = { |
954 | .name = "serial_number", | 963 | .name = "serial_number", |
955 | .mode = S_IRUGO, | 964 | .mode = S_IRUGO, |
956 | }, | 965 | }, |
957 | .show = aac_show_serial_number, | 966 | .show = aac_show_serial_number, |
958 | }; | 967 | }; |
959 | static struct class_device_attribute aac_max_channel = { | 968 | static struct device_attribute aac_max_channel = { |
960 | .attr = { | 969 | .attr = { |
961 | .name = "max_channel", | 970 | .name = "max_channel", |
962 | .mode = S_IRUGO, | 971 | .mode = S_IRUGO, |
963 | }, | 972 | }, |
964 | .show = aac_show_max_channel, | 973 | .show = aac_show_max_channel, |
965 | }; | 974 | }; |
966 | static struct class_device_attribute aac_max_id = { | 975 | static struct device_attribute aac_max_id = { |
967 | .attr = { | 976 | .attr = { |
968 | .name = "max_id", | 977 | .name = "max_id", |
969 | .mode = S_IRUGO, | 978 | .mode = S_IRUGO, |
970 | }, | 979 | }, |
971 | .show = aac_show_max_id, | 980 | .show = aac_show_max_id, |
972 | }; | 981 | }; |
973 | static struct class_device_attribute aac_reset = { | 982 | static struct device_attribute aac_reset = { |
974 | .attr = { | 983 | .attr = { |
975 | .name = "reset_host", | 984 | .name = "reset_host", |
976 | .mode = S_IWUSR|S_IRUGO, | 985 | .mode = S_IWUSR|S_IRUGO, |
@@ -979,7 +988,7 @@ static struct class_device_attribute aac_reset = { | |||
979 | .show = aac_show_reset_adapter, | 988 | .show = aac_show_reset_adapter, |
980 | }; | 989 | }; |
981 | 990 | ||
982 | static struct class_device_attribute *aac_attrs[] = { | 991 | static struct device_attribute *aac_attrs[] = { |
983 | &aac_model, | 992 | &aac_model, |
984 | &aac_vendor, | 993 | &aac_vendor, |
985 | &aac_flags, | 994 | &aac_flags, |
@@ -993,6 +1002,10 @@ static struct class_device_attribute *aac_attrs[] = { | |||
993 | NULL | 1002 | NULL |
994 | }; | 1003 | }; |
995 | 1004 | ||
1005 | ssize_t aac_get_serial_number(struct device *device, char *buf) | ||
1006 | { | ||
1007 | return aac_show_serial_number(device, &aac_serial_number, buf); | ||
1008 | } | ||
996 | 1009 | ||
997 | static const struct file_operations aac_cfg_fops = { | 1010 | static const struct file_operations aac_cfg_fops = { |
998 | .owner = THIS_MODULE, | 1011 | .owner = THIS_MODULE, |