in platform/broadcom/sonic-platform-modules-delta/agc032/modules/delta_agc032_swpld.c [1780:2247]
static ssize_t swpld3_data_show(struct device *dev, struct device_attribute *dev_attr, char *buf)
{
struct sensor_device_attribute *attr = to_sensor_dev_attr(dev_attr);
struct device *i2cdev = kobj_to_dev(kobj_swpld3->parent);
struct platform_data *pdata = i2cdev->platform_data;
unsigned int select = 0;
unsigned char offset = 0;
int mask = 0xFF;
int shift = 0;
int value = 0;
bool hex_fmt = 0;
char desc[256] = {0};
select = attr->index;
switch(select) {
case SWPLD3_VER_TYPE:
offset = 0x1;
shift = 7;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\nSWPLD3 Version Type.\n");
break;
case SWPLD3_VER:
offset = 0x1;
mask = 0x7f;
scnprintf(desc, PAGE_SIZE, "\nSWPLD3 Version.\n");
break;
case QSFP_P17_RST:
offset = 0x11;
shift = 7;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Normal Operation.\n“0” = Reset.\n");
break;
case QSFP_P18_RST:
offset = 0x11;
shift = 6;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Normal Operation.\n“0” = Reset.\n");
break;
case QSFP_P19_RST:
offset = 0x11;
shift = 5;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Normal Operation.\n“0” = Reset.\n");
break;
case QSFP_P20_RST:
offset = 0x11;
shift = 4;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Normal Operation.\n“0” = Reset.\n");
break;
case QSFP_P21_RST:
offset = 0x11;
shift = 3;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Normal Operation.\n“0” = Reset.\n");
break;
case QSFP_P22_RST:
offset = 0x11;
shift = 2;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Normal Operation.\n“0” = Reset.\n");
break;
case QSFP_P23_RST:
offset = 0x11;
shift = 1;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Normal Operation.\n“0” = Reset.\n");
break;
case QSFP_P24_RST:
offset = 0x11;
shift = 0;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Normal Operation.\n“0” = Reset.\n");
break;
case QSFP_P25_RST:
offset = 0x12;
shift = 7;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Normal Operation.\n“0” = Reset.\n");
break;
case QSFP_P26_RST:
offset = 0x12;
shift = 6;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Normal Operation.\n“0” = Reset.\n");
break;
case QSFP_P27_RST:
offset = 0x12;
shift = 5;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Normal Operation.\n“0” = Reset.\n");
break;
case QSFP_P28_RST:
offset = 0x12;
shift = 4;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Normal Operation.\n“0” = Reset.\n");
break;
case QSFP_P29_RST:
offset = 0x12;
shift = 3;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Normal Operation.\n“0” = Reset.\n");
break;
case QSFP_P30_RST:
offset = 0x12;
shift = 2;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Normal Operation.\n“0” = Reset.\n");
break;
case QSFP_P31_RST:
offset = 0x12;
shift = 1;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Normal Operation.\n“0” = Reset.\n");
break;
case QSFP_P32_RST:
offset = 0x12;
shift = 0;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Normal Operation.\n“0” = Reset.\n");
break;
case QSFP_P17_LPMODE:
offset = 0x21;
shift = 7;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = LP Mode.\n“0” = Not LP Mode.\n");
break;
case QSFP_P18_LPMODE:
offset = 0x21;
shift = 6;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = LP Mode.\n“0” = Not LP Mode.\n");
break;
case QSFP_P19_LPMODE:
offset = 0x21;
shift = 5;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = LP Mode.\n“0” = Not LP Mode.\n");
break;
case QSFP_P20_LPMODE:
offset = 0x21;
shift = 4;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = LP Mode.\n“0” = Not LP Mode.\n");
break;
case QSFP_P21_LPMODE:
offset = 0x21;
shift = 3;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = LP Mode.\n“0” = Not LP Mode.\n");
break;
case QSFP_P22_LPMODE:
offset = 0x21;
shift = 2;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = LP Mode.\n“0” = Not LP Mode.\n");
break;
case QSFP_P23_LPMODE:
offset = 0x21;
shift = 1;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = LP Mode.\n“0” = Not LP Mode.\n");
break;
case QSFP_P24_LPMODE:
offset = 0x21;
shift = 0;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = LP Mode.\n“0” = Not LP Mode.\n");
break;
case QSFP_P25_LPMODE:
offset = 0x22;
shift = 7;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = LP Mode.\n“0” = Not LP Mode.\n");
break;
case QSFP_P26_LPMODE:
offset = 0x22;
shift = 6;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = LP Mode.\n“0” = Not LP Mode.\n");
break;
case QSFP_P27_LPMODE:
offset = 0x22;
shift = 5;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = LP Mode.\n“0” = Not LP Mode.\n");
break;
case QSFP_P28_LPMODE:
offset = 0x22;
shift = 4;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = LP Mode.\n“0” = Not LP Mode.\n");
break;
case QSFP_P29_LPMODE:
offset = 0x22;
shift = 3;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = LP Mode.\n“0” = Not LP Mode.\n");
break;
case QSFP_P30_LPMODE:
offset = 0x22;
shift = 2;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = LP Mode.\n“0” = Not LP Mode.\n");
break;
case QSFP_P31_LPMODE:
offset = 0x22;
shift = 1;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = LP Mode.\n“0” = Not LP Mode.\n");
break;
case QSFP_P32_LPMODE:
offset = 0x22;
shift = 0;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = LP Mode.\n“0” = Not LP Mode.\n");
break;
case QSFP_P17_MODPRS:
offset = 0x51;
shift = 7;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Present.\n“0” = Present.\n");
break;
case QSFP_P18_MODPRS:
offset = 0x51;
shift = 6;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Present.\n“0” = Present.\n");
break;
case QSFP_P19_MODPRS:
offset = 0x51;
shift = 5;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Present.\n“0” = Present.\n");
break;
case QSFP_P20_MODPRS:
offset = 0x51;
shift = 4;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Present.\n“0” = Present.\n");
break;
case QSFP_P21_MODPRS:
offset = 0x51;
shift = 3;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Present.\n“0” = Present.\n");
break;
case QSFP_P22_MODPRS:
offset = 0x51;
shift = 2;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Present.\n“0” = Present.\n");
break;
case QSFP_P23_MODPRS:
offset = 0x51;
shift = 1;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Present.\n“0” = Present.\n");
break;
case QSFP_P24_MODPRS:
offset = 0x51;
shift = 0;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Present.\n“0” = Present.\n");
break;
case QSFP_P25_MODPRS:
offset = 0x52;
shift = 7;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Present.\n“0” = Present.\n");
break;
case QSFP_P26_MODPRS:
offset = 0x52;
shift = 6;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Present.\n“0” = Present.\n");
break;
case QSFP_P27_MODPRS:
offset = 0x52;
shift = 5;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Present.\n“0” = Present.\n");
break;
case QSFP_P28_MODPRS:
offset = 0x52;
shift = 4;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Present.\n“0” = Present.\n");
break;
case QSFP_P29_MODPRS:
offset = 0x52;
shift = 3;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Present.\n“0” = Present.\n");
break;
case QSFP_P30_MODPRS:
offset = 0x52;
shift = 2;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Present.\n“0” = Present.\n");
break;
case QSFP_P31_MODPRS:
offset = 0x52;
shift = 1;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Present.\n“0” = Present.\n");
break;
case QSFP_P32_MODPRS:
offset = 0x52;
shift = 0;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Present.\n“0” = Present.\n");
break;
case QSFP_P17_INTR:
offset = 0x61;
shift = 7;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Assert Intrrupt.\n“0” = Assert Intrrupt.\n");
break;
case QSFP_P18_INTR:
offset = 0x61;
shift = 6;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Assert Intrrupt.\n“0” = Assert Intrrupt.\n");
break;
case QSFP_P19_INTR:
offset = 0x61;
shift = 5;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Assert Intrrupt.\n“0” = Assert Intrrupt.\n");
break;
case QSFP_P20_INTR:
offset = 0x61;
shift = 4;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Assert Intrrupt.\n“0” = Assert Intrrupt.\n");
break;
case QSFP_P21_INTR:
offset = 0x61;
shift = 3;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Assert Intrrupt.\n“0” = Assert Intrrupt.\n");
break;
case QSFP_P22_INTR:
offset = 0x61;
shift = 2;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Assert Intrrupt.\n“0” = Assert Intrrupt.\n");
break;
case QSFP_P23_INTR:
offset = 0x61;
shift = 1;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Assert Intrrupt.\n“0” = Assert Intrrupt.\n");
break;
case QSFP_P24_INTR:
offset = 0x61;
shift = 0;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Assert Intrrupt.\n“0” = Assert Intrrupt.\n");
break;
case QSFP_P25_INTR:
offset = 0x62;
shift = 7;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Assert Intrrupt.\n“0” = Assert Intrrupt.\n");
break;
case QSFP_P26_INTR:
offset = 0x62;
shift = 6;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Assert Intrrupt.\n“0” = Assert Intrrupt.\n");
break;
case QSFP_P27_INTR:
offset = 0x62;
shift = 5;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Assert Intrrupt.\n“0” = Assert Intrrupt.\n");
break;
case QSFP_P28_INTR:
offset = 0x62;
shift = 4;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Assert Intrrupt.\n“0” = Assert Intrrupt.\n");
break;
case QSFP_P29_INTR:
offset = 0x62;
shift = 3;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Assert Intrrupt.\n“0” = Assert Intrrupt.\n");
break;
case QSFP_P30_INTR:
offset = 0x62;
shift = 2;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Assert Intrrupt.\n“0” = Assert Intrrupt.\n");
break;
case QSFP_P31_INTR:
offset = 0x62;
shift = 1;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Assert Intrrupt.\n“0” = Assert Intrrupt.\n");
break;
case QSFP_P32_INTR:
offset = 0x62;
shift = 0;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Not Assert Intrrupt.\n“0” = Assert Intrrupt.\n");
break;
case SFP_P0_MODPRS:
offset = 0x71;
shift = 6;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Absent.\n“0” = Present.\n");
break;
case SFP_P0_RXLOS:
offset = 0x71;
shift = 5;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Receive Loss.\n“0” = Normal Operation.\n");
break;
case SFP_P0_TXFAULT:
offset = 0x71;
shift = 4;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Transmit Fault.\n“0” = Normal Operation.\n");
break;
case SFP_P1_MODPRS:
offset = 0x71;
shift = 2;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Absent.\n“0” = Present.\n");
break;
case SFP_P1_RXLOS:
offset = 0x71;
shift = 1;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Receive Loss.\n“0” = Normal Operation.\n");
break;
case SFP_P1_TXFAULT:
offset = 0x71;
shift = 0;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Transmit Fault.\n“0” = Normal Operation.\n");
break;
case SFP_P0_TXDIS:
offset = 0x72;
shift = 7;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Disable.\n“0” = Normal Operation.\n");
break;
case SFP_P1_TXDIS:
offset = 0x72;
shift = 3;
mask = (1 << shift);
scnprintf(desc, PAGE_SIZE, "\n“1” = Disable.\n“0” = Normal Operation.\n");
break;
}
value = i2c_smbus_read_byte_data(pdata[swpld3].client, offset);
value = (value & mask) >> shift;
if(hex_fmt) {
return scnprintf(buf, PAGE_SIZE, "0x%02x%s", value, desc);
} else {
return scnprintf(buf, PAGE_SIZE, "%d%s", value, desc);
}
}