enum mms_type {
        TYPE_MMS114     = 114,
        TYPE_MMS152     = 152,
+       TYPE_MMS345L    = 345,
 };
 
 struct mms114_data {
        int error;
 
        switch (data->type) {
+       case TYPE_MMS345L:
+               error = __mms114_read_reg(data, MMS152_FW_REV, 3, buf);
+               if (error)
+                       return error;
+
+               dev_info(dev, "TSP FW Rev: bootloader 0x%x / core 0x%x / config 0x%x\n",
+                        buf[0], buf[1], buf[2]);
+               break;
+
        case TYPE_MMS152:
                error = __mms114_read_reg(data, MMS152_FW_REV, 3, buf);
                if (error)
        if (error < 0)
                return error;
 
-       /* MMS152 has no configuration or power on registers */
-       if (data->type == TYPE_MMS152)
+       /* Only MMS114 has configuration and power on registers */
+       if (data->type != TYPE_MMS114)
                return 0;
 
        error = mms114_set_active(data, true);
        }, {
                .compatible = "melfas,mms152",
                .data = (void *)TYPE_MMS152,
+       }, {
+               .compatible = "melfas,mms345l",
+               .data = (void *)TYPE_MMS345L,
        },
        { }
 };