|
@@ -308,6 +308,7 @@ struct sdma_firmware_header {
|
|
|
struct sdma_driver_data {
|
|
|
int chnenbl0;
|
|
|
int num_events;
|
|
|
+ struct sdma_script_start_addrs *script_addrs;
|
|
|
};
|
|
|
|
|
|
struct sdma_engine {
|
|
@@ -331,18 +332,110 @@ struct sdma_driver_data sdma_imx31 = {
|
|
|
.num_events = 32,
|
|
|
};
|
|
|
|
|
|
+static struct sdma_script_start_addrs sdma_script_imx25 = {
|
|
|
+ .ap_2_ap_addr = 729,
|
|
|
+ .uart_2_mcu_addr = 904,
|
|
|
+ .per_2_app_addr = 1255,
|
|
|
+ .mcu_2_app_addr = 834,
|
|
|
+ .uartsh_2_mcu_addr = 1120,
|
|
|
+ .per_2_shp_addr = 1329,
|
|
|
+ .mcu_2_shp_addr = 1048,
|
|
|
+ .ata_2_mcu_addr = 1560,
|
|
|
+ .mcu_2_ata_addr = 1479,
|
|
|
+ .app_2_per_addr = 1189,
|
|
|
+ .app_2_mcu_addr = 770,
|
|
|
+ .shp_2_per_addr = 1407,
|
|
|
+ .shp_2_mcu_addr = 979,
|
|
|
+};
|
|
|
+
|
|
|
+struct sdma_driver_data sdma_imx25 = {
|
|
|
+ .chnenbl0 = SDMA_CHNENBL0_IMX35,
|
|
|
+ .num_events = 48,
|
|
|
+ .script_addrs = &sdma_script_imx25,
|
|
|
+};
|
|
|
+
|
|
|
struct sdma_driver_data sdma_imx35 = {
|
|
|
.chnenbl0 = SDMA_CHNENBL0_IMX35,
|
|
|
.num_events = 48,
|
|
|
};
|
|
|
|
|
|
+static struct sdma_script_start_addrs sdma_script_imx51 = {
|
|
|
+ .ap_2_ap_addr = 642,
|
|
|
+ .uart_2_mcu_addr = 817,
|
|
|
+ .mcu_2_app_addr = 747,
|
|
|
+ .mcu_2_shp_addr = 961,
|
|
|
+ .ata_2_mcu_addr = 1473,
|
|
|
+ .mcu_2_ata_addr = 1392,
|
|
|
+ .app_2_per_addr = 1033,
|
|
|
+ .app_2_mcu_addr = 683,
|
|
|
+ .shp_2_per_addr = 1251,
|
|
|
+ .shp_2_mcu_addr = 892,
|
|
|
+};
|
|
|
+
|
|
|
+struct sdma_driver_data sdma_imx51 = {
|
|
|
+ .chnenbl0 = SDMA_CHNENBL0_IMX35,
|
|
|
+ .num_events = 48,
|
|
|
+ .script_addrs = &sdma_script_imx51,
|
|
|
+};
|
|
|
+
|
|
|
+static struct sdma_script_start_addrs sdma_script_imx53 = {
|
|
|
+ .ap_2_ap_addr = 642,
|
|
|
+ .app_2_mcu_addr = 683,
|
|
|
+ .mcu_2_app_addr = 747,
|
|
|
+ .uart_2_mcu_addr = 817,
|
|
|
+ .shp_2_mcu_addr = 891,
|
|
|
+ .mcu_2_shp_addr = 960,
|
|
|
+ .uartsh_2_mcu_addr = 1032,
|
|
|
+ .spdif_2_mcu_addr = 1100,
|
|
|
+ .mcu_2_spdif_addr = 1134,
|
|
|
+ .firi_2_mcu_addr = 1193,
|
|
|
+ .mcu_2_firi_addr = 1290,
|
|
|
+};
|
|
|
+
|
|
|
+struct sdma_driver_data sdma_imx53 = {
|
|
|
+ .chnenbl0 = SDMA_CHNENBL0_IMX35,
|
|
|
+ .num_events = 48,
|
|
|
+ .script_addrs = &sdma_script_imx53,
|
|
|
+};
|
|
|
+
|
|
|
+static struct sdma_script_start_addrs sdma_script_imx6q = {
|
|
|
+ .ap_2_ap_addr = 642,
|
|
|
+ .uart_2_mcu_addr = 817,
|
|
|
+ .mcu_2_app_addr = 747,
|
|
|
+ .per_2_per_addr = 6331,
|
|
|
+ .uartsh_2_mcu_addr = 1032,
|
|
|
+ .mcu_2_shp_addr = 960,
|
|
|
+ .app_2_mcu_addr = 683,
|
|
|
+ .shp_2_mcu_addr = 891,
|
|
|
+ .spdif_2_mcu_addr = 1100,
|
|
|
+ .mcu_2_spdif_addr = 1134,
|
|
|
+};
|
|
|
+
|
|
|
+struct sdma_driver_data sdma_imx6q = {
|
|
|
+ .chnenbl0 = SDMA_CHNENBL0_IMX35,
|
|
|
+ .num_events = 48,
|
|
|
+ .script_addrs = &sdma_script_imx6q,
|
|
|
+};
|
|
|
+
|
|
|
static struct platform_device_id sdma_devtypes[] = {
|
|
|
{
|
|
|
+ .name = "imx25-sdma",
|
|
|
+ .driver_data = (unsigned long)&sdma_imx25,
|
|
|
+ }, {
|
|
|
.name = "imx31-sdma",
|
|
|
.driver_data = (unsigned long)&sdma_imx31,
|
|
|
}, {
|
|
|
.name = "imx35-sdma",
|
|
|
.driver_data = (unsigned long)&sdma_imx35,
|
|
|
+ }, {
|
|
|
+ .name = "imx51-sdma",
|
|
|
+ .driver_data = (unsigned long)&sdma_imx51,
|
|
|
+ }, {
|
|
|
+ .name = "imx53-sdma",
|
|
|
+ .driver_data = (unsigned long)&sdma_imx53,
|
|
|
+ }, {
|
|
|
+ .name = "imx6q-sdma",
|
|
|
+ .driver_data = (unsigned long)&sdma_imx6q,
|
|
|
}, {
|
|
|
/* sentinel */
|
|
|
}
|
|
@@ -350,8 +443,11 @@ static struct platform_device_id sdma_devtypes[] = {
|
|
|
MODULE_DEVICE_TABLE(platform, sdma_devtypes);
|
|
|
|
|
|
static const struct of_device_id sdma_dt_ids[] = {
|
|
|
- { .compatible = "fsl,imx31-sdma", .data = &sdma_imx31, },
|
|
|
+ { .compatible = "fsl,imx6q-sdma", .data = &sdma_imx6q, },
|
|
|
+ { .compatible = "fsl,imx53-sdma", .data = &sdma_imx53, },
|
|
|
+ { .compatible = "fsl,imx51-sdma", .data = &sdma_imx51, },
|
|
|
{ .compatible = "fsl,imx35-sdma", .data = &sdma_imx35, },
|
|
|
+ { .compatible = "fsl,imx31-sdma", .data = &sdma_imx31, },
|
|
|
{ /* sentinel */ }
|
|
|
};
|
|
|
MODULE_DEVICE_TABLE(of, sdma_dt_ids);
|
|
@@ -1424,6 +1520,8 @@ static int __init sdma_probe(struct platform_device *pdev)
|
|
|
if (ret)
|
|
|
goto err_init;
|
|
|
|
|
|
+ if (sdma->drvdata->script_addrs)
|
|
|
+ sdma_add_scripts(sdma, sdma->drvdata->script_addrs);
|
|
|
if (pdata && pdata->script_addrs)
|
|
|
sdma_add_scripts(sdma, pdata->script_addrs);
|
|
|
|