static ssize_t swpld1_data_show()

in platform/broadcom/sonic-platform-modules-delta/agc032/modules/delta_agc032_swpld.c [270:633]


static ssize_t swpld1_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_swpld1->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 BOARD_ID:
            offset = 0x1;
            hex_fmt = 1;
            scnprintf(desc, PAGE_SIZE, "\nBorad ID.\n");
            break;
        case BOARD_VER:
            offset = 0x2;
            hex_fmt = 1;
            scnprintf(desc, PAGE_SIZE, "\nBorad Version.\n");
            break;
        case SWPLD1_VER_TYPE:
            offset = 0x3;
            shift = 7;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\nSWPLD1 Version Type.\n");
            break;
        case SWPLD1_VER:
            offset = 0x3;
            mask = 0x7f;
            scnprintf(desc, PAGE_SIZE, "\nSWPLD1 Version.\n");
            break;
        case USB_HUB_RST:
            offset = 0x6;
            shift = 6;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\nUSB Reset.\n“1” = Normal Operation\n“0” = Reset.\n");
            break;
        case SYNCE_RST:
            offset = 0x6;
            shift = 5;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\nSynce Reset.\n“1” = Normal Operation\n“0” = Reset.\n");
            break;
        case BMC_RST:
            offset = 0x6;
            shift = 4;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\nBMC Reset.\n“1” = Normal Operation\n“0” = Reset.\n");
            break;
        case LPC_RST:
            offset = 0x6;
            shift = 3;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\nBMC LPC Reset.\n“1” = Normal Operation\n“0” = Reset.\n");
            break;
        case OOB_PCIE_RST:
            offset = 0x6;
            shift = 2;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\nOOB PCIE Reset.\n“1” = Normal Operation\n“0” = Reset.\n");
            break;
        case MAC_PCIE_RST:
            offset = 0x6;
            shift = 1;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\nMAC PCIE Reset.\n“1” = Normal Operation\n“0” = Reset.\n");
            break;
        case MAC_RST:
            offset = 0x6;
            shift = 0;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\nMAC Reset.\n“1” = Normal Operation\n“0” = Reset.\n");
            break;
        case VR_3V3_RST:
            offset = 0x7;
            shift = 3;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\nVR 3V3 Reset.\n“1” = Normal Operation\n“0” = Reset.\n");
            break;
        case VR_0V8_RST:
            offset = 0x7;
            shift = 2;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\nVR 0V8 Reset.\n“1” = Normal Operation\n“0” = Reset.\n");
            break;
        case FAN_MUX_RST:
            offset = 0x8;
            shift = 6;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\nFAN I2C Mux Reset.\n“1” = Normal Operation\n“0” = Reset.\n");
            break;
        case QSFP5_MUX_RST:
            offset = 0x8;
            shift = 5;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\nQSFP5 Reset.\n“1” = Normal Operation\n“0” = Reset.\n");
            break;
        case QSFP4_MUX_RST:
            offset = 0x8;
            shift = 4;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\nQSFP4 Reset.\n“1” = Normal Operation\n“0” = Reset.\n");
            break;
        case QSFP3_MUX_RST:
            offset = 0x8;
            shift = 3;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\nQSFP3 Reset.\n“1” = Normal Operation\n“0” = Reset.\n");
            break;
        case QSFP2_MUX_RST:
            offset = 0x8;
            shift = 2;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\nQSFP2 Reset.\n“1” = Normal Operation\n“0” = Reset.\n");
            break;
        case QSFP1_MUX_RST:
            offset = 0x8;
            shift = 1;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\nQSFP1 Reset.\n“1” = Normal Operation\n“0” = Reset.\n");
            break;
        case PSU1_PRESENT:
            offset = 0x11;
            shift = 6;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\n“1” = PSU1 Not Present.\n“0” = PSU1 Present.\n");
            break;
        case PSU1_STATE:
            offset = 0x11;
            shift = 5;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\n“1” = PSU1 Power Not Good.\n“0” = PSU1 Power Good.\n");
            break;
        case PSU1_ALERT:
            offset = 0x11;
            shift = 4;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\n“1” = PSU1 Alert Active.\n“0” = PSU1 Alert Not Active.\n");
            break;
        case PSU2_PRESENT:
            offset = 0x11;
            shift = 2;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\n“1” = PSU2 Not Present.\n“0” = PSU2 Present.\n");
            break;
        case PSU2_STATE:
            offset = 0x11;
            shift = 1;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\n“1” = Normal Operation\n“0” = Reset.\n");
            break;
        case PSU2_ALERT:
            offset = 0x11;
            shift = 0;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\n“1” = PSU2 Alert Active.\n“0” = PSU2 Alert Not Active.\n");
            break;
        case PSU1_EN:
            offset = 0x12;
            shift = 7;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\n“1” = Disable PSU1.\n“0” = Enable PSU1.\n");
            break;
        case PSU1_EEPROM_WP:
            offset = 0x12;
            shift = 6;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\n“1” = Enable PSU1 EEPROM Write Protect.\n“0” = Disable PSU1 EEPROM Write Protect.\n");
            break;
        case PSU2_EN:
            offset = 0x12;
            shift = 3;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\n“1” = Disable PSU2.\n“0” = Enable PSU2.\n");
            break;
        case PSU2_EEPROM_WP:
            offset = 0x12;
            shift = 2;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\n“1” = Enable PSU2 EEPROM Write Protect.\n“0” = Disable PSU2 EEPROM Write Protect.\n");
            break;
        case VCC_5V_EN:
            offset = 0x23;
            shift = 7;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\n“1” = Enable VCC 5V.\n“0” = Disable VCC 5V.\n");
            break;
        case VCC_3V3_EN:
            offset = 0x23;
            shift = 6;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\n“1” = Enable VCC 3V3.\n“0” = Disable VCC 3V3.\n");
            break;
        case VCC_VCORE_EN:
            offset = 0x23;
            shift = 5;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\n“1” = Enable AVS 0V91.\n“0” = Disable AVS 0V91.\n");
            break;
        case VCC_MAC_1V8_EN:
            offset = 0x23;
            shift = 4;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\n“1” = Enable MAC 1V8.\n“0” = Disable MAC 1V8.\n");
            break;
        case VCC_MAC_1V2_EN:
            offset = 0x23;
            shift = 3;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\n“1” = Enable MAC 1V2.\n“0” = Disable MAC 1V2.\n");
            break;
        case VCC_MAC_0V8_EN:
            offset = 0x23;
            shift = 2;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\n“1” = Enable MAC 0V8.\n“0” = Disable MAC 0V8.\n");
            break;
        case VCC_PLL_0V8_EN:
            offset = 0x23;
            shift = 1;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\n“1” = Enable PLL 0V8.\n“0” = Disable PLL 0V8.\n");
            break;
        case VCC_SYS_EN:
            offset = 0x23;
            shift = 0;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\n“1” = Enable System Power.\n“0” = Disable System Power.\n");
            break;
        case OOB_PWR_STATE:
            offset = 0x24;
            shift = 7;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\n“1” = OOB Power Rail Good.\n“0” = OOB Power Rail Not Good.\n");
            break;
        case OOB_OP_EN:
            offset = 0x24;
            shift = 6;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\n“1” = Enable OOB Operation.\n“0” = Disable OOB Operation.\n");
            break;
        case USB1_OP_EN:
            offset = 0x24;
            shift = 1;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\n“1” = Disable USB Operation.\n“0” = Enable USB Operation.\n");
            break;
        case PSU_INTR:
            offset = 0x26;
            shift = 1;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\n“1” = PSU Interrupt Not Occured.\n“0” = PSU Interrupt Occured.\n");
            break;
        case FAN_ALERT:
            offset = 0x26;
            shift = 0;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\n“1” = Fan Interrupt Not Occured.\n“0” = Fan Interrupt Occured.\n");
            break;
        case SWPLD2_INTR:
            offset = 0x27;
            shift = 1;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\n“1” = SWPLD2 Interrupt Not Occured.\n“0” = SWPLD2 Interrupt Occured.\n");
            break;
        case SWPLD3_INTR:
            offset = 0x27;
            shift = 0;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\n“1” = SWPLD3 Interrupt Not Occured.\n“0” = SWPLD3 Interrupt Occured.\n)");
            break;
        case PSU1_LED:
            offset = 0x41;
            shift = 2;
            mask = 0x0C;
            scnprintf(desc, PAGE_SIZE, "\n“3” = LED Off\n“2” = LED Red.\n“1” = LED Green\n“0” = Auto.\n");
            break;
        case PSU2_LED:
            offset = 0x41;
            shift = 0;
            mask = 0x03;
            scnprintf(desc, PAGE_SIZE, "\n“3” = LED Off\n“2” = LED Red.\n“1” = LED Green\n“0” = Auto.\n");
            break;
        case SYS_LED:
            offset = 0x42;
            shift = 2;
            mask = 0x0C;
            scnprintf(desc, PAGE_SIZE, "\n“3” = LED Red\n“2” = LED Blink Green.\n“1” = LED Green\n“0” = LED Off.\n");
            break;
        case FAN_LED:
            offset = 0x42;
            shift = 0;
            mask = 0x03;
            scnprintf(desc, PAGE_SIZE, "\n“3” = LED Off\n“2” = LED Amber.\n“1” = LED Green\n“0” = LED Off.\n");
            break;
        case FAN1_LED:
            offset = 0x46;
            shift = 6;
            mask = 0xc0;
            scnprintf(desc, PAGE_SIZE, "\n“3” = LED Off\n“2” = LED Red.\n“1” = LED Green\n“0” = LED Off.\n");
            break;
        case FAN2_LED:
            offset = 0x46;
            shift = 4;
            mask = 0x30;
            scnprintf(desc, PAGE_SIZE, "\n“3” = LED Off\n“2” = LED Red.\n“1” = LED Green\n“0” = LED Off.\n");
            break;
        case FAN3_LED:
            offset = 0x46;
            shift = 2;
            mask = 0x0c;
            scnprintf(desc, PAGE_SIZE, "\n“3” = LED Off\n“2” = LED Red.\n“1” = LED Green\n“0” = LED Off.\n");
            break;
        case FAN4_LED:
            offset = 0x46;
            shift = 0;
            mask = 0x03;
            scnprintf(desc, PAGE_SIZE, "\n“3” = LED Off\n“2” = LED Red.\n“1” = LED Green\n“0” = LED Off.\n");
            break;
        case FAN5_LED:
            offset = 0x47;
            shift = 6;
            mask = 0xc0;
            scnprintf(desc, PAGE_SIZE, "\n“3” = LED Off\n“2” = LED Red.\n“1” = LED Green\n“0” = LED Off.\n");
            break;
        case FAN6_LED:
            offset = 0x47;
            shift = 4;
            mask = 0x30;
            scnprintf(desc, PAGE_SIZE, "\n“3” = LED Off\n“2” = LED Red.\n“1” = LED Green\n“0” = LED Off.\n");
            break;
        case SYNCE_EEPROM_WB:
            offset = 0x51;
            shift = 5;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\n“1” = Normal Operation\n“0” = Reset.\n");
            break;
        case CONSOLE_SEL:
            offset = 0x51;
            shift = 5;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\n“1” = Normal Operation\n“0” = Reset.\n");
            break;
        case SYS_EEPROM_WB:
            offset = 0x51;
            shift = 5;
            mask = (1 << shift);
            scnprintf(desc, PAGE_SIZE, "\n“1” = Normal Operation\n“0” = Reset.\n");
            break;
    }

    value = i2c_smbus_read_byte_data(pdata[swpld1].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);
    }
}