Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 204242
b: refs/heads/master
c: 75576bb
h: refs/heads/master
v: v3
  • Loading branch information
Wayne Boyer authored and James Bottomley committed Jul 28, 2010
1 parent 12f19e4 commit 80df607
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 3 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 1df79ca4223632113f14618833b8bb1727a8ca15
refs/heads/master: 75576bb9b208d7c66822f310cdef9ca2d72c879c
70 changes: 68 additions & 2 deletions trunk/drivers/scsi/ipr.c
Original file line number Diff line number Diff line change
Expand Up @@ -1168,7 +1168,7 @@ static void ipr_update_res_entry(struct ipr_resource_entry *res,
if (res->ioa_cfg->sis64) {
res->flags = cfgtew->u.cfgte64->flags;
res->res_flags = cfgtew->u.cfgte64->res_flags;
res->type = cfgtew->u.cfgte64->res_type & 0x0f;
res->type = cfgtew->u.cfgte64->res_type;

memcpy(&res->std_inq_data, &cfgtew->u.cfgte64->std_inq_data,
sizeof(struct ipr_std_inq_data));
Expand Down Expand Up @@ -3762,13 +3762,44 @@ static struct device_attribute ipr_update_fw_attr = {
.store = ipr_store_update_fw
};

/**
* ipr_show_fw_type - Show the adapter's firmware type.
* @dev: class device struct
* @buf: buffer
*
* Return value:
* number of bytes printed to buffer
**/
static ssize_t ipr_show_fw_type(struct device *dev,
struct device_attribute *attr, char *buf)
{
struct Scsi_Host *shost = class_to_shost(dev);
struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)shost->hostdata;
unsigned long lock_flags = 0;
int len;

spin_lock_irqsave(ioa_cfg->host->host_lock, lock_flags);
len = snprintf(buf, PAGE_SIZE, "%d\n", ioa_cfg->sis64);
spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags);
return len;
}

static struct device_attribute ipr_ioa_fw_type_attr = {
.attr = {
.name = "fw_type",
.mode = S_IRUGO,
},
.show = ipr_show_fw_type
};

static struct device_attribute *ipr_ioa_attrs[] = {
&ipr_fw_version_attr,
&ipr_log_level_attr,
&ipr_diagnostics_attr,
&ipr_ioa_state_attr,
&ipr_ioa_reset_attr,
&ipr_update_fw_attr,
&ipr_ioa_fw_type_attr,
NULL,
};

Expand Down Expand Up @@ -4122,14 +4153,49 @@ static ssize_t ipr_show_resource_path(struct device *dev, struct device_attribut
static struct device_attribute ipr_resource_path_attr = {
.attr = {
.name = "resource_path",
.mode = S_IRUSR,
.mode = S_IRUGO,
},
.show = ipr_show_resource_path
};

/**
* ipr_show_resource_type - Show the resource type for this device.
* @dev: device struct
* @buf: buffer
*
* Return value:
* number of bytes printed to buffer
**/
static ssize_t ipr_show_resource_type(struct device *dev, struct device_attribute *attr, char *buf)
{
struct scsi_device *sdev = to_scsi_device(dev);
struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *)sdev->host->hostdata;
struct ipr_resource_entry *res;
unsigned long lock_flags = 0;
ssize_t len = -ENXIO;

spin_lock_irqsave(ioa_cfg->host->host_lock, lock_flags);
res = (struct ipr_resource_entry *)sdev->hostdata;

if (res)
len = snprintf(buf, PAGE_SIZE, "%x\n", res->type);

spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags);
return len;
}

static struct device_attribute ipr_resource_type_attr = {
.attr = {
.name = "resource_type",
.mode = S_IRUGO,
},
.show = ipr_show_resource_type
};

static struct device_attribute *ipr_dev_attrs[] = {
&ipr_adapter_handle_attr,
&ipr_resource_path_attr,
&ipr_resource_type_attr,
NULL,
};

Expand Down

0 comments on commit 80df607

Please sign in to comment.