.max_clk_rate = 3686400,
        },
        [PORT_BYT] = {
-               .type = LPSS_SSP,
+               .type = LPSS_BYT_SSP,
                .port_id = 0,
                .num_chipselect = 1,
                .max_clk_rate = 50000000,
                .rx_param = &byt_rx_param,
        },
        [PORT_BSW0] = {
-               .type = LPSS_SSP,
+               .type = LPSS_BYT_SSP,
                .port_id = 0,
                .num_chipselect = 1,
                .max_clk_rate = 50000000,
                .rx_param = &bsw0_rx_param,
        },
        [PORT_BSW1] = {
-               .type = LPSS_SSP,
+               .type = LPSS_BYT_SSP,
                .port_id = 1,
                .num_chipselect = 1,
                .max_clk_rate = 50000000,
                .rx_param = &bsw1_rx_param,
        },
        [PORT_BSW2] = {
-               .type = LPSS_SSP,
+               .type = LPSS_BYT_SSP,
                .port_id = 2,
                .num_chipselect = 1,
                .max_clk_rate = 50000000,
 
 
 static bool is_lpss_ssp(const struct driver_data *drv_data)
 {
-       return drv_data->ssp_type == LPSS_SSP;
+       switch (drv_data->ssp_type) {
+       case LPSS_LPT_SSP:
+       case LPSS_BYT_SSP:
+               return true;
+       default:
+               return false;
+       }
 }
 
 static bool is_quark_x1000_ssp(const struct driver_data *drv_data)
                tx_hi_thres = 0;
                rx_thres = RX_THRESH_QUARK_X1000_DFLT;
                break;
-       case LPSS_SSP:
+       case LPSS_LPT_SSP:
+       case LPSS_BYT_SSP:
                tx_thres = LPSS_TX_LOTHRESH_DFLT;
                tx_hi_thres = LPSS_TX_HITHRESH_DFLT;
                rx_thres = LPSS_RX_THRESH_DFLT;
 }
 
 #ifdef CONFIG_ACPI
+
+static struct acpi_device_id pxa2xx_spi_acpi_match[] = {
+       { "INT33C0", LPSS_LPT_SSP },
+       { "INT33C1", LPSS_LPT_SSP },
+       { "INT3430", LPSS_LPT_SSP },
+       { "INT3431", LPSS_LPT_SSP },
+       { "80860F0E", LPSS_BYT_SSP },
+       { "8086228E", LPSS_BYT_SSP },
+       { },
+};
+MODULE_DEVICE_TABLE(acpi, pxa2xx_spi_acpi_match);
+
 static struct pxa2xx_spi_master *
 pxa2xx_spi_acpi_get_pdata(struct platform_device *pdev)
 {
        struct acpi_device *adev;
        struct ssp_device *ssp;
        struct resource *res;
-       int devid;
+       const struct acpi_device_id *id;
+       int devid, type;
 
        if (!ACPI_HANDLE(&pdev->dev) ||
            acpi_bus_get_device(ACPI_HANDLE(&pdev->dev), &adev))
                return NULL;
 
+       id = acpi_match_device(pdev->dev.driver->acpi_match_table, &pdev->dev);
+       if (id)
+               type = (int)id->driver_data;
+       else
+               return NULL;
+
        pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL);
        if (!pdata)
                return NULL;
 
        ssp->clk = devm_clk_get(&pdev->dev, NULL);
        ssp->irq = platform_get_irq(pdev, 0);
-       ssp->type = LPSS_SSP;
+       ssp->type = type;
        ssp->pdev = pdev;
 
        ssp->port_id = -1;
        return pdata;
 }
 
-static struct acpi_device_id pxa2xx_spi_acpi_match[] = {
-       { "INT33C0", 0 },
-       { "INT33C1", 0 },
-       { "INT3430", 0 },
-       { "INT3431", 0 },
-       { "80860F0E", 0 },
-       { "8086228E", 0 },
-       { },
-};
-MODULE_DEVICE_TABLE(acpi, pxa2xx_spi_acpi_match);
 #else
 static inline struct pxa2xx_spi_master *
 pxa2xx_spi_acpi_get_pdata(struct platform_device *pdev)