pm80xx: Display controller BIOS version.
Subsystems (2)
PATCH v3 3/10 pm80xx: Display controller BIOS version.
Quoted 1 line
From
f65234be85e85a41710c363cf21891ee4148eed2Mon Sep 17 00:00:00 2001
From: Anand Kumar Santhanam <[email protected]>
Date: Wed, 18 Sep 2013 12:54:41 +0530
Subject: [PATCH V3 03/10] pm80xx: Display controller BIOS version.
Signed-off-by [email protected]
Reviewed-by Jack Wang <[email protected]>
--- drivers/scsi/pm8001/pm8001_ctl.c | 34 ++++++++++++++++++++++++++++++++++ drivers/scsi/pm8001/pm8001_ctl.h | 2 ++ 2 files changed, 36 insertions(+), 0 deletions(-)
drivers/scsi/pm8001/pm8001_ctl.c +34 -0
@@ -309,6 +309,39 @@ static ssize_t pm8001_ctl_aap_log_show(struct device *cdev, } static DEVICE_ATTR(aap_log, S_IRUGO, pm8001_ctl_aap_log_show, NULL);/** +* pm8001_ctl_bios_version_show - Bios version Display +* @cdev:pointer to embedded class device +* @buf:the buffer returned +* A sysfs 'read-only' shost attribute. +*/ +static ssize_t pm8001_ctl_bios_version_show (struct device *cdev, +struct device_attribute *attr,char *buf) +{ +struct Scsi_Host *shost =class_to_shost (cdev); +struct sas_ha_struct *sha =SHOST_TO_SAS_HA (shost); +struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; +char *str = buf; +void *virt_addr; +int bios_index; +DECLARE_COMPLETION_ONSTACK (completion); +struct pm8001_ioctl_payload payload; + + pm8001_ha->nvmd_completion = &completion; + payload.minor_function =7 ; + payload.offset =0 ; + payload.length =4096 ; + payload.func_specific =kzalloc (4096 ,GFP_KERNEL ); +PM8001_CHIP_DISP ->get_nvmd_req (pm8001_ha, &payload); +wait_for_completion (&completion); + virt_addr = pm8001_ha->memoryMap.region[NVMD ].virt_ptr; +for (bios_index =BIOSOFFSET ; bios_index <BIOS_OFFSET_LIMIT ; + bios_index++) + str +=sprintf (str,"%c" , + *((u8 *)((u8 *)virt_addr+bios_index))); +return str - buf; +} +static DEVICE_ATTR(bios_version, S_IRUGO, pm8001_ctl_bios_version_show, NULL); +/** * pm8001_ctl_aap_log_show - IOP event log * @cdev: pointer to embedded class device * @buf: the buffer returned
@@ -609,6 +642,7 @@ struct device_attribute *pm8001_host_attrs[] = { &dev_attr_sas_spec_support, &dev_attr_logging_level, &dev_attr_host_sas_address, + &dev_attr_bios_version, NULL, };
drivers/scsi/pm8001/pm8001_ctl.h +2 -0
@@ -45,6 +45,8 @@#define HEADER_LEN 28#define SIZE_OFFSET 16 +#define BIOSOFFSET 56 +#define BIOS_OFFSET_LIMIT 61#define FLASH_OK 0x000000#define FAIL_OPEN_BIOS_FILE 0x000100
Signature · 1 line
1.7.1