if (kind != w83697hf)
                device_create_file_temp(new_client, 3);
 
-       if (kind != w83697hf)
+       if (kind != w83697hf && data->vid != 0xff) {
                device_create_file_vid(new_client);
-
-       if (kind != w83697hf)
                device_create_file_vrm(new_client);
+       }
 
        device_create_file_fan_div(new_client, 1);
        device_create_file_fan_div(new_client, 2);
 
        /* Make sure the pins are configured for input
           There must be at least five (VRM 9), and possibly 6 (VRM 10) */
-       sel = superio_inb(W83627THF_GPIO5_IOSR);
+       sel = superio_inb(W83627THF_GPIO5_IOSR) & 0x3f;
        if ((sel & 0x1f) != 0x1f) {
                dev_dbg(&client->dev, "GPIO5 not configured for VID "
                        "function\n");
                int hi = w83627hf_read_value(client, W83781D_REG_CHIPID);
                data->vid = (lo & 0x0f) | ((hi & 0x01) << 4);
        } else if (w83627thf == data->type) {
-               data->vid = w83627thf_read_gpio5(client) & 0x3f;
+               data->vid = w83627thf_read_gpio5(client);
        }
 
        /* Read VRM & OVT Config only once */
        if (w83627thf == data->type || w83637hf == data->type) {
                data->vrm_ovt = 
                        w83627hf_read_value(client, W83627THF_REG_VRM_OVT_CFG);
-               data->vrm = (data->vrm_ovt & 0x01) ? 90 : 82;
-       } else {
-               /* Convert VID to voltage based on default VRM */
-               data->vrm = vid_which_vrm();
        }
 
+       /* Convert VID to voltage based on VRM */
+       data->vrm = vid_which_vrm();
+
        tmp = w83627hf_read_value(client, W83781D_REG_SCFG1);
        for (i = 1; i <= 3; i++) {
                if (!(tmp & BIT_SCFG1[i - 1])) {