switch (usage_id) {
        case HID_USAGE_SENSOR_TIME_YEAR:
-               time_buf->tm_year = *(u8 *)raw_data;
-               if (time_buf->tm_year < 70)
-                       /* assume we are in 1970...2069 */
-                       time_buf->tm_year += 100;
+               if (raw_len == 1) {
+                       time_buf->tm_year = *(u8 *)raw_data;
+                       if (time_buf->tm_year < 70)
+                               /* assume we are in 1970...2069 */
+                               time_buf->tm_year += 100;
+               } else
+                       time_buf->tm_year = *(u16 *)raw_data-1900;
                break;
        case HID_USAGE_SENSOR_TIME_MONTH:
                /* sensor sending the month as 1-12, we need 0-11 */
                        return -EINVAL;
                }
                if (time_state->info[i].size != 1) {
-                       dev_err(&pdev->dev,
-                               "attribute '%s' not 8 bits wide!\n",
+                       /*
+                        * The draft for HID-sensors (HUTRR39) currently
+                        * doesn't define the range for the year attribute.
+                        * Therefor we support both 8 bit (0-99) and 16 bit
+                        * (full) as size for the year.
+                        */
+                       if (time_state->info[i].attrib_id !=
+                               HID_USAGE_SENSOR_TIME_YEAR) {
+                               dev_err(&pdev->dev,
+                                       "attribute '%s' not 8 bits wide!\n",
                                hid_time_attrib_name(
                                        time_state->info[i].attrib_id));
-                       return -EINVAL;
+                               return -EINVAL;
+                       }
+                       if (time_state->info[i].size != 2) {
+                               dev_err(&pdev->dev,
+                                       "attribute '%s' not 8 or 16 bits wide!\n",
+                               hid_time_attrib_name(
+                                       time_state->info[i].attrib_id));
+                               return -EINVAL;
+                       }
                }
                if (time_state->info[i].units !=
                                HID_USAGE_SENSOR_UNITS_NOT_SPECIFIED &&