mirror of https://gitee.com/openkylin/linux.git
dmaengine: imx-sdma: Add i.MX7 support
Allow i.MX7 to work with the imx-sdma driver. Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com> Tested-by: Stefan Agner <stefan@agner.ch> Signed-off-by: Vinod Koul <vinod.koul@intel.com>
This commit is contained in:
parent
e4b75760fa
commit
b7d2648ac3
|
@ -8,6 +8,7 @@ Required properties:
|
|||
"fsl,imx51-sdma"
|
||||
"fsl,imx53-sdma"
|
||||
"fsl,imx6q-sdma"
|
||||
"fsl,imx7d-sdma"
|
||||
The -to variants should be preferred since they allow to determine the
|
||||
correct ROM script addresses needed for the driver to work without additional
|
||||
firmware.
|
||||
|
|
|
@ -479,6 +479,24 @@ static struct sdma_driver_data sdma_imx6q = {
|
|||
.script_addrs = &sdma_script_imx6q,
|
||||
};
|
||||
|
||||
static struct sdma_script_start_addrs sdma_script_imx7d = {
|
||||
.ap_2_ap_addr = 644,
|
||||
.uart_2_mcu_addr = 819,
|
||||
.mcu_2_app_addr = 749,
|
||||
.uartsh_2_mcu_addr = 1034,
|
||||
.mcu_2_shp_addr = 962,
|
||||
.app_2_mcu_addr = 685,
|
||||
.shp_2_mcu_addr = 893,
|
||||
.spdif_2_mcu_addr = 1102,
|
||||
.mcu_2_spdif_addr = 1136,
|
||||
};
|
||||
|
||||
static struct sdma_driver_data sdma_imx7d = {
|
||||
.chnenbl0 = SDMA_CHNENBL0_IMX35,
|
||||
.num_events = 48,
|
||||
.script_addrs = &sdma_script_imx7d,
|
||||
};
|
||||
|
||||
static const struct platform_device_id sdma_devtypes[] = {
|
||||
{
|
||||
.name = "imx25-sdma",
|
||||
|
@ -498,6 +516,9 @@ static const struct platform_device_id sdma_devtypes[] = {
|
|||
}, {
|
||||
.name = "imx6q-sdma",
|
||||
.driver_data = (unsigned long)&sdma_imx6q,
|
||||
}, {
|
||||
.name = "imx7d-sdma",
|
||||
.driver_data = (unsigned long)&sdma_imx7d,
|
||||
}, {
|
||||
/* sentinel */
|
||||
}
|
||||
|
@ -511,6 +532,7 @@ static const struct of_device_id sdma_dt_ids[] = {
|
|||
{ .compatible = "fsl,imx35-sdma", .data = &sdma_imx35, },
|
||||
{ .compatible = "fsl,imx31-sdma", .data = &sdma_imx31, },
|
||||
{ .compatible = "fsl,imx25-sdma", .data = &sdma_imx25, },
|
||||
{ .compatible = "fsl,imx7d-sdma", .data = &sdma_imx7d, },
|
||||
{ /* sentinel */ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, sdma_dt_ids);
|
||||
|
@ -1375,6 +1397,7 @@ static void sdma_issue_pending(struct dma_chan *chan)
|
|||
#define SDMA_SCRIPT_ADDRS_ARRAY_SIZE_V1 34
|
||||
#define SDMA_SCRIPT_ADDRS_ARRAY_SIZE_V2 38
|
||||
#define SDMA_SCRIPT_ADDRS_ARRAY_SIZE_V3 41
|
||||
#define SDMA_SCRIPT_ADDRS_ARRAY_SIZE_V4 42
|
||||
|
||||
static void sdma_add_scripts(struct sdma_engine *sdma,
|
||||
const struct sdma_script_start_addrs *addr)
|
||||
|
@ -1424,6 +1447,9 @@ static void sdma_load_firmware(const struct firmware *fw, void *context)
|
|||
case 3:
|
||||
sdma->script_number = SDMA_SCRIPT_ADDRS_ARRAY_SIZE_V3;
|
||||
break;
|
||||
case 4:
|
||||
sdma->script_number = SDMA_SCRIPT_ADDRS_ARRAY_SIZE_V4;
|
||||
break;
|
||||
default:
|
||||
dev_err(sdma->dev, "unknown firmware version\n");
|
||||
goto err_firmware;
|
||||
|
|
Loading…
Reference in New Issue