From nobody Sun Feb 8 13:48:19 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013040.outbound.protection.outlook.com [52.101.83.40]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A4EA9372B3C; Wed, 28 Jan 2026 18:05:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.40 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769623556; cv=fail; b=M86R+382nfIxYMWK5ibK7C0FhGVW3MicrORVdcxa5BWCm7O+DQlRYyx7cviNHDq/31tA8HJ+Pt8Fy/vqA7H3bjJFbxjFpXmJCILEjtMi6QdQoMGFFIUU+NoOPnCDJtxjb75TEHcUfznUA6O9nFDdRugVAmqigQnwjkreo8n/4A0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769623556; c=relaxed/simple; bh=ou7S4OL7ztdHxv5Lc2kHLzb62Ye9sPYPor/4kcRFXu8=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=h9tKLq/zVl/vcVubxnM2xyzknVdyhRMvfNIWY/hqAlav+R9nNs/4shnnO2t4pdDTsK/8Vix4HK78sDQ5tinzzLy/XH5MA2j76GI/C66wzT7F+nhIn1PCrSJtshkt/PjIHnMogLoeGaY9E4OYNgVSEtpl2+Xusox+fDCb54BBP6k= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=PdG7pYX4; arc=fail smtp.client-ip=52.101.83.40 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="PdG7pYX4" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Eh//trauTja/bDiJVrUbbDkP7UGQYNYb7sXZHZ9idChJTupx1SgfHhOhY86Thq913D2fpW8yT2VGChFQFqW7gldd6PKesPeABiv7cUAfGOSiCare7MdcmRIOfzCRltNx+JtbQcMPcU+e6g/Oq77C4tuts9pXPac0wFpW50VNcpVZ0dvp7b57PIhbjLi3Et2q2n18GrHkLGAGKMf2bMLAKsJWgjDG1PCFNlxRAVM6BdBeKdlXhABhoAwyDJJMQEnoIXt6sZ7DfeMLIhgu6JYc6n5ac+mc9aD4ZkgWZUaeOlJMPw3ak2r/L/q12E89wBlkToZMurGYsQp86w29+rVwmw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=cf5QLy31Mihqgbn7r9VG2fdRFs80COU0hr2k9jE/wA8=; b=u5z1vtEF8zSsAwou2GzIV6Uavw0RgMX8EiJl+KIXuYhODDcjgMokRcsUpgaZb4IeKsXeGVJxXuXkOel/JPkN1x5vKQIa9fQgn/dXeJimMVs243vIuu04uW2rYQGLd9D+Xc+5OyXadHS55JyRsopR4K19/7mMWcQp2uvEBwUn2EepPyynbbv3ETmJy5fRAqD5VSBLwijYMUm1pDUfDMYSZlt9medj8U1wfQ7HoAb+gdLlpDyajaiFe6+k/WJ3OheHUIBNQIli8zTVbTZJIAo1e7v9V0xN2mgBC9gStQhZtmNaK4mbgnsz7QZHCBG9R+a+bTDUDuvotYdRKzagCKA7QA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=cf5QLy31Mihqgbn7r9VG2fdRFs80COU0hr2k9jE/wA8=; b=PdG7pYX4udnwitWvP1R/axfa3ZjwTJpdyEXaaLupaJU+lqsBF/wl4mFtfK7g2fA+I2JY28ejCcCtcDRbxXrZrFLVDYwZwe4O5b2qSo9Ma18d+gw3tfNbLOXfajaHd2qfYO5GsYzAaeYjsz1PZHaKjHJgFYtn7FbYvEPJVI0680hAfM3h727lCjDtzRRSUD/WTdJJP83w6Rfbf1sC3Dlz/0ezoiI4aw+tupZQilsyuduf5opUJ8PZDqaNxh45jz/cgZeX0nEyj2GTxfAyv1+M5ovW1zle1U3e5iKw6msznzd4dZxgm3kinFzM/j9UzjpvF57EGrwoJuL5lF2uWm/K2Q== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) by AM9PR04MB8145.eurprd04.prod.outlook.com (2603:10a6:20b:3e1::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.8; Wed, 28 Jan 2026 18:05:49 +0000 Received: from PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588]) by PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588%6]) with mapi id 15.20.9520.005; Wed, 28 Jan 2026 18:05:49 +0000 From: Frank Li Date: Wed, 28 Jan 2026 13:05:20 -0500 Subject: [PATCH RFC 01/12] dmaengine: Extend virt_chan for link list based DMA engines Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260128-dma_ll_comlib-v1-1-1b1fa2c671f9@nxp.com> References: <20260128-dma_ll_comlib-v1-0-1b1fa2c671f9@nxp.com> In-Reply-To: <20260128-dma_ll_comlib-v1-0-1b1fa2c671f9@nxp.com> To: Vinod Koul Cc: linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org, imx@lists.linux.dev, joy.zou@nxp.com, Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1769623545; l=7274; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=ou7S4OL7ztdHxv5Lc2kHLzb62Ye9sPYPor/4kcRFXu8=; b=ljkF4UBAreVH/tbP48Annnx1iFWHNglrf34pJPGsLuP6fOUdI4rjkuj2MxTu0gIzduRzjVwXJ 9mPGn4JE0NkAySaqUTSM5O7AEPiF6VO/ViQorTzgsPNjNAF9mu+c89/ X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: SA9PR03CA0009.namprd03.prod.outlook.com (2603:10b6:806:20::14) To PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PA4PR04MB9366:EE_|AM9PR04MB8145:EE_ X-MS-Office365-Filtering-Correlation-Id: 5a977883-6967-4b20-ab55-08de5e97de05 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|19092799006|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?QU9Dc2FUdHJkaEpyQlhsUHIrbXFlY1ZicGZERnozQ3hkbTVKWUVlUElPVVE5?= =?utf-8?B?dCtuMmRHVnZNN0pPNWVYMzN3MUtrenlINm5uQVAzYlRYbm9qNlNac2hjVVZS?= =?utf-8?B?dTFTcWpxWllrbjVXRTlqRlhuUkltaTFyWWR2OFRlQ1doRTMyRjdlMVNTcVla?= =?utf-8?B?TVZCWmV4Z3NJSmZzNDhNUys3ckFwcWNGU2FvaXlVR0FITjZLdDNQdklJVTM2?= =?utf-8?B?YXB3ZHplOFFtZUlRL0JacWh1TEtnamwyc0VtdzU2a1hiTjc1dmdRTGFrMWJK?= =?utf-8?B?blhDeFlPWmtVQWRIU3A4TTZTbzlycTY0ZEtiTmxWNndpVGNFVkdLeExtOGZ6?= =?utf-8?B?eldyZ2E3ZXJORmR6QWlUbHh1cnZPU3VCcVh5YUhqUDM5ZWhvZVNkTWV5WXUw?= =?utf-8?B?UjQzY0dBWUVNcGtucGtnZ1FqSUJBdU5JV1FxbXZ3N0pOMXNKR2wxTXpxYkJr?= =?utf-8?B?b3FLb3k4WDM1WFpsM1lLdG5nT0dQSHEvVDVlVW9iRXRDUGJTcVRBbDNSZ1ZY?= =?utf-8?B?QmJPbE1kYVhDaEUwZ0JwVHFGWTZlb3hkRm5NZTJsZVVQRzNLMmluYitZV1BS?= =?utf-8?B?UjZOVGp3Zy9xNmtOc2ZsZVY2TXJRZHlraFBZL3NsV0ZqMDhEVVc5RVRUNzhq?= =?utf-8?B?SGtDMmVHMUs5NWhOa2lUK1FsMjB1WFRjT2tMVzVLTFJ1bXNIR2k4Tnd5Q2NI?= =?utf-8?B?aFFjeFBQU0szdHU3Y2tPbTlyRk5GbWgvRUtlNU5DYXBRNVJ4bVZBQjI1Nm5H?= =?utf-8?B?SnIvWDJSZGI4S2ljTk1BZE40L05zTUtjQTZ3LzIzM2F2MWpIWlFmM0NEb0FJ?= =?utf-8?B?bGxCMC9oMlUzRCtaaVgrV0NUTDc1Wmxlb0pUQTBJSEZrOWJaUW0zWWlWMDl0?= =?utf-8?B?SUJNbU5WWENpT1RhbFR4Z3YxNWZNZ0d5TmgrSElUSUFMT3ZhS3A5OHM5aHRL?= =?utf-8?B?UHpNSUpuS3dWZjFSZlpYdEVydVdqRlNwUWhnRWhFb2NXTVQwNFNLdzN6RTI4?= =?utf-8?B?ZlhmTC9aN2dxSWkrZU91YWtrdFZ3bzl5Zm1zV25zTHAzUktvUVBUUFZ4WWVa?= =?utf-8?B?RGFjdU9RWnpwR2ljR2RGWC9ScVdXQzk4bDdLTHlkcVhDQkZFbDBIWDlqMzIv?= =?utf-8?B?SkRqWmtkMVlqVTQzeGFuR2VzTXowaFFmaU9BSGZTMlBJa3dDN3JTcnlyTWxa?= =?utf-8?B?QXl1bGwyTjZHV3dPRGZBeE9GVzlvUk5pcDJLWFhCQXQ3WHlEU3Zka05ZQWNG?= =?utf-8?B?NFQzLzgzVHh0dWNxVlJhY25iR3FTRTRpKzYyZHh6azQ2VzREKzd0S3hhS29S?= =?utf-8?B?Zm02QWhKVzVoaGEwNUgvMUFIMnpMR0V4dFphSkU2elRZTk9RVXc3S1lYUzVL?= =?utf-8?B?bGw3TWs2cURENHdiWlNZeGlHaDlENUROUDZhWTNWV0paay93NzdGRDJMV0U3?= =?utf-8?B?cFQ1Y01SVG9PYTNYcDRTZWJuVnpFZUJjT0VtZTdwajl3K3l0WGQ4MGlIV1lv?= =?utf-8?B?MVJCaTZRb3lENi9KdlRUWjArSHlmdGI4ZG15WmxwOUVrdWdLeW8vZjk3bjhZ?= =?utf-8?B?VEFTS0FMcHFRV2Z5eWcwd1g0YnEwQ2Y3MHArQ1EwckxvZDVKakltSHFNYUY2?= =?utf-8?B?VEkxNmhtTFRSUGZQRk5NeEV6aEl5NitjMThvOGdCWmplZTVvUVNVY0hMbGlJ?= =?utf-8?B?eFJTWTlwbzF6V3N2VE90T2hWcDd5QmJZUTg5TllDN1p5TUFwaVdMZW5BZDhZ?= =?utf-8?B?ZHNjcy9IRE5VV2pNOWErZXczUFIwVFJvYTZ6ZDF1clNlN1kyeXV0VDJYd2R1?= =?utf-8?B?WjV6VWtLQ1F5TWpheHFid3hnL0pQZEtHYkFKdDh5ZCtsdTJqZmFVRGFkY1RF?= =?utf-8?B?a3c3d0hBaTZUbVBBY2o0SVRjNHkyQlhnOEltSnMyMDdZdFIzdjhoZFFFLy8x?= =?utf-8?B?bFV1OGQ1VTNCaUQvODRuQ0F0dTdpSTM5NktFSE9wTW1Gbndqa0doamVQa1dx?= =?utf-8?B?QzUvelFINGp1Z3pWZlhlTVpTVy9PcnoyVUVBQnh4dTFWM1R1cHdnYnNycnlR?= =?utf-8?B?d3ZSejBRQ2VhK0wrU2xBNjRsOUoyYlN4T09DbEtrTUliSWZOc21ZcXZFVWJV?= =?utf-8?B?K3FrWERzakxiNzdVMjdIUWtyZDU5M1FsSnpmd0hEbkJwbWpJZHRFQktTOFZi?= =?utf-8?Q?21vDrf7UgXQ3O5iB7icXyF0=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR04MB9366.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(19092799006)(376014)(52116014)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UDFHZTdNeWtnNUhBUzdPM1MzUVdyeTVIMVFxbUNnRm1WTlhmc3hyQ1J3eXVy?= =?utf-8?B?b0xjbW42elk4RytiTVg2ZDVhZi94b1pUaTAzRk5PT244b1JraWVBNTdzMG5P?= =?utf-8?B?dDdaWFFhTEtoZmc1eVRGejVlVWE0QmhZRTh1VGxjdy82Nk1rOVlyMytvQmQv?= =?utf-8?B?dFFuSXN0bmRRcjlQME56Lzl0aVlkZGpZVVRCSFlrb3B4KzJLeXlqNGg5bGYr?= =?utf-8?B?OUI2MjlXdGJUR0VMaFlrRDFHNXdiMzkwRHB1ZzB0ZE12V0lYVU5ZbUdraXdo?= =?utf-8?B?MmF3ZWZCMDRNQXlFMWQzQWQzQ21tTkc0bE1oZWJrSWduQzBjVWlub0kxTDBC?= =?utf-8?B?VVlhODFXYnptL1RqZ2dZdmhYZnZiZmoyTHJjaFJodFU0SVRpdTBJamNsSGZk?= =?utf-8?B?RTREZmlHVHN6N25MOW9LU0wwaHJqWmoyOThraUMvM0VURXVvNmlHdXgycTdM?= =?utf-8?B?RU9nOUpWb2JZT0ZkWEZsS2sveFZVMkhCcFc0TTNxRnZJbkVLMlVDNXlRRnZj?= =?utf-8?B?NVVzSGpaV3l6QVlva2FYVmhoaHhtbSswVStnK3NyS1VVVEFmQllVODJmWlpP?= =?utf-8?B?TnI1cWdwaWRmMkgvU2dWMnd3VmRRTXVwM2ViNGdqQTdXYVl2bzQ1TmR0bUpz?= =?utf-8?B?SHc5TUNlTmp3UzgxZjhTMzl6SGwrZUFjNlI0a2hzdlZpK0JhajAxRnNZT3ZR?= =?utf-8?B?UXJZTUh4Y3VQT1JuNk11ZzVWNjdKN0pTN1Uvc0pXS25lOU1ud1dPMkcrUUZl?= =?utf-8?B?QzJYbGpMSU83ZVhlYXh1dlljdFJKcmdnaWtCV0c4cWovTmViNlh2Skx2NGtp?= =?utf-8?B?N2kxY0hCdFFyNjgvYTI4NHJFT3RmY09aNzl6UzVBcVREWVhsYjNHcjUva3A5?= =?utf-8?B?SzROTktobmRvYUFnYUFFUVNOZGt4eUxneGpGaGdXdWJ2TWZNM2hLbk9FbnhS?= =?utf-8?B?SCtvQ0U2YUw3dVFROXM3SzVYbzk2RGFtUFVPaXJkbzVKMzczcVJkVFhPSm5J?= =?utf-8?B?SHF2dTZwdTNoTXdWc3RmUWhDSURZZUxBOWFIM1VZTGFycm1RUXFsam95YzJj?= =?utf-8?B?OVhHK2xKWm5hSEJLZk5iNFZEeG1mMmhEYmtucysxQWFnclpVSDlBWkJ5UUFO?= =?utf-8?B?dUp1ZlBtR2QraHRXdk1MVHlXbTVXUWhTWHlNMDJtUloySkhYblBvalVuT1h5?= =?utf-8?B?UjY5RzhjdFpiL1dqT3NZcUpad0ZscjZPcE9jUm1aVFluWWd0ODFRdERvSExk?= =?utf-8?B?KzFvaEpPMStZTG5CZnlqYTkwTnhVREF4cWFUZHVjM2ppMm90NVY4NTgvMG5r?= =?utf-8?B?WkJDbXoxRVFuRHNrYWp2QUZlQ0h6TzBaTlpXeHFodDA2cVFjT0hVNVBrTlhT?= =?utf-8?B?YXZjOVNyOVdyeUd3SGdDSzhuZHE2eFBsSGhRUlFYeldYSEhJTHNEZ09UbzlN?= =?utf-8?B?SDNLY2Y4RFl5dkRoaVhIaWVNN2hDT0MybVJ3Rk5GeHhVRGVqeEJyazFDeHJJ?= =?utf-8?B?Uk9ENkY0NmNKQ2s1dHV5dU9GUnd4Z1lLSVlUUTkyMVdKQXFCK05RZmhGU0Vy?= =?utf-8?B?V2hQMkovNmxSVDRhTk1wSUx1ZEF2QkpOSzc0YmdiOXVFaTYyVVg3eWZLelBa?= =?utf-8?B?WUE5dlBaQkFyeEc0L2VZa29EWk4rNGVTU3gyN2FBVjZHQ1p0dGJkN0I0cFY5?= =?utf-8?B?b29KQ2pPQnl4UzdlWkVOd2hyOVJZRXo3cWFqRS9kS2o2YzRGNEZYNDlLdjlI?= =?utf-8?B?SjNjNTlKTEQzU0xLSDN4Q3MrenZJKzBQV0pidFV0MThJZ2kwQTRWUWZaYmFH?= =?utf-8?B?VkptUmhvbm9vQnJmR0JmVmJOaHRic1lhYmMyNDlEK1V5Z1QzL3ZITkp5bUp5?= =?utf-8?B?L0dBM0JSYlM4b2pzNXpBNmkvRkNMZllsUGFyc1U5SGlRS21hU2IzTnJsWWU5?= =?utf-8?B?S0RCRHZmWG9YMkowS2lmbzN2NCtWYzZQdGJHT0luWXR3dmRYMHc0eDZqekth?= =?utf-8?B?S1NPcElxcVovSlBEK3Fja0FXR2hQU1dmalJjRGpKelpaS3BPYjVjTmpDMU9o?= =?utf-8?B?Zm5NWnkzV0h5QU56b09zSGxEaUdyMEFpV0pSZEVIT1Y3cFp3Y25ZOWFmSUMw?= =?utf-8?B?d1YvYlVlMU5XNXhiVDhCS3U4Nk5PaStVdGEweU83TjZhKzBVQ0E3QXV2U3p2?= =?utf-8?B?VXdvNnJwdFBJWWlZZS94eVUvMEJnL1dFK2ExZnNwcndxZ3A5a1ZPVjF1bjdQ?= =?utf-8?B?Y1ZZenRMZGRiNGwxVy95ZkZtczRkRUFOMEd0SXg0Sm9XdDZOQUdtbG5qRHhY?= =?utf-8?B?VTdvNDd2ZFZzaFhWZ0lxRGJkSjVIUnBtMXZXNWZQd3VWSFgyNGpoUT09?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5a977883-6967-4b20-ab55-08de5e97de05 X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9366.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jan 2026 18:05:49.2545 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: h7HHPaRm6AMR7kWM1H4JzAyoacKcmHItwSA2avOSFu/qKGHA4yaYmY0Cntj+yu0Ua9rq858vUzLH1VrFy2VTRg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8145 Many DMA engines (such as fsl-edma, at-hdmac, and ste-dma40) use linked-list descriptors for data transfers and share a large amount of common logic. Add a basic framework to support these link list based DMA engines and prepare for a common library. Introduce vchan_dma_ll_terminate_all() as the first shared helper. Additional common functionality will be added in follow-up patches. Signed-off-by: Frank Li --- drivers/dma/Kconfig | 4 +++ drivers/dma/Makefile | 1 + drivers/dma/fsl-edma-common.c | 35 ++++++++++++++++++------- drivers/dma/ll-dma.c | 61 +++++++++++++++++++++++++++++++++++++++= ++++ drivers/dma/virt-dma.h | 19 ++++++++++++++ 5 files changed, 111 insertions(+), 9 deletions(-) diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig index 8bb0a119ecd48a6695404d43fce225987c9c69ff..5a61907d4d9631e61cf0c44d410= 4983e9113f28f 100644 --- a/drivers/dma/Kconfig +++ b/drivers/dma/Kconfig @@ -47,6 +47,9 @@ config DMA_ENGINE config DMA_VIRTUAL_CHANNELS tristate =20 +config DMA_LINKLIST + tristate + config DMA_ACPI def_bool y depends on ACPI @@ -221,6 +224,7 @@ config FSL_EDMA depends on HAS_IOMEM select DMA_ENGINE select DMA_VIRTUAL_CHANNELS + select DMA_LINKLIST help Support the Freescale eDMA engine with programmable channel multiplexing capability for DMA request sources(slot). diff --git a/drivers/dma/Makefile b/drivers/dma/Makefile index a54d7688392b1a0e956fa5d23633507f52f017d9..f1db081a8d2487968f0ca110b80= 706901f9903ae 100644 --- a/drivers/dma/Makefile +++ b/drivers/dma/Makefile @@ -6,6 +6,7 @@ subdir-ccflags-$(CONFIG_DMADEVICES_VDEBUG) +=3D -DVERBOSE_D= EBUG #core obj-$(CONFIG_DMA_ENGINE) +=3D dmaengine.o obj-$(CONFIG_DMA_VIRTUAL_CHANNELS) +=3D virt-dma.o +obj-$(CONFIG_DMA_LINKLIST) +=3D ll-dma.o obj-$(CONFIG_DMA_ACPI) +=3D acpi-dma.o obj-$(CONFIG_DMA_OF) +=3D of-dma.o =20 diff --git a/drivers/dma/fsl-edma-common.c b/drivers/dma/fsl-edma-common.c index c4ac63d9612ce9f1f5826a2186938a785ed529d1..396ff6dfa99a150f9ce34effd64= 534e3d8e8576b 100644 --- a/drivers/dma/fsl-edma-common.c +++ b/drivers/dma/fsl-edma-common.c @@ -236,16 +236,11 @@ void fsl_edma_free_desc(struct virt_dma_desc *vdesc) int fsl_edma_terminate_all(struct dma_chan *chan) { struct fsl_edma_chan *fsl_chan =3D to_fsl_edma_chan(chan); - unsigned long flags; - LIST_HEAD(head); + int ret; =20 - spin_lock_irqsave(&fsl_chan->vchan.lock, flags); - fsl_edma_disable_request(fsl_chan); - fsl_chan->edesc =3D NULL; - fsl_chan->status =3D DMA_COMPLETE; - vchan_get_all_descriptors(&fsl_chan->vchan, &head); - spin_unlock_irqrestore(&fsl_chan->vchan.lock, flags); - vchan_dma_desc_free_list(&fsl_chan->vchan, &head); + ret =3D vchan_dma_ll_terminate_all(chan); + if (ret) + return ret; =20 if (fsl_edma_drvflags(fsl_chan) & FSL_EDMA_DRV_HAS_PD) pm_runtime_allow(fsl_chan->pd_dev); @@ -830,6 +825,21 @@ void fsl_edma_issue_pending(struct dma_chan *chan) spin_unlock_irqrestore(&fsl_chan->vchan.lock, flags); } =20 +static int fsl_edma_ll_stop(struct dma_chan *chan) +{ + struct fsl_edma_chan *fsl_chan =3D to_fsl_edma_chan(chan); + + fsl_edma_disable_request(fsl_chan); + fsl_chan->edesc =3D NULL; + fsl_chan->status =3D DMA_COMPLETE; + + return 0; +} + +static const struct dma_linklist_ops fsl_edma_ll_ops =3D { + .stop =3D fsl_edma_ll_stop, +}; + int fsl_edma_alloc_chan_resources(struct dma_chan *chan) { struct fsl_edma_chan *fsl_chan =3D to_fsl_edma_chan(chan); @@ -838,6 +848,13 @@ int fsl_edma_alloc_chan_resources(struct dma_chan *cha= n) if (fsl_edma_drvflags(fsl_chan) & FSL_EDMA_DRV_HAS_CHCLK) clk_prepare_enable(fsl_chan->clk); =20 + ret =3D vchan_dma_ll_init(to_virt_chan(chan), &fsl_edma_ll_ops, + fsl_edma_drvflags(fsl_chan) & FSL_EDMA_DRV_TCD64 ? + sizeof(struct fsl_edma_hw_tcd64) : sizeof(struct fsl_edma_hw_tcd), + 32, 0); + if (ret) + return ret; + fsl_chan->tcd_pool =3D dma_pool_create("tcd_pool", chan->device->dev, fsl_edma_drvflags(fsl_chan) & FSL_EDMA_DRV_TCD64 ? sizeof(struct fsl_edma_hw_tcd64) : sizeof(struct fsl_edma_hw_tcd), diff --git a/drivers/dma/ll-dma.c b/drivers/dma/ll-dma.c new file mode 100644 index 0000000000000000000000000000000000000000..3845cca7926eb71f008cb98d8c6= 22cb28a2369a5 --- /dev/null +++ b/drivers/dma/ll-dma.c @@ -0,0 +1,61 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Common library for DMA Controller, which use Link List DMA descriptor. + * + * For the DMA controller, which DMA descriptor work as Link List, there a= re + * field, which point to next DMA descriptor. + * + * Each DMA descriptor's size is the same. + * + * =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =90 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=90 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=90 + * =E2=94=82 =E2=94=82 =E2=94=8C=E2=94=80=E2=96=BA=E2=94=82 =E2= =94=82 =E2=94=8C=E2=94=80=E2=96=BA=E2=94=82 =E2=94=82 + * =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=82 =E2=94=82 + * =E2=94=9C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =A4 =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=A4 =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=A4 + * =E2=94=82 Next =E2=94=9C=E2=94=80=E2=94=98 =E2=94=82 Next =E2=94=9C=E2= =94=80=E2=94=98 =E2=94=82 Next =E2=94=82 + * =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =98 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=98 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=98 + * + */ +#include +#include +#include +#include +#include + +#include "virt-dma.h" + +int vchan_dma_ll_init(struct virt_dma_chan *vc, + const struct dma_linklist_ops *ops, size_t size, + size_t align, size_t boundary) +{ + if (!ops || !ops->stop) + return -EINVAL; + + vc->ll.ops =3D ops; + + return 0; +} +EXPORT_SYMBOL_GPL(vchan_dma_ll_init); + +int vchan_dma_ll_terminate_all(struct dma_chan *chan) +{ + struct virt_dma_chan *vchan =3D to_virt_chan(chan); + LIST_HEAD(head); + int ret; + + scoped_guard(spinlock_irqsave, &vchan->lock) { + ret =3D vchan->ll.ops->stop(chan); + if (ret) + return ret; + + vchan_get_all_descriptors(vchan, &head); + } + + vchan_dma_desc_free_list(vchan, &head); + + return 0; +} +EXPORT_SYMBOL_GPL(vchan_dma_ll_terminate_all); + +MODULE_AUTHOR("Frank Li"); +MODULE_DESCRIPTION("Common library for Link List DMA Descriptor"); +MODULE_LICENSE("GPL"); diff --git a/drivers/dma/virt-dma.h b/drivers/dma/virt-dma.h index 59d9eabc8b6744a439aeed3114164c5203341a6c..081eb910d0b0cd2b60232736587= c698fff787cb9 100644 --- a/drivers/dma/virt-dma.h +++ b/drivers/dma/virt-dma.h @@ -19,11 +19,23 @@ struct virt_dma_desc { struct list_head node; }; =20 +struct dma_linklist_ops { + int (*stop)(struct dma_chan *chan); +}; + +struct dma_linklist { + const struct dma_linklist_ops *ops; +}; + struct virt_dma_chan { struct dma_chan chan; struct tasklet_struct task; void (*desc_free)(struct virt_dma_desc *); =20 +#if IS_ENABLED(CONFIG_DMA_LINKLIST) + struct dma_linklist ll; +#endif + spinlock_t lock; =20 /* protected by vc.lock */ @@ -234,4 +246,11 @@ static inline void vchan_synchronize(struct virt_dma_c= han *vc) vchan_dma_desc_free_list(vc, &head); } =20 +#if IS_ENABLED(CONFIG_DMA_LINKLIST) +int vchan_dma_ll_init(struct virt_dma_chan *vc, + const struct dma_linklist_ops *ops, size_t size, + size_t align, size_t boundary); +int vchan_dma_ll_terminate_all(struct dma_chan *chan); +#endif + #endif --=20 2.34.1 From nobody Sun Feb 8 13:48:19 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013040.outbound.protection.outlook.com [52.101.83.40]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D45E1372B5D; Wed, 28 Jan 2026 18:05:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.40 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769623558; cv=fail; b=bChEqrmFZQGllSesTaNPZXkpZd1w4DRj3i2yhL6+wcWg00t6LQgPYySM7M+8WaaLvcYTt+wqGWL5HO4IADi20yMufgn1kWSEL/IRJJWlbAd1qktXb96H5xMKhLxbo5aMS2AKPGl4vrFwHAgrJENp1OmtBqypZu2uC4gWeL7tAjE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769623558; c=relaxed/simple; bh=gAsBE2ah1Lbrx0HXmMSNthkqL7+XI9w7fc//duOoH4g=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=g2eR1nblj6tw3lrBsQQZhwJSg0bXuyd5k0bHazcF7t5sQdOnuYVVbx/dlM1QXRi4DT1MiRAZkJqS+3xgdUO7HXy5XSOjV4D/1L/LemU6uukoz0oyy50pR0R8CNPdDk5ZwfRgSDb935KprizgCNau0p/yDRTnVK6ZYOZnJVbBqXQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=gW6X2Lq6; arc=fail smtp.client-ip=52.101.83.40 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="gW6X2Lq6" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Z/1OzLK1MqMRHVvzb86S6hTi1RU4yUfemOUt9ODOtNOEjknN4Lk/L6DzuSwgr9v0/ZQ0W/6ibVR8s5YHKlNzJXgdh0Z19g6EabAvBRGitorhmuOqbnjQgpVAogOmAGJDvWMydtLqyHYcs1o/MKYDMyU61huvXyskzfXb3UWOBeDag2JbCDziUdF3bsxgSq689JC7TAPMg6dZFkWnfWRNqpCAI7lKD0JvFwYSPZUeezavYefCyTqnHAO1JHLxfvsT23REm/OWBiGhr83sC2+/nzT1RZOb9hGHEfJ7qYqJdRuqjMLnxT+Xiqi87YGQ/rzmcslD7gffzKavVPnXB4+CKA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=5H/6wapJW9zRPQR6qu4bKNb+ofZdq/MLrZ/VkKEcaoQ=; b=MdQ/TSLmsK4bZVfds1OLlCGa2AT+mY7N7TeAyIZbp/VrgYdVHwD3aha9PbQxXErpxMnfX3n0JCmbRuthm6LyAMTbp+83wml7hqW83sk9p2VIO3xecSOqQzYVR0JDZDNHLump164KnE6kO5Sg4gQlbbtJeKUyklQclHDWsltGt2ZK/GWQ63HVDJu6Nt7453qfm7SS5cNDLRw3tYo2swhpRT7KNuGnCvvd0nq3CmqRtj1XqNXAVA2jEV92BhYa3Om+hdAVJB4yj0B90BhO77pLMMa/tRxMdHKZjr+Sf16VzTk6xLIVxbSr4anjZ/apzOZkjNYIoaNUdXUeVpxhn9pFKw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5H/6wapJW9zRPQR6qu4bKNb+ofZdq/MLrZ/VkKEcaoQ=; b=gW6X2Lq6ZG9r9CYmsNY02lfg3RRQJu3YspDqSqUE4L2geZ/j2JKGqqfjdbkNQ7Hu4zvYXIOExjh6dIIL75l7dEBQoGxtQaD8ZiPf4aTmhoVRxIiU5S+JNd/0//+13KMLrrhukxyXOHeuWTLI8h38fiMc0sLMb+R2ta9Ja0k6QPrLqinNVoTNAWgShQdIYp20bAISJUIFyORFHSbp9LGpm+eMG2mOAEUNcx2d0LnwYMMo9FsjO8596IzXg+ONn13kWw77n++bYBtq5AVvI1JQ4iG7aMsdV2AqYF03jusYEhO+EyjPElD8myro3Wmmy/eIllbWEyQkjyXDKNmROjGDUQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) by AM9PR04MB8145.eurprd04.prod.outlook.com (2603:10a6:20b:3e1::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.8; Wed, 28 Jan 2026 18:05:52 +0000 Received: from PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588]) by PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588%6]) with mapi id 15.20.9520.005; Wed, 28 Jan 2026 18:05:50 +0000 From: Frank Li Date: Wed, 28 Jan 2026 13:05:21 -0500 Subject: [PATCH RFC 02/12] dmaengine: Add common dma_ll_desc and dma_linklist_item for link-list controllers Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260128-dma_ll_comlib-v1-2-1b1fa2c671f9@nxp.com> References: <20260128-dma_ll_comlib-v1-0-1b1fa2c671f9@nxp.com> In-Reply-To: <20260128-dma_ll_comlib-v1-0-1b1fa2c671f9@nxp.com> To: Vinod Koul Cc: linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org, imx@lists.linux.dev, joy.zou@nxp.com, Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1769623545; l=1669; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=gAsBE2ah1Lbrx0HXmMSNthkqL7+XI9w7fc//duOoH4g=; b=XFS1RIMhK1wec5T3bB43rZP7FsqCX7M1n5GPkKbacmGPHRbOR64d43WQGu1INyz8QpvvgaoiH snIDIOQwPhbAa5SfbAN4fQIuRVvh6pp3T89I54tuep2e9R/UKs+1kv2 X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: SA9PR03CA0009.namprd03.prod.outlook.com (2603:10b6:806:20::14) To PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PA4PR04MB9366:EE_|AM9PR04MB8145:EE_ X-MS-Office365-Filtering-Correlation-Id: f41723e9-2cfb-463c-7460-08de5e97dee1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|19092799006|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?SWpIYk03cXZtTktxYkVxMVhTelNib2phNjBvZUN5Z0wxN0ZLYyt2RDhONmpV?= =?utf-8?B?cjB3ajVEcXYrUkUrUzVQMzd6aXNONk1mcGR2NFVoSXQrcGJnclFGd1N2L0Fn?= =?utf-8?B?eEdlMGJwdmM5cE9jNDY5dlVnSlJ4OWgyZFJVZlhJK1QyNkcvSFU3Y1FIV0NJ?= =?utf-8?B?c09sUkRMdmVxdFVvZjRtN3oycE5PYnkzK3pGektOTFZQdUtpU0dCeGxQMzRv?= =?utf-8?B?TWwzdCtOblZHQnhXRDl2MGZBNlRGTHZZdXFCeCtRcHh5UkIxWUFPV3lmTldC?= =?utf-8?B?YVdXcklHZzVIUkM5Y3NTbjVScmNVWUowWHZOTHIyK1FwSndLTG1GNEQ0Wll3?= =?utf-8?B?QlJOUzFUS2YrcmwyNmdhSkxXR3VBbGpCNmRId0EvblVFQStwdytmMDJCWGpH?= =?utf-8?B?Z3RSTGFFT2RTTU4rd2VaT2FUNVZRVC9McWhtMlVzcFV1aUQyYzgyakFjU3pP?= =?utf-8?B?bGVTTkRDSThQaDl2dXY5dHlQY1JPZkQ1R3QzYmlaNk15aC9xY0hwd0lnVitw?= =?utf-8?B?NGNKL2F4VkpOU0hrbm9qdlZkUmpURWdQR2RFbjNLNjErUVc0aVY3dkVLMGU2?= =?utf-8?B?UEl0Z1RWeXk3OWxCRllqbERxNlV5ZVQvZElETkVhVVY1THppZFFtZmtLOXFT?= =?utf-8?B?OUhQTEd3cEo0NFMvMkswOXFUSjVkbzc4K2hRbnc5ZitmbmVNVUorYTM2YlpQ?= =?utf-8?B?QndHZmg1Y3BrQng4RXF6cUdJYzczZXcwWC9pUi92QzNrOThDaloxUWlYZmVz?= =?utf-8?B?R2RBWHNMa2ZTcFZtV3NvdHMxUGNwamE3MUMzdEYzVzRLNjE0Z0UrdjFUcFZG?= =?utf-8?B?V0tOYXJBNEVpZXNRaWJnVDR4Ny9xOVozYUJ6QWdjbnN2QUUxcVc5a0lwRnVI?= =?utf-8?B?ZWlNd1EzeDYyTTltMGpDLzRvNElqYXk1S3dlV2V1dHhBdmxFOXg2THpFTno3?= =?utf-8?B?dHBqUFlDNEFhNXBxMzJCc3BmMXJENk43QWd6ZlpLZWVIQytzUVBCVzQ3RWIw?= =?utf-8?B?VkVuV2FQblBvdzBtSEx1SXhWZCtVQlExbEJhcG9YcDVtNnRUUE1Ha1VFUnFP?= =?utf-8?B?U2RCS1grTjg0RUZBeUxRc1I1NitFbnljRExubXJvTWd3VXFRR0JDaCt3QWJa?= =?utf-8?B?L0tMMFk4WGRKRlp1bmFna2VUWSsrSTUrNkUxUUJpRzlUV0dGUWtSMXptQ0Fn?= =?utf-8?B?bzd3cTVoVm9tQ2k0RFo0SzJFVWNidG1TRlFKN2cyamptRW81YUdnbG94Nk9N?= =?utf-8?B?N2xpNk1oTGRmMmhYRXJIZnA5WVgwYWZTUCt0dEQ1VW9ZRjAyYndOTmRYL0Nj?= =?utf-8?B?cDI5WG1COC9tdHVLRjhMbWN6NXFFbzhwWG40MC9TdDJjbnhFcTZMWHNTUXZJ?= =?utf-8?B?UUljSnorcjdEZWRSQkxKTEwvVnZuTjc5aUxnRW1hUzBQeDI0b3dqZUpQUFkx?= =?utf-8?B?eHZocjdiTHVSVndDWVhmTHNrbjBKeURzSHpXdkZsRzhOdW9sSWt0VnAweUNI?= =?utf-8?B?cXZ4VnNjdFpaT0RYaFUvRFRqRkYvNzJvKzVrdTl3Tk82UitHMENWbUlVRXFn?= =?utf-8?B?bkZBT3ppc1o2Vk0rMXo1MGw2VDVaVDNzZUZDcVZSaC84RTF0c1NLYzIxbTFE?= =?utf-8?B?ZHNvL2dMYWRiK0Q1M2NhUjU1UW1mMkF2VGZFT2lJUlpXTUxNZGNibmhKMER2?= =?utf-8?B?WnhGZDlGSjJLakFIMEFNc3BvSHVEOUlRMHZBWEEvcVUvc2thQWxkVHlSTU1Z?= =?utf-8?B?VDJJODVSRktLaVFmS1FaVk44ZkFpTHFXQllJeXhYUDhZWG5XZkZIVVNuc2Z3?= =?utf-8?B?U0h2YWlTa0p6WlBRcXBRRFlHWTFISjU5N2pwckxBWjBzK2VOYTIxUW0yTUxB?= =?utf-8?B?SVFHeWVrenhGaGRHUVV5ZUg3bWNDMVJjN0tHTlg0SkpRaXVQc2l4dU1tTDl3?= =?utf-8?B?QTRmNmdTMldndW9mWnpoeC9PdzR0NHVqellidXpzZG9VZXBwYnMrUGp1ZCth?= =?utf-8?B?MktlNWF1K3lHdG5CMlBjcFJRTmpoZ29ERkFjdWRBZlpVak85amUvOWlkZWJL?= =?utf-8?B?Q1c1bXY1T1JzWis0TzYrUXhqYUFzb2FhY3J4RHZGa1EvL1pvQUJOSjhXSlJU?= =?utf-8?B?SHlFMGxJd1NFZzIvVHUvclNOUzExQ2k2QjIwNDIzc0g5d2kvcmd3UHNoTGZP?= =?utf-8?Q?ZVhILL7no1wFDL37Gu3UHTk=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR04MB9366.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(19092799006)(376014)(52116014)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?S3pjU25RL1dRQy9uSk9mMEdFQm0xMXpHcFZqTENBQnZ0VWIrWVcxcU42eEVk?= =?utf-8?B?blZqNlh3dkwyd2ZPUFdKSkNKdys4NzlqeU8zbHRoQmttTmVGYWtNRk9scFhj?= =?utf-8?B?VG5hMCtWbUpEazZoVzV2djdjM3RUcXBkY3ZSZ20zQjFCZ0JSOTBQNWNLUDMr?= =?utf-8?B?ek82UFRJc25MWStsRmJ3bUNMQ1F4akgyWjF6Z3VFTXI3SDZpbEFvTjIvSkhK?= =?utf-8?B?cDQyZDBSWGFnZFlrUElKd2JreCt3MDlaQy9VWXcwZzNzRndZY0pFbnhJWjlo?= =?utf-8?B?QTR5d0k5TGE5SXROVlZZN0l1Ynl5RjRQaENxSGdTaU4xYUg3Yy93L2lrbERO?= =?utf-8?B?dmhlbm10RS9NMTFTRGVPQVgzdkpkeGFFZFF3RDdzSEc4b3gwd3BkOE1QUDNw?= =?utf-8?B?TzJkZlBhc3FDQmJvR2l2NGVlSE91OWZSL0sySTAzMmZ2Wkp0ZDVtQzg2RDZZ?= =?utf-8?B?ZWdLWDZReWU4OWFFWHR5RU9HeTJKY3VlQlpLYkRQVHY0WWdpN1RlemphV3Fi?= =?utf-8?B?OHVzMW8zelpNUmduZFVieCtQZzljQkJRbDNBWjhhMlljakhyVUdPSkMzMXB3?= =?utf-8?B?d1ZseHNCUXN5S3ozMUI5OFQxbGNvRlo1aWk5VkVpaFF2SGhFOUFXL0NRSXd0?= =?utf-8?B?aG5lTU00dWIvWmlCeVg2aSs4N3Y2L05DVk1JWmU4YnlWN2h4N3dNWDNBQWN4?= =?utf-8?B?MjVNQjNMOU12bjdBanpXSFJGNVFwY2EyampmQ1FtV1dLQWxkMXpqMEFtQ3p3?= =?utf-8?B?aUc2ekIvNk5zN2EzZ3hURVAxYmFyK0t6VUgvTlZOdnVNZEZiZlN5TlpjR0pl?= =?utf-8?B?VFZacG5PVTlpWGplYWJmMmtKTkdXWktnTE5KdHl1eEUwbVlSeTlpZmh1UUw0?= =?utf-8?B?OUwvMVhrS09IdHdkdS9VZ3kxTnFWeG9oNWxEWFZ3Qldpem1nYXpLVVdsNjBK?= =?utf-8?B?RmJGQ1AxeE80Y3BXRDlPOHVCbGR5VWpqWktMcG5ENzM4ZUFuOTdlOEZHbVZ1?= =?utf-8?B?TmxBN1d5alFwTFQvMFdqeG82UFBIRUtLRWVlOHZrSVp5Z3NjVU9FTU5JNFFr?= =?utf-8?B?U2VLQTRWZ1VmYlNnS1UrWHIrWHBSdWRYTjNhUTc4ei81V3p2TUVlNWpadHk2?= =?utf-8?B?amZlaWRBS2RVTHlBT3dwNkVXRXRMVnc5UW5nU1RkQjZhYzR3OXNiNFpXakRY?= =?utf-8?B?L1pHSDRUOUdOa1hJb0VxdWU3VlhXdHJDY3VZeVJvY0x5ZG9YM2NCK0xpcmJr?= =?utf-8?B?RnRVVFJ6ZFoxY0tnUURGZHB5ODY1aTJSR3dNY00vQlkwUlNsWTRQQU5taEI4?= =?utf-8?B?aE1KVXpWakw1VGpYVkxhQUVMWkZGcGhWYkRKb3loRGxlaXh1Mk5yektjdWJu?= =?utf-8?B?eitwcDQ4SFJoN0RRRSt6OUUzZ2tYYnJ6WDl4RnpoN3FMamFZSEJvK1h2SmFy?= =?utf-8?B?S3kyS3lod3U0TW9nL3dMYUo0cGQrYjhOclVhcmNtcG11cXFuMy9hVXNpL3ZE?= =?utf-8?B?M2pYS1NpcDdoR3ZtSGFCeDdIS1huTy9IUk9MbkhUL2JtRWdFZmNvUjBMby9x?= =?utf-8?B?STdBZ0FEb0R6dmt4N3I0TWlWNXYycnNYT2VFM0dESmhhK05RRlUwOThuRkZx?= =?utf-8?B?NGx4cCs2QU4raHhPeGlTMFZJM1AzZ29MRFlUdllBUEZRTmRZNjlIRUFBN0k1?= =?utf-8?B?VXozYWNoWTBaSWsvY25tb1pkWTBzeGNFeTRCV0xuY2YwU3RBdXR6SEx3MFdo?= =?utf-8?B?SmUrN2RqcktHK1d0bUpUMFcra2Z5T296dGJEQ2VBVkUvSU8zTWN1S2tkZnNa?= =?utf-8?B?aTZuUndJYWw3bW9wa0gzTDltREkyUzNYZGh0ME90TlBLNkVJbFE4bnFBM0t2?= =?utf-8?B?TFJuUXVvSTJZRVloaFgwQS9QWEJ0M0J1SnVLOERvbzhITDUrR05NcDFId25i?= =?utf-8?B?OUswUHJ1SXlrN0hDMVJPdFVwSFFVNW9EbGM5cDUvY3N2MnJyUnpZM3QxTFNt?= =?utf-8?B?b1hVS1ViS3d0U0o2K2ptYXdNc20vb3Evc1RXeGowT2FnWjlpc1NoM21Kc3p2?= =?utf-8?B?aFplVUFXYUtRS0dSak83ZmppSnhTdHpXWm9PenNNakhSSkxaa21TRzZ5V0Vj?= =?utf-8?B?Uzhmb3Q4cEk3bDU3c1hrakh1MWZ1MUVOQXZxNTR1T1JNcEZLdy9jc09rb0J3?= =?utf-8?B?YW5EVUx0VUVqdWJMUVQwRXgxVkhIMElwTjlUdlBZaVBiQTVicWw2Y29MU1Fj?= =?utf-8?B?VEZDUGpyL2Fwdk9DY3JzN2V2ZmUwSDJ5UW41bEx3b3paZkNNYXR4SDdCaGJC?= =?utf-8?B?NXFoMlNOTmprLzNUUG5xaHV6M2FoaXB2bEl3UDMranB6bEhTN0FIQT09?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: f41723e9-2cfb-463c-7460-08de5e97dee1 X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9366.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jan 2026 18:05:50.6895 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 4Dq6gfXBc9XfYKabCSxboIewPRewyHI038Sjiz//CA95ZpLcjNV6C8bY7DR4bQlSNC7H5hjZmGrypkuIAmPamg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8145 Introduce common dma_ll_desc and dma_linklist_item structures for link-list=E2=80=93based DMA controllers. This lays the groundwork for addin= g more shared APIs to a common DMA link-list library and reduces duplication across drivers. Signed-off-by: Frank Li --- drivers/dma/virt-dma.h | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/drivers/dma/virt-dma.h b/drivers/dma/virt-dma.h index 081eb910d0b0cd2b60232736587c698fff787cb9..82f3f8244f6eca036a027c9a4c9= 339fcb87e8d2c 100644 --- a/drivers/dma/virt-dma.h +++ b/drivers/dma/virt-dma.h @@ -19,11 +19,32 @@ struct virt_dma_desc { struct list_head node; }; =20 +struct dma_linklist_item { + dma_addr_t paddr; + void *vaddr; +}; + +/* + * Must put to last one if need extend it + * struct vendor_dma_ll_desc { + * ... + * struct dma_ll_desc ldesc; + * } + */ +struct dma_ll_desc { + struct virt_dma_desc vdesc; + bool iscyclic; + enum dma_transfer_direction dir; + u32 n_its; + struct dma_linklist_item its[]; +}; + struct dma_linklist_ops { int (*stop)(struct dma_chan *chan); }; =20 struct dma_linklist { + struct dma_pool *pool; const struct dma_linklist_ops *ops; }; =20 @@ -247,6 +268,11 @@ static inline void vchan_synchronize(struct virt_dma_c= han *vc) } =20 #if IS_ENABLED(CONFIG_DMA_LINKLIST) +static inline struct dma_ll_desc *to_dma_ll_desc(struct virt_dma_desc *vde= sc) +{ + return container_of(vdesc, struct dma_ll_desc, vdesc); +} + int vchan_dma_ll_init(struct virt_dma_chan *vc, const struct dma_linklist_ops *ops, size_t size, size_t align, size_t boundary); --=20 2.34.1 From nobody Sun Feb 8 13:48:19 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013040.outbound.protection.outlook.com [52.101.83.40]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F0C0C374724; Wed, 28 Jan 2026 18:05:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.40 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769623560; cv=fail; b=n7JvrHppdTKMTLzKzmENGcPgvk4i8S7tvpxtmXgZpG7An+aWM9NeDLD/w657Wj05dAxH7Qff2IFjn66+n3DY+4QzY5nj9VEPUlvbjLp0HHBqz2t11lfUzBDEvmkxGoP+bPqO/QcA2RAgdaxxjE9exWV6GEBz/zx3bGHwD6UMA4M= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769623560; c=relaxed/simple; bh=WhdTJgFQHj+jxVuEtyVaRjoQ6J3j6gGSO7KwHyxGxQs=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=B1/hFGK4hc6ljhfXBKnbxaWuWmwSAVgCA9kw+Xw4V9b2ci5Gz4HGQdSCGRLLH6nEOyYw76Lfjr1T27otx92v0mTkh38DWHsTD+DvYq0zeLnueGL/wzT/nssbCROWvFPpRh8uYgUKTnLwHiwzTIL4Tc5TM12Yoanm+2wZMtD+P+E= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=RYO0Dxvy; arc=fail smtp.client-ip=52.101.83.40 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="RYO0Dxvy" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gQOz/yLyI4CzDdThu5zGudS3JqO2o5vnMCPdlzTvEg0WRRPjTzRgY6RX9x/rI8UolfYeipPP/pkv6Q7FR1LXsu9DaRKT14ahGH0AC4T09l0MqfsYFG7XM1hailzFzW6OjYPTS+6FnsnyAsh2fMmdq1OW36ff18KthXYCRi0CzvKlz3mXZg0DH970jrJ32aWCcEmXii5D5tpZNUJ/ACJpfs6/O/8MsKwh32P2bphuog07cLSkNL3EKn76ILZhrCWzYmndTMuOj5NBeHsMeyE7+9hnvgFwFDmh3HJlJddxjZgvNYpPhWdwDiku9GzIB3HY6G8/zzdPVHpluUslsgzgrg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=+fXerTDKLPRQLn0aiW+DfHVPXOWdBhmmpcl5Xq4LiSg=; b=mzI2+jLW8vaDuj5g43wzwOBJN65lHSPR5rK2RGeheHbSf0zsvUVK9ymkfEsWjH+cESmh1phKkSwVDAHGubGuFNTnwEozJDkkV5qkXkig7KuStcMjFhjBivjevLW0rnIFNKlF2B89WErnFk+jC15PYvoxxNlxKItytxJthRVAq34VpQrZ76YgKcSjfzKkoR33fkGkTA029cpoqHBjOwFSoww4/99Yc+DnxKfxlwucWVwArBk4m/K6PrRC3AuRZakwuQtoQ6YZ1wRXwQRUXhbrI4oXRRy0Yfiw0+unshjN/ANOd8KVQ824cjV54SH9T7PoHOUdmatqm7bv1cKiyMBR9w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+fXerTDKLPRQLn0aiW+DfHVPXOWdBhmmpcl5Xq4LiSg=; b=RYO0Dxvy0IBFrNAUyEN55YNuOjd86ffP7WBVUl4Ep3ZPY6NRKgNvqJkTdEoHDxmwk7eu5Sa+uNGuv9JV1b01c+v5DcsQDfPuVuu5tijWRnGTUJy7UbTXCxd4fa82Lt6Sgg1QXJW72NgLsHecHK+6dUOBf4dAR5f1Euithf4pA4ADZ9z5DDbeoW0p23x8a11x/Iu7HC65cr3zIP7gU6zepG4TpGxD31QX7dsOF1RCTnCQM1iyRg9pRiN2mUWMemcyjc6NMedkQPLHrV/qJL+3PXdpJL6rnvHdCJUYjoKabmQSfttFeQEtcD3dVxoa6erwqoUg7Hg5PxdyNAIWV0YEow== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) by AM9PR04MB8145.eurprd04.prod.outlook.com (2603:10a6:20b:3e1::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.8; Wed, 28 Jan 2026 18:05:52 +0000 Received: from PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588]) by PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588%6]) with mapi id 15.20.9520.005; Wed, 28 Jan 2026 18:05:52 +0000 From: Frank Li Date: Wed, 28 Jan 2026 13:05:22 -0500 Subject: [PATCH RFC 03/12] dmaengine: fsl-edma: Remove redundant echan from struct fsl_edma_desc Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260128-dma_ll_comlib-v1-3-1b1fa2c671f9@nxp.com> References: <20260128-dma_ll_comlib-v1-0-1b1fa2c671f9@nxp.com> In-Reply-To: <20260128-dma_ll_comlib-v1-0-1b1fa2c671f9@nxp.com> To: Vinod Koul Cc: linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org, imx@lists.linux.dev, joy.zou@nxp.com, Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1769623545; l=1738; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=WhdTJgFQHj+jxVuEtyVaRjoQ6J3j6gGSO7KwHyxGxQs=; b=LBRGxaifzfOxg8t/Zzu0qe02J/8T3f4q+eENTQ6TFaOtpFYwuw8kIY80b+Eo0kwen9K0lWex9 VJSdUbBgVWmA5Rp4QcO+Ny1m6Y+dkOwV+ohdEZxZ53uoKvahHF+UHyA X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: SA9PR03CA0009.namprd03.prod.outlook.com (2603:10b6:806:20::14) To PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PA4PR04MB9366:EE_|AM9PR04MB8145:EE_ X-MS-Office365-Filtering-Correlation-Id: c4f862c5-cdbe-48a1-d595-08de5e97dfbb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|19092799006|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?SGd2VUdVZWtuRXZic0Y4QnU5R1padkFsSkhuWkdpVkFwekVYQXBFV3JxNHEy?= =?utf-8?B?anVwdXFCVTZlK3lWcUtlYnlDZlZBNUJkdk5VbTBadHBlR0RtK0MvbXkwTlo0?= =?utf-8?B?RytlOTFmQzUrN1dJS0VyazhWWTVmbmJJZXlXMjY4bWNSN1NFbHNiM0Q4a1ow?= =?utf-8?B?dUt0clJ2cEQrb2V3aHZ0V21hVkpBYmFDWlkrc21wUStWQlg0eGIyZ3o1aC9L?= =?utf-8?B?OUZod0Z1OHgxK3UySUE0QkZDMjZFUXFJVXZwT2F5d1lyR2RBUG5va0FrMU9p?= =?utf-8?B?VnFDemNrMFhybVQwWnNqNElEUnF6UGo0U1hEZk5kMGNzdVFQNDhrL2orUFRD?= =?utf-8?B?VDZpRWt0VTJDeG45NVhXTjE4dURONWVBbzNRbnIzM1RJbUFORi9iWVJuMFV4?= =?utf-8?B?TG1td1FpbFJQdE1OTStEWmFVL3RLV2xhZkdNOVFORzJwbzZteUtaSzZuWjNC?= =?utf-8?B?SEltRTBxTkc1TEl2SnpxbGpjTURqTTlIVytLa1Vha0llTXJXTW9ZWTE0Yzd3?= =?utf-8?B?RGVUZ1hLTUUxbWZnR0pyeUo0cWtQQnFITlRlNFE0Sy8zTGp0ZWgvaktPOGRZ?= =?utf-8?B?K3JaV2twcUVRZExDWksyZlAxLzVyOWQ0ZFN4T3hOMzRIL3ZiQ1Q0SHV2NkNa?= =?utf-8?B?aCtyWlFyNzRzVnV6VDI4OFRvamtDUkNzcktRTFRHOHQrTjY0TEt4aExYa3ZT?= =?utf-8?B?dXRWalBFKy83VlJFclFDc1Vwbi9xazFCNGtUUDBVUExFeGd2Yk8ybmhWUkdC?= =?utf-8?B?OTRwdE1Uc3FBR3F4eU1JSjRtRlhUajBvdlViNjMrNE5vWVQvOEdSNGppY05Q?= =?utf-8?B?eW1FOTFNT2N1MDM1WUp6bzBuSVZqRUpNTEVhL0ZydlRnWkpDdzQyTDdjZHNH?= =?utf-8?B?RFAwMnVGY0swcktxNXFVaTVIeDBLNjlLc3h1UFJNaENuUXE2RXNoVzB5UTVm?= =?utf-8?B?Vzdwb0tBYnlXV3ExU3NqSlRjVjhFM0FnNkdpeUYrNXJTNTlacHY4NkNyR3l3?= =?utf-8?B?eTB6cWllVXdYdG54RGIxYWNQeEdseW5NRTBGZkFFMDd5ZjIydjU4SlJObVFF?= =?utf-8?B?UkVHSWpDamJoeG9vNmpHbkZVL2NBajlrQnBpVkk5Q3lTb3ZmQ21OclZ6YmNZ?= =?utf-8?B?UzhjV0hBSFdqUWRqQUtuNFNWVEpVTld4Wi9DRVdQOFQ3TWJmRUhjSzBXVmR4?= =?utf-8?B?Vm9DaGcyQ3hTUllsM1d3N2NydUFIZ1lIbFFEbDBnMjM5dFE3aHZXZC9tS0ZE?= =?utf-8?B?ZWR0cjc2eFVHRWROaW9kV3RvVWptTWY4VFRwdFRSM2syTUo5ZG1VZFdFZEp6?= =?utf-8?B?REZ3eGxQRzh2Znd5QWxPUEU3UVRIVHF6RGROVkFCSnZQN2diZU1pZnBWNW9Y?= =?utf-8?B?U04vQ0VCNUpUZEhSZ1VDL3BGcTJCazQ2TjhSWU9Ta1J4NlhXc2lTSnVGRmtL?= =?utf-8?B?ZkU4ZEtKY3F5Q3Z5TVYyVnIySnFoZ1BRRWtzZDNkMzVSemd4NDBlaEQydkVI?= =?utf-8?B?V0JPMVUyUHIza3QxNWI4NVJzdXJHclVscmF2Q0tneHplbC9ub3pOaStYNWNp?= =?utf-8?B?SkFNZTYwYmVKWHZlWWI2TWlDT2pBbmppR2ZNVytwS3JBazAveUwrbEpzdnJY?= =?utf-8?B?VHZ1RUdFc09ucHZGM1dqMTdveGtpMU9aRkFtbXNIblBJL1VsQXZrZVZqclRF?= =?utf-8?B?alAzUmpCUHdpNGFldGFyd3l5b0pDK20wVFlFeE81ajRaMldDYzBrbFFPMTJO?= =?utf-8?B?R2dEcnhCOVdtWWREdFN1MkdyS3I2ei93SEVtVnRaZEVvQ0k0Q0NxLytnY3lp?= =?utf-8?B?aFBwaEl3U2o5dEFZS1pzVHBySXh6UVA5QUZFeE9FRnFBdHVJcXJiNDYvMFhQ?= =?utf-8?B?VThvd3NyL0xvTFVId1pjbGZpZlRpS0xQazhaN2xVNDRUdDhheUFkWnNjR3dV?= =?utf-8?B?Z25QY1ZKalJnZjgvTXZPTUUzRklDb2ZlcGJwUzhJck9IWkt6dVAvcHdkRi9y?= =?utf-8?B?NjNwZXZZS1AvcFd4STBYaWhGcnJpUFVvS2NEbzVpN1p4cHdqQ3lHazNBcUdT?= =?utf-8?B?OXhVd3FhMEJ0bE51elQwQWg1ejl5bXQwZitrbkp4eVV6V3RmbFg3Z3VkTDc3?= =?utf-8?B?MERlNkEzZlBaZmxkT0ZmOUY4TGJaTzNkajhBbVNvYVRGKytNdnRZTElTUU5M?= =?utf-8?Q?O3Ynlz37QbrR7U0cJ5q+6YE=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR04MB9366.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(19092799006)(376014)(52116014)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?NHo3TkMwVHVFT0FETXd6UVh5d2xkaE8vak5uRDFSaG51UHFYZXB1R2VUaHVw?= =?utf-8?B?WFNzSEI4WWhsTFdYTXhNcFJsaUdCVUlZMWx0UElSRnNla1Q1Zm10blRYOEl1?= =?utf-8?B?UmFqODV3NnhTcTJaQWlzTTIxUnN5SDVHODZLZzd5QkZxV1Frd0RvK0RWbmtI?= =?utf-8?B?R0o4QWdlZ0NnUURSUkdlZ3JLamVHQ3V5QnpCMjZVYzFLNHdnVER6Umw2V2RY?= =?utf-8?B?TGJqaUtUcXdMOXd4czZkL1dxMHJtY2lQUXBDVDlUY0hXR2g5ZkhLZTZaVmUr?= =?utf-8?B?ZjVwR2svUlFvUU1pYVd5cGU3aTk0NWI1UmYxWnhZMDFwWDN4VmZhV0F5eU1l?= =?utf-8?B?NVU3TkZCVDRnWnFPVk1TbjlsWGg3OWdrQzh0UDk2aXRnS3VKdWk2eEFEY2lT?= =?utf-8?B?ME5GSXEyYUFnMW9hSTBFMDE4M0pJeVRCZ1YvUUZzb1VaL3JNbHlHRFpFMzBG?= =?utf-8?B?N2ZGUHBsQUdnSlZrcmR2a1R6OVh3MFlpZXVVbEpnN3E1alRvRWxSK2VSckJH?= =?utf-8?B?bUptZDBabGhCMml5bWFoTkd0eFQyYjRQM1dJWm5KQ05XN2lSM0NpVi95Zk9v?= =?utf-8?B?eW8vVEVpUmNOcnBoeTdmV0ZKWjVuQWgwbVBFSFhndHAzZkt6WUhYMVR0TFpa?= =?utf-8?B?KzJhVlEyTGwvMG82SGQyWnY4MWxuTlFTWGlTd1ZqbmpvTENRSCswM1B4dXla?= =?utf-8?B?NzJpMTNVaDJlZFZCOXFENHZkb3YvZVo5OGFtQzQ4NDBpbWgyWGd1TEl6bzBw?= =?utf-8?B?Nnl3VkNmQS9hM3dHcjN6WlZHL3FNMG04aVJmNjRLU0VZMlcrdjNYeHVKWFV0?= =?utf-8?B?S2RES2k4WlpnSFRWbVFXZnk5aHhibHZONVNmaStyd0NmM09qUUdBaDdqNlIy?= =?utf-8?B?OWUxNmNZV3FtMy9KZlZ3WE9oNW9iRDRRTVhCQkRHakVZVGl6a2lDRzBUeFVs?= =?utf-8?B?dWQ4MlVRSjY3WnlyeE4wdEJsaC9KZmlzcXdMb2pmR3ZyWDd1ZENvTndWVWVP?= =?utf-8?B?Q2liOWVpbFFTaGpRYTRCY2RnS3Z0b3BlejRSMkR4MGNlMVo0WlduSW9DMkUx?= =?utf-8?B?aVQ0U21vUFRHQkhreE5zYVBaQTQzS3BlZWRtUTBrL3dtdFhjRjd2RlJYazV1?= =?utf-8?B?RkErYU5Cd1VkU2VISGFKbnorL0dDVlVpTTd0WDFJVTM0a2pBaDZDKzRqcmU1?= =?utf-8?B?QlFvdEpSRGRzRjBqQlpQVXI2ZUI1ZUIxemc4c3NSWTlpUk1zR2RqaUk4M0ph?= =?utf-8?B?b3VDOXpqR2kxRHArSGRlTG1Lck95VGdNbXpNTFA3L09WR0IraHRJaDZhUk9B?= =?utf-8?B?cjB3MDNodERnOGlBRk1TWkJSYisvUlpNQjVOc2NESlJiTEFEVE9PbEcwWjJ5?= =?utf-8?B?MHFzNE5LSzFwY1FPNWZpcHFkWi9nckloREpwaEg4eXRsQldZTmNSa3FzMWVP?= =?utf-8?B?bjROTnpwZW9jT0RtOWpabEdqMGNXYk9hc1ZITytDSmMvODVHY0xvNjFDaTJ0?= =?utf-8?B?UFlhTEpTWi9EVENIWXNOd29FYzkwYUUyWURqWVFlOFRpVzZFQlJteElKSmdY?= =?utf-8?B?NERmOFE4aVVyYUtVWCtCbVhvdzZaOVVEU2s0RTVzcjNKeW5QVWdvVTVXS244?= =?utf-8?B?TnNmSjZZQ05HVmk1aG9WZ1dEc0dMRURvai9nak5SNWNvSC8vR2ZkZktWanZ5?= =?utf-8?B?TWlYUnpEUDlRWWFVOFM3b0VtZ2N4U3ZXRDl5ZVVxQzV0QVhuZlFVZU5kUG5G?= =?utf-8?B?RFMyTlI1eE9JNTVRVHplbzFmZjBaN1BrcXRPaDZpQVBkVkxaWXVIMDdDbVND?= =?utf-8?B?aGZYRVJGcEpvWU82aUVSTThzL3h1ODVYQjYyZUZ6N084WktaT1hTNVdLVzlS?= =?utf-8?B?a2hMVFdWZzNXZ01WQXNpSWZMbGVNUGZKcmtpaEFEdHBlaHVMa1kzRDZoRDRq?= =?utf-8?B?M1NWZk1xaHc4MG5OWnlpOHFQOHBqMm5BbkdLMDI1bktxcDU3ejN6bGpZUExK?= =?utf-8?B?T200M0ttbTg3R0dGVUQ0M2tOeDhFcEJuRUZHcU42R0dEN2l6WGZ1ZmVLdVFC?= =?utf-8?B?TnkralZQN0daTEpYcVJUVEhHb3JISVVwWDU0aGJXR2E5L0tPRlhBWkx4ZG43?= =?utf-8?B?akROekxqZy8vNHlGbVhtZVRIVjl0d0ZuSnRhOU9CV2ZEVTZycjJHQXVMb1pO?= =?utf-8?B?eXJjLzdPOWJzOEZiaFo3clJ4b2FOMG5kM2gvN3BsUWhhbi9yYW80QW1GV2R1?= =?utf-8?B?aU1RU1pFSklNOTlLTE85Vmc3eWJwVWZWbjdsTElOdFRjWk1CU1pmY1hhYzUx?= =?utf-8?B?aURIWmdsakhLZkRwcGpNV09TVUE3RXZYeWo0K0ZaNUhFa09pSXFJZz09?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: c4f862c5-cdbe-48a1-d595-08de5e97dfbb X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9366.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jan 2026 18:05:52.0862 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ilZysiEdGYf864uQ6hyrxN2WKWzKBhbAq/PfALK+p1q9u3r5+EzHGBO+Ya5N5uaCvo0rOL9klzsXVA++FfFGDg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8145 The echan pointer can be obtained from the dma_async_tx_descriptor embedded in struct virt_dma_desc. So remove echan from struct fsl_edma_desc. Signed-off-by: Frank Li --- drivers/dma/fsl-edma-common.c | 4 ++-- drivers/dma/fsl-edma-common.h | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/dma/fsl-edma-common.c b/drivers/dma/fsl-edma-common.c index 396ff6dfa99a150f9ce34effd64534e3d8e8576b..61387c4edc910c8a806cc2c6f0f= ee2e690424bac 100644 --- a/drivers/dma/fsl-edma-common.c +++ b/drivers/dma/fsl-edma-common.c @@ -228,7 +228,8 @@ void fsl_edma_free_desc(struct virt_dma_desc *vdesc) =20 fsl_desc =3D to_fsl_edma_desc(vdesc); for (i =3D 0; i < fsl_desc->n_tcds; i++) - dma_pool_free(fsl_desc->echan->tcd_pool, fsl_desc->tcd[i].vtcd, + dma_pool_free(to_fsl_edma_chan(vdesc->tx.chan)->tcd_pool, + fsl_desc->tcd[i].vtcd, fsl_desc->tcd[i].ptcd); kfree(fsl_desc); } @@ -555,7 +556,6 @@ static struct fsl_edma_desc *fsl_edma_alloc_desc(struct= fsl_edma_chan *fsl_chan, if (!fsl_desc) return NULL; =20 - fsl_desc->echan =3D fsl_chan; fsl_desc->n_tcds =3D sg_len; for (i =3D 0; i < sg_len; i++) { fsl_desc->tcd[i].vtcd =3D dma_pool_alloc(fsl_chan->tcd_pool, diff --git a/drivers/dma/fsl-edma-common.h b/drivers/dma/fsl-edma-common.h index 8e45770a0d3960ee34361fe5884a169de64e14a7..a0d83ad783f7a53caab93d280c6= e40f63b8e9e5c 100644 --- a/drivers/dma/fsl-edma-common.h +++ b/drivers/dma/fsl-edma-common.h @@ -196,7 +196,6 @@ struct fsl_edma_chan { =20 struct fsl_edma_desc { struct virt_dma_desc vdesc; - struct fsl_edma_chan *echan; bool iscyclic; enum dma_transfer_direction dirn; unsigned int n_tcds; --=20 2.34.1 From nobody Sun Feb 8 13:48:19 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013040.outbound.protection.outlook.com [52.101.83.40]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 032FC374192; Wed, 28 Jan 2026 18:06:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.40 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769623563; cv=fail; b=jv7wxeoGhGD9TUIsOXYHbWG7eSPAmGn1A0/avS8SxTteQo0Jvsb+T+vulSRfbX0iJUUl+nyFJ90E+ial2WCAachlmK/sKzpztfSiAObI56JQ37AALKZ2fYI4AnWcXEdnxkZZ4e7/R19rPqhQlVgnZchrwf5vwTbF2GjfuNVmuvY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769623563; c=relaxed/simple; bh=ceG5CMSbcj29zpEeQr+qYgnT7Bsn3bmbIjY76x0dur4=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=M4FKWDuEY1IYH9xHZGwdTf7oIHjUIrfuEi19fNYekaGLwdOde66goWJAbrM33V+XP2Be200mCSmJrAw2XgIubpyQCTo2Wu3yu+z6AbKl4I86fsA0Yzas6sBsTrcA1DfgM3tlGauEGme/4k4I5QHK2DH9zExlqIJAbxkpUo/kVZ0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=CYYOHBvD; arc=fail smtp.client-ip=52.101.83.40 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="CYYOHBvD" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Gc1Z5nxwQiecgIkUy/Pddj+A+HjeRtGOsbuKLm9MQutGaFKOO1wpXqA0jthGsRbIFpeQoRibyN8OSOyfHpV8/hMyLHFrFsR/GanKvkTXQ16AfaHAwNEYXNk9kIPnostmxRlEdBP0nIEs116d62IogCXl3yr/eUe/52zoGZn0tq+o4NHI/bEOQ8LFumVstqjfpPLJiNuMInhJiHxadj46xT/ejHr7UHFlNNokJxKDe7YFzt2fQFjKIuFOjoN093KvkYVhgHb/MqnCq4dhvE2k0D2YSaZcA3ux96emUxpF8hUS7zG8ZIYOY5m78ImOA6FkAMJ6D9x7aUvgMgboJLFjGQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=rDcYsJOyPt/0ZtO7BQYGHHI+YYTyC7C52SKwBudWWJA=; b=ZiFmijCwpltcMzD1fegpHNu/qnXYULWGPJdQqPe2xAJxpkjFB5t236H08Cqw4Fr2vfABLT0/8e8w9ec7miRAbmIpmGTcpVMQzfBAaRZIowp5y7uW5Tf/xKbHC8CtttxlNjmmhpDIBibdeBZKeVuUWE9G1Dsekzk5qq6M6Frr/vzqp6ojuFQOi3bfizBgfxqdzVc6GxoNOWWkpevdmEt3a0lF8uriDVwuqmaESGJtW9ofrjCRU/UhrnqRUwibBIIcxzLasffj/CQSbEOL4EvRypfUIrfBZCpXV+xGUQt2z5cumLx3vb9Es/CdH6Kpx6vFMWH1mNKQiEGlVf3VQ8kMpw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rDcYsJOyPt/0ZtO7BQYGHHI+YYTyC7C52SKwBudWWJA=; b=CYYOHBvD+ht8S3gex4l08vfnLxOicNJzu5QgKcW374PjFYX8D9Eglp2KNv0I3l9hk2qvm8PRbA4urF7+44ROFBrEkF0wuRrTGW+ImtlpeX6Xa39mkvNmFpDSMTkbQyUY5yYV+8tOj+OZXTGORdJufiwPFoC8HrPlCybGTct7Df6zprnJGCrJAbMGIT1VjGw0U2+CaAwFJ3gpCvWzkuuXKvqd0oe3FPKjulO9lqVzte8XvGivXTaX2o0RnbIeKbL/yQptyw5KRCN9zfwpupgQ4civ2O2OkJjK18shIKV7PjFPSuxSgBvyiFZFQGgrO3TOen4o1tBXye70IpxnrJRPQg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) by AM9PR04MB8145.eurprd04.prod.outlook.com (2603:10a6:20b:3e1::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.8; Wed, 28 Jan 2026 18:05:53 +0000 Received: from PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588]) by PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588%6]) with mapi id 15.20.9520.005; Wed, 28 Jan 2026 18:05:53 +0000 From: Frank Li Date: Wed, 28 Jan 2026 13:05:23 -0500 Subject: [PATCH RFC 04/12] dmaengine: fsl-edma: Use common dma_ll_desc in vchan Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260128-dma_ll_comlib-v1-4-1b1fa2c671f9@nxp.com> References: <20260128-dma_ll_comlib-v1-0-1b1fa2c671f9@nxp.com> In-Reply-To: <20260128-dma_ll_comlib-v1-0-1b1fa2c671f9@nxp.com> To: Vinod Koul Cc: linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org, imx@lists.linux.dev, joy.zou@nxp.com, Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1769623545; l=11897; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=ceG5CMSbcj29zpEeQr+qYgnT7Bsn3bmbIjY76x0dur4=; b=yeVsbRQi4U8sY9QEIaJ+d15CvNx9/FtzAcOAvu/K4Ff/lA2BMiYeWzJ3AE+QqSQUEUK5+Mc7f wLI4FU7AuNmDIzwtwm6PwCLjenXtrokhw4qWA75CxoJV4QxBCbHhNcA X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: SA9PR03CA0009.namprd03.prod.outlook.com (2603:10b6:806:20::14) To PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PA4PR04MB9366:EE_|AM9PR04MB8145:EE_ X-MS-Office365-Filtering-Correlation-Id: 7ea071f1-a632-47ed-3a83-08de5e97e094 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|19092799006|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?RUJKYitUbW9yWVk1OUlzQlpUVE05NC9oaDN4Y2xNd3dHYlJnbDhZK1VvM3RL?= =?utf-8?B?c1F6R05MUE1xWFpEM1RHbXNmOXBJV1lSc3B4NG9EOFdxSnV0T2cvSGpYTmhR?= =?utf-8?B?c01HanlNazBUamtwQy9OSlNDTnVqZmpZd25odENrRHd0QS9iWlhmdWlzczNS?= =?utf-8?B?UkZxcm5yVU8rR0xZQUFmd0M3Sjh2QzAwVEorRXduU1pMaitnSVUwa01VVkph?= =?utf-8?B?VG5Kd016NlJmaDNCbnhpa0lFUDdlMEdxQ0dXUjBhaTRaaGJRTjZsSGEzdzZ3?= =?utf-8?B?M00vL1d4eWdXWElvaVU3L05BdWlPMmU0ekpLWWRBOWlLZVhxMjZGK0ZnaWE0?= =?utf-8?B?RldFWG9kdkR4TmFuTU5aUnNuZnRyUU9LeFh6ZGllWVNGUldZZ3MrQ3BvTFcz?= =?utf-8?B?ZFYwVittNkcwRVh1VG1yWFpXYm9LV1NucTVRbWUwOFpVYW9zU3FCKy9ESUJm?= =?utf-8?B?T1JpZVMwY2trQldaNFo1RlhXbFhVVmJhT3Y1aFMxWUFwbWl1L3ZhcEptcXl1?= =?utf-8?B?RzdncEQzRWRCTnNxeDh2ODdpQVI3NXQwWVF3NGRISVZUbHViMXNvQ3RjSHZG?= =?utf-8?B?cVdiS2dpZHg3WGc1UWRhd1FWSDdqMk11TEp2bmQ2REVkU3hpSDhNcWtJUmpp?= =?utf-8?B?L1lwbmVPaTRSVjN6bUVEUmRTdjI1akh5UFdKUHpTKzdtRXhXUm9TQnAxamZJ?= =?utf-8?B?NTYwM3g1Qjd0VzZienFzekY2R016YlFxdHFQcmhoaUtXb1NIMjJZaDBLei9F?= =?utf-8?B?eW12YUU0a1o4ck04M2duamtieFRLOXI5aTlLdmcvZndTK2w1azZoTVUyS05U?= =?utf-8?B?SlMrekJNdjdRTzRIby9kTWtBei9KOTNZVktBTW15N1Z3MW9WVmxjMkhrWWNM?= =?utf-8?B?N0UzdzNsaVQxY3k3MmtHbTVqZHpOMXEvQzFRR2ZybVlVZHJ5Yk1LL1B3eGVx?= =?utf-8?B?M09iYW9JeXc2OTY4OExpdS9aZExYVXlqNGw0TlZZOU5XMWtBRmlHeUsyVU9m?= =?utf-8?B?dHlZUmJDWlF0OEFHaC9DbGdxNTZWQ3VhaDd4eG1oS1lnL24zam5PYWpMZHgz?= =?utf-8?B?Z25GUCszTUtETnhVV0srK2tsN2lLSkZUalBhL2RkZmJhdm5xNUpZRVFtSkVC?= =?utf-8?B?OTgzL3dDc1NMM1lldzVmc2FVM3J1VnpUS0dSTy9vM293VmNZbEtQdFVvZUxx?= =?utf-8?B?MUcvc3RES1JoNktFeHBJK2UreEdqdkRURE5LRXZtQ05FU0hDMnVrY3YxSkJI?= =?utf-8?B?K3RRRU5iOWVrcGlIRUc1TG1hM0VObzAzYnhVOFNod2ZSbC9HL3U0NlNhRWFs?= =?utf-8?B?aU85aXBOS0t5bDM5UDRSRjFib2VHWFdqczhSS2R1YmRpMjVBMVg3MG8vK0t6?= =?utf-8?B?WHVEa2QxTmd0MSt0ZmRuMVJ3KzZ2S0ZYcEQ0b0ZBTms5YkJiMjFOWmJmYW51?= =?utf-8?B?MW9rcjg1SVcxVnA4aDU1Vzdwd0p5Vk9kL1JwSmhwd0RYcTY0QWpZRVVsWUpV?= =?utf-8?B?WjZpMTJZZEVPQzNoK1hkL3doQ3h4ckJqQnlNUlRZbkU1bnB6b0VkQUFUYjR3?= =?utf-8?B?YnJlR1NSbVV4Rm9FZUFTS2kvaUNQYkR3UVFnQUFvV2NOZll1dE00S0FIWno1?= =?utf-8?B?Rm1VNlYyQjdqTkxGSlk1TjBid1BaZk5uMVpTWnZoR0JmbnZYSmNuU2J4MG1T?= =?utf-8?B?ZmZubzg4K1pyQVo1OVBTdWJZeXhDUFpnV3pnZGowaG5BZHBmODM4NnpheEpW?= =?utf-8?B?dnNKcnNML0EvSTgvV3ByeUFYRGs1TG1RRTkyK05JbWNvcGFQc0trbkw4NTZ4?= =?utf-8?B?TnNFb3hvaEoxOWRVV0owMFhCM2t1eU9hQk9uNWp4SEVxakNWWW96MlV4RlFz?= =?utf-8?B?dW02UUxmZ1hNbWcyVjRtZ215RXFWRlpMaWx3dE81Y1hYNHZGMzZzNXcrY0FZ?= =?utf-8?B?cWcrTEJzZUlSZTRvNVozclhac2ZnWlQrckM0OUdxMDFndE5oWTBzRUhXRjNx?= =?utf-8?B?UkQ3RE1wOHRTaWhrNVV2UWdLSnA5Yk5wL1ZrTGQ5UWxEZnRReXp2NWgxLzFv?= =?utf-8?B?cjFuWExUclVMdXhtdXlQTGRBTnQ4S3dSQ1B4bi90WHVlZjZZM2dVMEtNUFZM?= =?utf-8?B?SFZzVzJKNlgwSTZ5cEE2azJMOUszVi9lZWN6MExvTVY4TmhtQlc5eFhJTkNB?= =?utf-8?Q?nvn3pdRncKIMa/t4DH9tB7c=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR04MB9366.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(19092799006)(376014)(52116014)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Uy9MTW5COGlVaHpVZTNyVHI4eFBwa1VIOWQvVGZEQXp0UDUxTG9jbFBxWjg3?= =?utf-8?B?MHdaSDg4b29VMEFiRnJNcDMrdWNQd3RlQWttUHNTM2ZqbTAwLzR5V1d2R1pH?= =?utf-8?B?cGJuUEJYc3hTQlB5NWhubThEb0s5Qm1qanFGbHVLQ215cytyQ1dyUWwvYkRC?= =?utf-8?B?T3I1ZWg3ZVk3VVdBTXRDclMybU43ZnI0dUdSMGlMd1lGSitUbWZ3TE5BM000?= =?utf-8?B?N2hjS211SHNnbGsyM240bDdBeVhsRjBOcmlVQllEaXdrNVdNUWxxMzk0VG95?= =?utf-8?B?ZlBKZUtmb3pHUlliZy9uYnBVMzd0bmFZbFBWd0ZvN1JIYVUzMTFoUks4Zmhm?= =?utf-8?B?R0REaG9LTVdlaWpESEZCQmZRUHBiUSs0Y1M1MWN6VDZ0cWttN0VvM0RvVkNq?= =?utf-8?B?S3BnWWZodGx4T1RGODFDdG9XWEdTaXQ3eXRBTmNUenVYYTN4V2lKZEYrOUFN?= =?utf-8?B?L0NRRzhOazI0VzdJR2o5d3ZnUjBqbEhhMVA5bWlUVEswNUlHcTdvZ050cGZ3?= =?utf-8?B?Wm94SzltWGh2Z3Bvd01hV1B3a25PNTVOYjQ3QzFNRGNDc3RMQnBzZWNVa1Fh?= =?utf-8?B?VFloTDNiQmRSSWtMcTlGRlRpcDN3Uml4VUU3bkRYZkVZSHgvYmFDTGg4MUNI?= =?utf-8?B?OWQxalFCMWhhOVp6YlZDK2taQm9sNTZwV3ZFRmt2WFYvQ09weFZUTmJsYjlr?= =?utf-8?B?UjBYY0UyMmlJOU5hV2ZMQUJQVkNjZjM5emFCUUpFWVFldzFkaUxHTGlwZVZI?= =?utf-8?B?b05FUW15ZVpTUnhlTXJOV2k4UHAwY3l5MFRGMzNMb2dmUS9SZGZEc2pFQk9x?= =?utf-8?B?emJHcnBDbFE1eFNZRmFOQ2xuVEFiamlqRTdLUTBCUzQ1a3MrQ0ZKdTNtWW0r?= =?utf-8?B?NzNRR09QTGpJaERNUklJR0NqSXVUR2RDOC83MXpsTWVmL0ZmeXkvaFNFTEZL?= =?utf-8?B?WjlRMHVWSXVGVGIvNDFuY2pvdWZDVzRJNkI5N2VGcFpseUY0Y2s5NGV4NVVr?= =?utf-8?B?eTlzZElTUU1Zb3MxSFRKRnkzTmp6NU1NdVh0bUlXR3pzcEhNT3FjN0FuMVg0?= =?utf-8?B?S21UOGcrbHEza0tRU2FTZE9HOTg2MzV2a3hUcHRIOGdsY2pUMnVHVFpzbm1o?= =?utf-8?B?Q3c1TnIzMlZjaHgrQUR5TXRYME1mMmdhbk43RTArRkFXWU9SdDF4VDZpRzVL?= =?utf-8?B?cGdjb0RMelhrSFlTbGRTbUU5dmxjdERwTS9rdFE4amJwTzhhR1NGb0VMbW1w?= =?utf-8?B?OVFFWERqeGx2djBYNG12aXpZWXdSOG9JRmlkZEZDZHBxM3JMYTFwdzFSQ3RY?= =?utf-8?B?UFlROHR1VEl0NS9VY3IwdUhUMjZka0dPRFZnbkpNd2xtVWYzajBTMVZkekFH?= =?utf-8?B?bFNwbDhQL2xzL0JoWXVPaVdNMEhwY2RvQkJKWVhLc1hwVnVESG9SSGVaMDVJ?= =?utf-8?B?TktiOVh0SzRGNkNhUWgvRHE5M1A3ajcyaU0rOER4WUprR1B1VTZ2UnVZMGJu?= =?utf-8?B?SUpzdnoyNGZBT054QjliOUVGVUtSRUZCZDhCWmhhWkZFT25CRkNpblZOR0dm?= =?utf-8?B?T3A1czhOcTMzUkRmMm9lQ0tna0J5U0RNSStNcEE0MkZTYnVrY2dOWENYWWhO?= =?utf-8?B?YzVscUNXUVdIU2xtUW05R3BSc2VUUWdjVmNPYTIxR2NONHVwMmxCUVBiQ2dx?= =?utf-8?B?T3ptWmYvZXpuMCtDQUJ0NE1rZ3RPM0VaYkh5MTdHRWxMbmRBaFJXQjVJcG9q?= =?utf-8?B?aFpJclFtc3N0YjlUTm04VFFNcGdYTHVSenRKUW1wdWd0WSt3RVBRMWpFSEJT?= =?utf-8?B?eEtseG5aZkZRNzNsUnlCdDBNR052aXVwSm1NbWxjRWVTcDJLbnMwV0x3MHlt?= =?utf-8?B?SWlPR2hIOTkzQ2JUNzI5dEhTYlJ6WDNDSUZIZzNteWYrOWhSRHBMRU1CUnE3?= =?utf-8?B?Ky9MQTk0cys5R3JuMXRWMFBLQUNoZXRLNlVKdmpSTVp4YzB2UjVuUmNUdmNK?= =?utf-8?B?TkloS1RsSTRoN3pVcXBodkV4Z1ZxL3YxZU9uaEZMbEtaZFdOOFIvOTRSWHN4?= =?utf-8?B?MnRZdDJHV2VScldjeDZxR0VEdFJ6WElzTjFDTkhVLzh3emREUzJDTXpidFZj?= =?utf-8?B?RnBmdFYxNFpoTFZwOExsdkY4TzNpNnJrMFhValJVMlEvNE9ha3V5QjEyMlJi?= =?utf-8?B?UzlKMm03NElIaGxxU2h0bjVWSDJIK25IQVZQYzFBcjBCTWprRy96cWxrSitU?= =?utf-8?B?bHI1aUNHOTZnUmxwNVo5OXVzcWJtQ0o3SW9CM1hCVnYrNXBaeWtXaGxEQUpj?= =?utf-8?B?TnJ3aG43YzdBMEl5TVFHQ3FlRjNiVTFEZ2YxdHJSUDhxZU1rR2x5UT09?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7ea071f1-a632-47ed-3a83-08de5e97e094 X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9366.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jan 2026 18:05:53.5231 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: H7XEn3jPymlH2ZdLDkyLPDUsxlAyZWnDUtQbaTwHr2kcqitAVAj6ykiacrF94GfHl78HfPqq/uSdXxZJsby4PA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8145 Use the common dma_ll_desc structure in the virtual channel implementation to prepare for adding more shared APIs to the DMA link-list library. No functional change. Signed-off-by: Frank Li --- drivers/dma/fsl-edma-common.c | 95 ++++++++++++++++++++++-----------------= ---- drivers/dma/fsl-edma-common.h | 20 +-------- 2 files changed, 50 insertions(+), 65 deletions(-) diff --git a/drivers/dma/fsl-edma-common.c b/drivers/dma/fsl-edma-common.c index 61387c4edc910c8a806cc2c6f0fee2e690424bac..17a8e28037f5e61d4aafbd7f32b= de407ecc01a4d 100644 --- a/drivers/dma/fsl-edma-common.c +++ b/drivers/dma/fsl-edma-common.c @@ -223,14 +223,14 @@ static unsigned int fsl_edma_get_tcd_attr(enum dma_sl= ave_buswidth src_addr_width =20 void fsl_edma_free_desc(struct virt_dma_desc *vdesc) { - struct fsl_edma_desc *fsl_desc; + struct dma_ll_desc *fsl_desc; int i; =20 - fsl_desc =3D to_fsl_edma_desc(vdesc); - for (i =3D 0; i < fsl_desc->n_tcds; i++) - dma_pool_free(to_fsl_edma_chan(vdesc->tx.chan)->tcd_pool, - fsl_desc->tcd[i].vtcd, - fsl_desc->tcd[i].ptcd); + fsl_desc =3D to_dma_ll_desc(vdesc); + for (i =3D 0; i < fsl_desc->n_its; i++) + dma_pool_free(to_virt_chan(vdesc->tx.chan)->ll.pool, + fsl_desc->its[i].vaddr, + fsl_desc->its[i].paddr); kfree(fsl_desc); } =20 @@ -342,19 +342,19 @@ int fsl_edma_slave_config(struct dma_chan *chan, static size_t fsl_edma_desc_residue(struct fsl_edma_chan *fsl_chan, struct virt_dma_desc *vdesc, bool in_progress) { - struct fsl_edma_desc *edesc =3D fsl_chan->edesc; - enum dma_transfer_direction dir =3D edesc->dirn; + struct dma_ll_desc *edesc =3D fsl_chan->edesc; + enum dma_transfer_direction dir =3D edesc->dir; dma_addr_t cur_addr, dma_addr, old_addr; size_t len, size; u32 nbytes =3D 0; int i; =20 /* calculate the total size in this desc */ - for (len =3D i =3D 0; i < fsl_chan->edesc->n_tcds; i++) { - nbytes =3D fsl_edma_get_tcd_to_cpu(fsl_chan, edesc->tcd[i].vtcd, nbytes); + for (len =3D i =3D 0; i < fsl_chan->edesc->n_its; i++) { + nbytes =3D fsl_edma_get_tcd_to_cpu(fsl_chan, edesc->its[i].vaddr, nbytes= ); if (nbytes & (EDMA_V3_TCD_NBYTES_DMLOE | EDMA_V3_TCD_NBYTES_SMLOE)) nbytes =3D EDMA_V3_TCD_NBYTES_MLOFF_NBYTES(nbytes); - len +=3D nbytes * fsl_edma_get_tcd_to_cpu(fsl_chan, edesc->tcd[i].vtcd, = biter); + len +=3D nbytes * fsl_edma_get_tcd_to_cpu(fsl_chan, edesc->its[i].vaddr,= biter); } =20 if (!in_progress) @@ -372,17 +372,17 @@ static size_t fsl_edma_desc_residue(struct fsl_edma_c= han *fsl_chan, } while (upper_32_bits(cur_addr) !=3D upper_32_bits(old_addr)); =20 /* figure out the finished and calculate the residue */ - for (i =3D 0; i < fsl_chan->edesc->n_tcds; i++) { - nbytes =3D fsl_edma_get_tcd_to_cpu(fsl_chan, edesc->tcd[i].vtcd, nbytes); + for (i =3D 0; i < fsl_chan->edesc->n_its; i++) { + nbytes =3D fsl_edma_get_tcd_to_cpu(fsl_chan, edesc->its[i].vaddr, nbytes= ); if (nbytes & (EDMA_V3_TCD_NBYTES_DMLOE | EDMA_V3_TCD_NBYTES_SMLOE)) nbytes =3D EDMA_V3_TCD_NBYTES_MLOFF_NBYTES(nbytes); =20 - size =3D nbytes * fsl_edma_get_tcd_to_cpu(fsl_chan, edesc->tcd[i].vtcd, = biter); + size =3D nbytes * fsl_edma_get_tcd_to_cpu(fsl_chan, edesc->its[i].vaddr,= biter); =20 if (dir =3D=3D DMA_MEM_TO_DEV) - dma_addr =3D fsl_edma_get_tcd_to_cpu(fsl_chan, edesc->tcd[i].vtcd, sadd= r); + dma_addr =3D fsl_edma_get_tcd_to_cpu(fsl_chan, edesc->its[i].vaddr, sad= dr); else - dma_addr =3D fsl_edma_get_tcd_to_cpu(fsl_chan, edesc->tcd[i].vtcd, dadd= r); + dma_addr =3D fsl_edma_get_tcd_to_cpu(fsl_chan, edesc->its[i].vaddr, dad= dr); =20 len -=3D size; if (cur_addr >=3D dma_addr && cur_addr < dma_addr + size) { @@ -546,29 +546,30 @@ void fsl_edma_fill_tcd(struct fsl_edma_chan *fsl_chan, trace_edma_fill_tcd(fsl_chan, tcd); } =20 -static struct fsl_edma_desc *fsl_edma_alloc_desc(struct fsl_edma_chan *fsl= _chan, - int sg_len) +static struct dma_ll_desc * +fsl_edma_alloc_desc(struct fsl_edma_chan *fsl_chan, int sg_len) { - struct fsl_edma_desc *fsl_desc; + struct dma_ll_desc *fsl_desc; int i; =20 - fsl_desc =3D kzalloc(struct_size(fsl_desc, tcd, sg_len), GFP_NOWAIT); + fsl_desc =3D kzalloc(struct_size(fsl_desc, its, sg_len), GFP_NOWAIT); if (!fsl_desc) return NULL; =20 - fsl_desc->n_tcds =3D sg_len; + fsl_desc->n_its =3D sg_len; for (i =3D 0; i < sg_len; i++) { - fsl_desc->tcd[i].vtcd =3D dma_pool_alloc(fsl_chan->tcd_pool, - GFP_NOWAIT, &fsl_desc->tcd[i].ptcd); - if (!fsl_desc->tcd[i].vtcd) + fsl_desc->its[i].vaddr =3D dma_pool_alloc(fsl_chan->vchan.ll.pool, + GFP_NOWAIT, + &fsl_desc->its[i].paddr); + if (!fsl_desc->its[i].vaddr) goto err; } return fsl_desc; =20 err: while (--i >=3D 0) - dma_pool_free(fsl_chan->tcd_pool, fsl_desc->tcd[i].vtcd, - fsl_desc->tcd[i].ptcd); + dma_pool_free(fsl_chan->vchan.ll.pool, fsl_desc->its[i].vaddr, + fsl_desc->its[i].paddr); kfree(fsl_desc); return NULL; } @@ -580,7 +581,7 @@ struct dma_async_tx_descriptor *fsl_edma_prep_dma_cycli= c( { struct fsl_edma_chan *fsl_chan =3D to_fsl_edma_chan(chan); struct dma_slave_config *cfg =3D &chan->config; - struct fsl_edma_desc *fsl_desc; + struct dma_ll_desc *fsl_desc; dma_addr_t dma_buf_next; bool major_int =3D true; int sg_len, i; @@ -599,7 +600,7 @@ struct dma_async_tx_descriptor *fsl_edma_prep_dma_cycli= c( if (!fsl_desc) return NULL; fsl_desc->iscyclic =3D true; - fsl_desc->dirn =3D direction; + fsl_desc->dir =3D direction; =20 dma_buf_next =3D dma_addr; if (direction =3D=3D DMA_MEM_TO_DEV) { @@ -625,7 +626,7 @@ struct dma_async_tx_descriptor *fsl_edma_prep_dma_cycli= c( dma_buf_next =3D dma_addr; =20 /* get next sg's physical address */ - last_sg =3D fsl_desc->tcd[(i + 1) % sg_len].ptcd; + last_sg =3D fsl_desc->its[(i + 1) % sg_len].paddr; =20 if (direction =3D=3D DMA_MEM_TO_DEV) { src_addr =3D dma_buf_next; @@ -649,7 +650,7 @@ struct dma_async_tx_descriptor *fsl_edma_prep_dma_cycli= c( major_int =3D false; } =20 - fsl_edma_fill_tcd(fsl_chan, fsl_desc->tcd[i].vtcd, src_addr, dst_addr, + fsl_edma_fill_tcd(fsl_chan, fsl_desc->its[i].vaddr, src_addr, dst_addr, fsl_chan->attr, soff, nbytes, 0, iter, iter, doff, last_sg, major_int, false, true); dma_buf_next +=3D period_len; @@ -665,7 +666,7 @@ struct dma_async_tx_descriptor *fsl_edma_prep_slave_sg( { struct fsl_edma_chan *fsl_chan =3D to_fsl_edma_chan(chan); struct dma_slave_config *cfg =3D &chan->config; - struct fsl_edma_desc *fsl_desc; + struct dma_ll_desc *fsl_desc; struct scatterlist *sg; dma_addr_t src_addr, dst_addr, last_sg; u16 soff, doff, iter; @@ -682,7 +683,7 @@ struct dma_async_tx_descriptor *fsl_edma_prep_slave_sg( if (!fsl_desc) return NULL; fsl_desc->iscyclic =3D false; - fsl_desc->dirn =3D direction; + fsl_desc->dir =3D direction; =20 if (direction =3D=3D DMA_MEM_TO_DEV) { if (!cfg->src_addr_width) @@ -745,14 +746,14 @@ struct dma_async_tx_descriptor *fsl_edma_prep_slave_s= g( } iter =3D sg_dma_len(sg) / nbytes; if (i < sg_len - 1) { - last_sg =3D fsl_desc->tcd[(i + 1)].ptcd; - fsl_edma_fill_tcd(fsl_chan, fsl_desc->tcd[i].vtcd, src_addr, + last_sg =3D fsl_desc->its[(i + 1)].paddr; + fsl_edma_fill_tcd(fsl_chan, fsl_desc->its[i].vaddr, src_addr, dst_addr, fsl_chan->attr, soff, nbytes, 0, iter, iter, doff, last_sg, false, false, true); } else { last_sg =3D 0; - fsl_edma_fill_tcd(fsl_chan, fsl_desc->tcd[i].vtcd, src_addr, + fsl_edma_fill_tcd(fsl_chan, fsl_desc->its[i].vaddr, src_addr, dst_addr, fsl_chan->attr, soff, nbytes, 0, iter, iter, doff, last_sg, true, true, false); @@ -767,7 +768,7 @@ struct dma_async_tx_descriptor *fsl_edma_prep_memcpy(st= ruct dma_chan *chan, size_t len, unsigned long flags) { struct fsl_edma_chan *fsl_chan =3D to_fsl_edma_chan(chan); - struct fsl_edma_desc *fsl_desc; + struct dma_ll_desc *fsl_desc; u32 src_bus_width, dst_bus_width; =20 src_bus_width =3D min_t(u32, DMA_SLAVE_BUSWIDTH_32_BYTES, 1 << (ffs(dma_s= rc) - 1)); @@ -783,10 +784,10 @@ struct dma_async_tx_descriptor *fsl_edma_prep_memcpy(= struct dma_chan *chan, fsl_chan->is_remote =3D true; =20 /* To match with copy_align and max_seg_size so 1 tcd is enough */ - fsl_edma_fill_tcd(fsl_chan, fsl_desc->tcd[0].vtcd, dma_src, dma_dst, - fsl_edma_get_tcd_attr(src_bus_width, dst_bus_width), - src_bus_width, len, 0, 1, 1, dst_bus_width, 0, true, - true, false); + fsl_edma_fill_tcd(fsl_chan, fsl_desc->its[0].vaddr, dma_src, dma_dst, + fsl_edma_get_tcd_attr(src_bus_width, dst_bus_width), + src_bus_width, len, 0, 1, 1, dst_bus_width, 0, true, + true, false); =20 return vchan_tx_prep(&fsl_chan->vchan, &fsl_desc->vdesc, flags); } @@ -800,8 +801,8 @@ void fsl_edma_xfer_desc(struct fsl_edma_chan *fsl_chan) vdesc =3D vchan_next_desc(&fsl_chan->vchan); if (!vdesc) return; - fsl_chan->edesc =3D to_fsl_edma_desc(vdesc); - fsl_edma_set_tcd_regs(fsl_chan, fsl_chan->edesc->tcd[0].vtcd); + fsl_chan->edesc =3D to_dma_ll_desc(vdesc); + fsl_edma_set_tcd_regs(fsl_chan, fsl_chan->edesc->its[0].vaddr); fsl_edma_enable_request(fsl_chan); fsl_chan->status =3D DMA_IN_PROGRESS; } @@ -855,7 +856,8 @@ int fsl_edma_alloc_chan_resources(struct dma_chan *chan) if (ret) return ret; =20 - fsl_chan->tcd_pool =3D dma_pool_create("tcd_pool", chan->device->dev, + fsl_chan->vchan.ll.pool =3D + dma_pool_create("tcd_pool", chan->device->dev, fsl_edma_drvflags(fsl_chan) & FSL_EDMA_DRV_TCD64 ? sizeof(struct fsl_edma_hw_tcd64) : sizeof(struct fsl_edma_hw_tcd), 32, 0); @@ -880,7 +882,8 @@ int fsl_edma_alloc_chan_resources(struct dma_chan *chan) if (fsl_chan->txirq) free_irq(fsl_chan->txirq, fsl_chan); err_txirq: - dma_pool_destroy(fsl_chan->tcd_pool); + dma_pool_destroy(fsl_chan->vchan.ll.pool); + clk_disable_unprepare(fsl_chan->clk); =20 return ret; } @@ -907,8 +910,8 @@ void fsl_edma_free_chan_resources(struct dma_chan *chan) free_irq(fsl_chan->errirq, fsl_chan); =20 vchan_dma_desc_free_list(&fsl_chan->vchan, &head); - dma_pool_destroy(fsl_chan->tcd_pool); - fsl_chan->tcd_pool =3D NULL; + dma_pool_destroy(fsl_chan->vchan.ll.pool); + fsl_chan->vchan.ll.pool =3D NULL; fsl_chan->is_sw =3D false; fsl_chan->srcid =3D 0; fsl_chan->is_remote =3D false; diff --git a/drivers/dma/fsl-edma-common.h b/drivers/dma/fsl-edma-common.h index a0d83ad783f7a53caab93d280c6e40f63b8e9e5c..56d219d57b852e0769cbead11fa= dac89913747e2 100644 --- a/drivers/dma/fsl-edma-common.h +++ b/drivers/dma/fsl-edma-common.h @@ -155,17 +155,12 @@ struct edma_regs { void __iomem *errl; }; =20 -struct fsl_edma_sw_tcd { - dma_addr_t ptcd; - void *vtcd; -}; - struct fsl_edma_chan { struct virt_dma_chan vchan; enum dma_status status; enum fsl_edma_pm_state pm_state; struct fsl_edma_engine *edma; - struct fsl_edma_desc *edesc; + struct dma_ll_desc *edesc; u32 attr; bool is_sw; struct dma_pool *tcd_pool; @@ -194,14 +189,6 @@ struct fsl_edma_chan { bool is_multi_fifo; }; =20 -struct fsl_edma_desc { - struct virt_dma_desc vdesc; - bool iscyclic; - enum dma_transfer_direction dirn; - unsigned int n_tcds; - struct fsl_edma_sw_tcd tcd[]; -}; - #define FSL_EDMA_DRV_HAS_DMACLK BIT(0) #define FSL_EDMA_DRV_MUX_SWAP BIT(1) #define FSL_EDMA_DRV_CONFIG32 BIT(2) @@ -468,11 +455,6 @@ static inline struct fsl_edma_chan *to_fsl_edma_chan(s= truct dma_chan *chan) return container_of(chan, struct fsl_edma_chan, vchan.chan); } =20 -static inline struct fsl_edma_desc *to_fsl_edma_desc(struct virt_dma_desc = *vd) -{ - return container_of(vd, struct fsl_edma_desc, vdesc); -} - static inline void fsl_edma_err_chan_handler(struct fsl_edma_chan *fsl_cha= n) { fsl_chan->status =3D DMA_ERROR; --=20 2.34.1 From nobody Sun Feb 8 13:48:19 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013040.outbound.protection.outlook.com [52.101.83.40]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4F532372B3C; Wed, 28 Jan 2026 18:06:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.40 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769623564; cv=fail; b=QMjKpikE5ApQB7kkuJt4rzuMOyceMb0Y9GXeK1Lg+zPbXhoKygu175iyS+FIIqeXimyks5BvEyyZPe0TvKA9FXBtve2oCCBgNTHPrIKCbWqP2d2h+AIXRg7Ezvc5Mr+1BDBJ9IIA9ZCOV+pxRxJKTkTUbRe+D3xHFKGABBXcHs4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769623564; c=relaxed/simple; bh=yfvIjNWC4V6+JH9e/0SJKLj9JIfsclVT1DqniopxCHY=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=Yeok+OIBYOd5RtlMVYAEOww/BqGCjQ/YD29DCnCPvAhQ7foPJabwQL7+NTrJH760iP8enjeh/LBF0Ip7Ot68g+BP3RH0jcpN1QuAJhaZqzqlf5dPqAiMBhUUBiJQChZUiTZpx3w4bZW4QDZeIfOzW0gfMWgGPrQ2OJa/O6YeTCE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=SAaChPCq; arc=fail smtp.client-ip=52.101.83.40 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="SAaChPCq" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wYBBpAE++9lw+G6sZ+4XoP9xHUsVbu6tNBcq7DVaMxU9OXiHp8r4nN2I//MpSSEXdrJWYsWm5tDlRiwOylhmUFRALA7kaa4HzXdxsSIi85s8VMcb+uVvO55U2BLJGiMQ4apZYk8EYACS72R3qdASqhWQClOKZXjnSWtDAoiGee73CrlPpeaey8wlOX+LsryYmGMnP/iCEmIcQRWKToxxP6H3+o2uLegd6TCfd9XBzHuSxRIvFp5Me2+S3TgOjfjwva5hcNzrBiapcWCfyK3Uf+4KZiUei/5V4vwx8vHgIqklk1ZraCzRCmlguMIVYTDnaRwGGZBiLyKoYfG804EtcA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=4LFpFSDOW2wA/Nlj/4VV21e7jjG6I2aGtsv9BU+5Luk=; b=Vk2JBgbj7helQx96mOVGqKFNwS/Du1pQfF7eQzWOdXqHjg7h57Z0Soe/WZSZuQ8AmnvZgjaQtlurwtJ6GLZ3JkHa8798OvVLYtkuOfzccOvj0boCEpUBVQ5/QVEtcriDAxlXJdAh8h/hPa/z93hL0lSXALuDPbP0P+/OJHPAAA7XipNaKlYrwh5rgSeL0hfsoUE29UivIwmvMLM9oIudtXcL9COZmrUAwTy9s5EsWNybogRswfJPEXTSIQsR+biw+CLPTPmMlkt1tEKHdSufDeTpzi+LS92+EZ/iKyhi4UnGCwQ5NOwcfOobYp5ooOwsU1ofS0rZiEvXhhu5QNvYRQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4LFpFSDOW2wA/Nlj/4VV21e7jjG6I2aGtsv9BU+5Luk=; b=SAaChPCqjNjAtq+L6tGQC2MdtXKrj2/z4xRi1exxJWElLBId0l3PpI1hv169YbxNv0W/dCLcrdsD69ITntc8uwMlEmNC/P8Yluo/jeHq0D3zN8ndPfaIt1dAKEuq6orIqP5kl8WPfelRIc0FHjswSnDSZEt+OOYNWLmB3GVedUIoFYBmOI/OWTq/vpeUIDfpbN0gpHOS4q4wWx4n9F6wVvfS9t/PqLN/vzjS7oAl+GUgkMe1suXISqbcOtDB/+IrCqV3CS0HhyGtVxOHmjjNShz3AbTyRj/jCZXjbLHEV4zsvVCyJ1YG+SutUIhFIHSA62NhKST3cnjZEStvyiP/YQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) by AM9PR04MB8145.eurprd04.prod.outlook.com (2603:10a6:20b:3e1::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.8; Wed, 28 Jan 2026 18:05:55 +0000 Received: from PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588]) by PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588%6]) with mapi id 15.20.9520.005; Wed, 28 Jan 2026 18:05:55 +0000 From: Frank Li Date: Wed, 28 Jan 2026 13:05:24 -0500 Subject: [PATCH RFC 05/12] dmaengine: Add DMA pool allocation in vchan_dma_ll_init() and API vchan_dma_ll_free() Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260128-dma_ll_comlib-v1-5-1b1fa2c671f9@nxp.com> References: <20260128-dma_ll_comlib-v1-0-1b1fa2c671f9@nxp.com> In-Reply-To: <20260128-dma_ll_comlib-v1-0-1b1fa2c671f9@nxp.com> To: Vinod Koul Cc: linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org, imx@lists.linux.dev, joy.zou@nxp.com, Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1769623545; l=3578; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=yfvIjNWC4V6+JH9e/0SJKLj9JIfsclVT1DqniopxCHY=; b=me9qYJg42d212T36wkidx6evd69p4gfhrBHxBFMy+sqdryp8s654F6TS02q+E0t8TTnUr7iay NnlVVPu222mC4DUkteTUJ+LJUm3dj4jpk+F4tlGbGEQx5I3eS3NZxd9 X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: SA9PR03CA0009.namprd03.prod.outlook.com (2603:10b6:806:20::14) To PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PA4PR04MB9366:EE_|AM9PR04MB8145:EE_ X-MS-Office365-Filtering-Correlation-Id: 40cb9ac9-e2eb-44fa-1e53-08de5e97e170 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|19092799006|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?aHpiNTJUa2p5OHJJd3pMTFU0WWdsTlgrQ0tRMW5BeVRsU2d3WFBmMkRPejFR?= =?utf-8?B?WUVreVlSa0pzWTEyWUhmYjBTV0tUTXUzK3lBQzR6Y2tDZ0RuWWV5cmllUHJ1?= =?utf-8?B?STVVdGNtbFlaeVo5Rm5lV0hyNUFJUENqYjF2WVlueHZwN2lVMU42aUlaMzBX?= =?utf-8?B?dEoyYkwranVZRWNJak9FZFlSMDBveVAwYWpIZG1wbUMzeGNDZU50QWd6TlpJ?= =?utf-8?B?Wk1SYXF0Ti9WUFQ4VmQrT0RLSUkxZ3JUTkZPSmNKWXFpTlFaSytuTzhMSENN?= =?utf-8?B?M04xS1ZISGtUenlmVWpOTERac3EwbWlrSHFRMnRQMVF0eUttVnBYUmJRQ1p1?= =?utf-8?B?NUJybGZNZnVhbDhhZmF0WmpzVWFBQ3FQd2NZNWg3SFFhOHBYcUpHODlZT2h6?= =?utf-8?B?bDBCR3VHZmhjUjRneVNydUVwMHNJdytLZlFyNitFaHVoTUdHK0hvQ21EUi9U?= =?utf-8?B?WXlCZTVLQ0tMMFlSM1hTSHRUbEwxbFVMOFRDM0pkSHdvaGdjYmQvRjBXVUJv?= =?utf-8?B?Z1o3SGN6Nlo0WGQyWVJISnNKckVqRWRDMVd6NGNWR2ZsSnRBZzdwN3g1dE0w?= =?utf-8?B?WTBZa2YwQkFvOFh4MThNQmpqODRGSlBlS0s0TW04ZlVxVnpVdEw2cTZ2eGRv?= =?utf-8?B?cU1YaC8vb2x6d1VVUUtpcTNaOVU5S2h0bUdMWlhoRVJTWnpOUCs4UU5UZnpL?= =?utf-8?B?OTJnalhKK2JXK0gyakxPTkVSdkM3aldDSnRwbHBmaWRPckVVS2RGZUl0R1VW?= =?utf-8?B?UzVUZk1PQW1FYmprbDhISXZKNG9vU3pYMmFZcXZZYW94MW0yK3FrUHUrRXA4?= =?utf-8?B?dmFlSm9id0FqVyt1bkRVdzJWRUxMbDZBdnNMVEk5MmxNclRZSlVibzQwWTlr?= =?utf-8?B?ajVoK2pVbUlQbllMUExtRUhpRzBXd1NIVUFoajFEWUw2SUUrZTMvTVhvRnBy?= =?utf-8?B?ZDRqVU93bXdESFdRTG5jamM1R2VwR3kycjdBekhNTXJJN01BS1VuUXdnTExZ?= =?utf-8?B?dzJCbUxaQUYwL09lcmdxMWZHZ0JNdjBBdm8yWUszczI1aFhrUTM1TjhjN3lW?= =?utf-8?B?SmplNUV0ZW9ycy9CL0pQemYrOGdHMEdDTGViVERZUlJ1QjZranA1a1VGM0xm?= =?utf-8?B?cUU4emN6VEhnTUFKSTdscEsvQzNmZFNJUVVsc2NrTDNpL1FhaGZCcG92Q3k2?= =?utf-8?B?MEUybE5RV05UMm5UU053WmVNWnRaSkI5ZEVKNmdRQjRXNVhMeDJraUlqZVRl?= =?utf-8?B?RW1EbmtmVlhCVnVidmJiMlhLU2lEbmdjQUtCMzQydWRDMTFydk9lQ2VjdVF3?= =?utf-8?B?Y3pFS2JISlJHTnY4ZDhKNVBSdFlFWU1adGx1MjdkWmFUeGRNdVIxM3JZRzht?= =?utf-8?B?VW9MbnpnTVZETGRuMVFFVE9FZGJGbENhWUF2Z0FPcWlZQ2E0LzV5Wnh2eVJw?= =?utf-8?B?VFRNSjEvNzlodi9CWDY1dzBweVMvWko2d3FqS210S1JxZ2tnMjh5bEFEQ05Q?= =?utf-8?B?SStPelZhK01xWTZvZFZVZ2pGYlRHak1XMmV3OW1xUEoycFhxbXJYTFkrTndZ?= =?utf-8?B?aUV5bGRWd3UzVHJXeVByM0pHcmdrenduZGdvemdtUFZia1ZVQnBBQkl5cDhx?= =?utf-8?B?djBGYWRlNEZNL0pzWkhXU1VlZlhZeHd3aDByUzB0bGQzK3dqRVZEazZtclNz?= =?utf-8?B?bzFzSkxVRmZsUDI1SEswU0dxeUlwYXZ5bk1PaEhURDM0Tnp1d25KdzUvQmt4?= =?utf-8?B?bWtNQld6dUxLYnJoekQ4cFYyVDBaa0ZibDYzT2pRQUVjMUpPMklSald0SUhx?= =?utf-8?B?SUJKUXRmemlFWlR0TXBkRWhBSU1DUnZmUFE1NjhYSUlkZEpUZ2VrdVZFT0lz?= =?utf-8?B?MWRSZHdFc2huYW9xUll0RkVscERUZkxNQkxmODd2SzZYenVKUW5ZcGZCRHBu?= =?utf-8?B?OXNJU0RKY25FTEhsQmNBS1RZWmk3K20wMlBiM2x6VmhiMkpRWkVIYUNvZXcy?= =?utf-8?B?UGxuNnVYY3F1Z2JLMFNqbmxnRHdyQ1BVRk52ZkRSVnptdGxpRVFzSWJ6V2xU?= =?utf-8?B?Q2Ivd3dpY3dpejJmYzFZZ3paSFQ2TUJNOXBnZS9GaFY3emZuTHhuUUI1cTNS?= =?utf-8?B?ci9ZanVJQSt3V3RYOUVnN2dVU1p5bE1Eb3lmZ2Z1SDlOQnJrb29pTE5rU0Yy?= =?utf-8?Q?bqzPMJEN9GknvKP/MLaN+ng=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR04MB9366.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(19092799006)(376014)(52116014)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?cjg0dGlsdE9TR3FYRDVjZEJUTUxLdjI1dFd6TTQxeSt4czNnY1kvdml3dHA2?= =?utf-8?B?cUErNzMxM3F3MTlTN0ZnMXFXa09DL21QUkV5bTZUYXgyWlN3R2QyZmtIQm9T?= =?utf-8?B?cFR6bG4vakJ3WG81NzFnZThnaitHdkRvMHJmbHlNT2ljL1I5MXpZdVNzTVpr?= =?utf-8?B?VkFzUFpoNFc4MGFuRHZKT2MzV2tiKzhBT2kwQnJTTzViZEp5aUhZenlwblRo?= =?utf-8?B?cFBoY2tJcXZ0SlhLc2RXUVp4Ry9GTWFMNDZjdmdROHdBR1RzSm5COTJib2xn?= =?utf-8?B?OEhzWEtYT3o5M1ZBc25PY2tCV3NFZDA4RWxVSGhjVzdZRkFEc1Awb0xqamp6?= =?utf-8?B?d0g1UklveEVZUWJWWURMay9JeU5lVW05aTB5MTdWNFhLL0c1N3RSY1B0SEdl?= =?utf-8?B?TzNadW83cmRocUlaRllvd3NtaXRUL1FuRnd4VmZFVHNZaHBOUE5NaEpMZU1p?= =?utf-8?B?NkJZNnhrOS80RzhKRTdKci9GVXYvd1ptWk1CSytXWEZDQXpMNEJVTURHN2Zo?= =?utf-8?B?VDlucmc3RDl1TGhBV1ZaZmJ3UmkzTmY5RlJnM1BUSndVa1ZJWi9qYnFGY3RV?= =?utf-8?B?SzNQZGJhNjRnZlgwNjZaajMwV05tMWpEYkk3djRsMHd1SDZBUXZOU3ZWSzJT?= =?utf-8?B?U3dYY3lZVElxQlI3Yk51czhkQ3hSaTlubjhpTXVSV0NUUzBVYTZTUmZXdVMz?= =?utf-8?B?d1d1K3VIcGtteExYajNtSmJSTmxmRVBpVkMwdFN3S0ZDTi81bUV0TDh1Rm5v?= =?utf-8?B?OW8wMEZuVUM2NFRiaEJTeWx2aXdHSXNHaS9XZ0c1Q0Y1L0s0TTRQbUJVc0dk?= =?utf-8?B?UWpzTWdkQzlrQm1iZFhxZjRCQkdVZ2IrT3A3SnE0T1dKQzFyUUxvbEtKNGFu?= =?utf-8?B?bTFLdVFOQVZCcElZbnNOOFU5VWlzOWE4ZGhwcStPNm5UbzlDTW9wY2JYUklX?= =?utf-8?B?U1d1YWxzT2htWUo5RHNGQmlBUlR1U3k5MVcxR3ZDM0dRUTg3bXI5YjNNYVdQ?= =?utf-8?B?V1NsbFI0ZENOR00vcDlPQUN2dVAxczk1NVA4bTBrUSt6OUNtSUIwRiszYXlh?= =?utf-8?B?c0RXWmxwcUpHNlFNVW9iaWp1ZFo4aGZYdEcxSzdZUU8za05wNTJva0k3YUIv?= =?utf-8?B?eW04b1QvcHNsd1htSWorUEZUeUJlUXhrYmRaenFGQnJIWjhFWThkbVhvMTFF?= =?utf-8?B?c2p1cGd4bzJGVUttTU03bVNnWkZjYU85YXN2MDU5bVBFUFR4Z0RTdEp2dXJH?= =?utf-8?B?Y1FXOFFzTDhmMytsOWVqY3M3TVdTRHFUa2VZMDlDb2s3U1JpaUJ4eW9GNWFy?= =?utf-8?B?ZStiK29ZRFRxMzVyWHlZOC9sQVRiVVlDVzZmRmxYU2V4WXFXTDQ4Sm9yYVNT?= =?utf-8?B?TWYxLzI0UXFyeHkya2tUZWlSSUduWi9Hc0w5dmU0YlVQaCt5dHE5N05aRTZn?= =?utf-8?B?QVdyMVVlYTZPSzM3TWtWRnE0bzVjd2M1bDdsWE1HUVBLMW9wZ2VQWTlQSzc5?= =?utf-8?B?T0NzWEV5SWlMY0VYTjQ2TEhhaTEzeFNHZFQrL015ejEyUmxEMjVQaW5Cci9o?= =?utf-8?B?MkpCUk9MUVBUdzArNG9BdE0wYWFsZ1dzS1VML01JeEt3dXp6QmpvVi9xell4?= =?utf-8?B?bVNpSTE0MndiU0tXVVhML0hmZ3JtWk93c1dRR1k5RkdIMnBNc3FsMzRwR0h1?= =?utf-8?B?VlJDS2tzUWF1Rjh3czNsdzRBR09pdEN5K2pDZE1NNlhnUVZxTG1lbm9zc0g1?= =?utf-8?B?RFNLSzU5dUpEUTVDNXlxL040VThEcmpMVnBod2ZwWThCTGViSHhuOXkzdkxa?= =?utf-8?B?YWdCdnBkSytGaDBCNGw5VXpLRlU1aXZvbFgzczlRNW5jbHR4Vys4cy81aDlv?= =?utf-8?B?OVBNM05Kd2FpNGg3OU1tNkQvekZQS1E3STZFK0ZGbGtzKzhjNWhudUFkUHEx?= =?utf-8?B?TDcyM3pwWm5oQ3JXV0N6QlpSbEpQVXN1N1hpeU9lZldQOWZVYzM0MlRTT3o5?= =?utf-8?B?RWFKaW1FbG12NVgrM292WWhyeWxuS21OazM1Qk9FYnZSeU9UQkk0dGZyaHlV?= =?utf-8?B?MjkwRkpzSjNVcGQ4MDFFR25DK3ErM1Y4RUNRQjNNRDRWanRaMEphWTNVbHcw?= =?utf-8?B?S29uejliaUNIYzJRRzZtMUg3TnREMGUrc3NadFM3MlJ5ZGR2UjJ4UXRLZWRC?= =?utf-8?B?d3RGWE1udjVBdVJXWjRRZW96ZmdxMmpIV3M1YjNWQ0FFcXhpVVEzOVRXVUNI?= =?utf-8?B?eE4rcmQ5VjZMR1pubTkvbytBVGNrUVJadkFuMHc5OHhJVFNOd3VvMVJjTnMv?= =?utf-8?B?em1IMWNKazByTTFTRnNuL3RWckRpaG5GTk5RZ3padlE0c2JtdjF0Zz09?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 40cb9ac9-e2eb-44fa-1e53-08de5e97e170 X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9366.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jan 2026 18:05:54.9763 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: l3ERZjvCMXy2DX/KirWwhBLwcgwgsnKII11lMFSgtG4uhhdOToDiCEjqWwcYCLXDwKDGhY9/OctSneClTVIGkg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8145 Add DMA pool allocation in vchan_dma_ll_init() and API vchan_dma_ll_free(). Update fsl-edma to remove its local DMA pool create/free logic, as this is now handled by the common library. No functional change. Signed-off-by: Frank Li --- drivers/dma/fsl-edma-common.c | 11 ++--------- drivers/dma/ll-dma.c | 17 +++++++++++++++++ drivers/dma/virt-dma.h | 1 + 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/drivers/dma/fsl-edma-common.c b/drivers/dma/fsl-edma-common.c index 17a8e28037f5e61d4aafbd7f32bde407ecc01a4d..1b5dcb4c333e7b9a0b1b3bd7964= dcff94641bd79 100644 --- a/drivers/dma/fsl-edma-common.c +++ b/drivers/dma/fsl-edma-common.c @@ -856,12 +856,6 @@ int fsl_edma_alloc_chan_resources(struct dma_chan *cha= n) if (ret) return ret; =20 - fsl_chan->vchan.ll.pool =3D - dma_pool_create("tcd_pool", chan->device->dev, - fsl_edma_drvflags(fsl_chan) & FSL_EDMA_DRV_TCD64 ? - sizeof(struct fsl_edma_hw_tcd64) : sizeof(struct fsl_edma_hw_tcd), - 32, 0); - if (fsl_chan->txirq) ret =3D request_irq(fsl_chan->txirq, fsl_chan->irq_handler, IRQF_SHARED, fsl_chan->chan_name, fsl_chan); @@ -882,7 +876,7 @@ int fsl_edma_alloc_chan_resources(struct dma_chan *chan) if (fsl_chan->txirq) free_irq(fsl_chan->txirq, fsl_chan); err_txirq: - dma_pool_destroy(fsl_chan->vchan.ll.pool); + vchan_dma_ll_free(&fsl_chan->vchan); clk_disable_unprepare(fsl_chan->clk); =20 return ret; @@ -910,8 +904,7 @@ void fsl_edma_free_chan_resources(struct dma_chan *chan) free_irq(fsl_chan->errirq, fsl_chan); =20 vchan_dma_desc_free_list(&fsl_chan->vchan, &head); - dma_pool_destroy(fsl_chan->vchan.ll.pool); - fsl_chan->vchan.ll.pool =3D NULL; + vchan_dma_ll_free(&fsl_chan->vchan); fsl_chan->is_sw =3D false; fsl_chan->srcid =3D 0; fsl_chan->is_remote =3D false; diff --git a/drivers/dma/ll-dma.c b/drivers/dma/ll-dma.c index 3845cca7926eb71f008cb98d8c622cb28a2369a5..3b6de65ae83c070d2ca588abf6b= ca2c49c1d7bd2 100644 --- a/drivers/dma/ll-dma.c +++ b/drivers/dma/ll-dma.c @@ -17,6 +17,7 @@ */ #include #include +#include #include #include #include @@ -32,10 +33,26 @@ int vchan_dma_ll_init(struct virt_dma_chan *vc, =20 vc->ll.ops =3D ops; =20 + vc->ll.pool =3D dma_pool_create(dev_name(vc->chan.device->dev), + vc->chan.device->dev, size, align, + boundary); + if (!vc->ll.pool) { + dev_err(&vc->chan.dev->device, + "Unable to allocate descriptor pool\n"); + return -ENOMEM; + } + return 0; } EXPORT_SYMBOL_GPL(vchan_dma_ll_init); =20 +void vchan_dma_ll_free(struct virt_dma_chan *vc) +{ + dma_pool_destroy(vc->ll.pool); + vc->ll.pool =3D NULL; +} +EXPORT_SYMBOL_GPL(vchan_dma_ll_free); + int vchan_dma_ll_terminate_all(struct dma_chan *chan) { struct virt_dma_chan *vchan =3D to_virt_chan(chan); diff --git a/drivers/dma/virt-dma.h b/drivers/dma/virt-dma.h index 82f3f8244f6eca036a027c9a4c9339fcb87e8d2c..e3311be3d917ea1e0d5f4fb0e67= 81c7d0737c0a5 100644 --- a/drivers/dma/virt-dma.h +++ b/drivers/dma/virt-dma.h @@ -276,6 +276,7 @@ static inline struct dma_ll_desc *to_dma_ll_desc(struct= virt_dma_desc *vdesc) int vchan_dma_ll_init(struct virt_dma_chan *vc, const struct dma_linklist_ops *ops, size_t size, size_t align, size_t boundary); +void vchan_dma_ll_free(struct virt_dma_chan *vc); int vchan_dma_ll_terminate_all(struct dma_chan *chan); #endif =20 --=20 2.34.1 From nobody Sun Feb 8 13:48:19 2026 Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11013046.outbound.protection.outlook.com [52.101.72.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1FCE737757D; Wed, 28 Jan 2026 18:06:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.72.46 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769623569; cv=fail; b=WHSEqcUxz2n8K0MthNvKV4fJfjpkbopc8idZ5lt/6QlJJpx+ZGVogjgDYRuwI/HJ+zrWQ9tK4o5IZ8xosrG/9+vTEDTRgdiuihoWBLpBUVqf7d47PcRdo48i5h/AmWWudFSiduaPXjRX3KY9Z0Y85FDRW1Akr5Od+hLf4GgFz7Y= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769623569; c=relaxed/simple; bh=wp52EyiRanCFPsgK5reuEw8U6zXbt11wIf1f6ie8hx4=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=T4+bhSdJznHmz5GUG2Rg+jfokWf9YCLhgaOWBG7tyM8V64V1kPsjhwoiAWGqcjcXiYrFcIs+sWbfPSzxoedZvI6hEPJ/5z/eiaaPS4Y63ZkonP5yqi/IeGU0IwaptKrBaebIMrTbFJFo9tWjDYPne9VuuuhvlTQwmy1x48jNXnU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=HOQ00DTi; arc=fail smtp.client-ip=52.101.72.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="HOQ00DTi" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ENI4NeiAJhEIjxSWYZPjDAmFcGlR3yWCiB9k0SflY978ehvYCEXxgN1NsC2TNCPBHgPW2cCxoeDNRC1aPdERRVXdwqg8kGpDQftGmcz2Jm/PppDpD8zNAO/8lq+yVnhgk1J7dzQUNHgqoqZFPptPvKu0a6Kbwp4qiBLQUXKRMB5hsFM/00oT+4o5nEFQ/T+UWyZP7486levf4rgB3KaY8GwVWo0F6GlNxhqA4Z/7ncjwKd3VxRPPjwrEh7WRUVI47v5aTx1P48P8oy4hB3SPLzqSljG38gAOY14DxF6pLUJ9d5Xy0E0OKOQwjYwpL1uG3Q3awTRqgKZhfnn6NrpwVA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=7ofYJ1AYEA7Nz2ulM/WPemo7OqILyelNkwtvV7PaKnY=; b=quM7JSkYDea9gRsN8oUOoFIa6spGqAUihesc50Oj4+9u/5P3ubATZFjG9n9B82a0JpwzGpf59tGBOmcmpkxPuW1husfULneiZOtTxO6a5/w+Dzyek0awzp0qI6+p8agjN/C7Jc9xn5aI4yh+pcpp/bQlDpBYypecvK+LMFqIJNS7BGseHgYmJEXhonrLXqoMRjCCSKBCw+c1oYM5x1vvtfTONKppFRzfRhDsbpwFcvfPIWqQzC8xPgjC+Z7izm0fBmLy3i6ffk15FmPm1gsUjKtPlXyOckY9ldIftFpTKZFyq7Q2UzdwbhtdunILiVzvutLYk7LL2utkECn6VgsnOg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7ofYJ1AYEA7Nz2ulM/WPemo7OqILyelNkwtvV7PaKnY=; b=HOQ00DTiZseew2yNhObnwTWpQ3GCMnqPDl4iRk+IZLigff2fQnC/qZxns7Y3gQQCVYwZLMnxxhbDvO08dEgHkOnQ3DuDnXYEqW6TX28EpgJFOLqc/xBh5mNbnsnvbBfPaeS8WEMn9e7DVi6BTZWYSKoDsfaJnf/BVn4l7eX02nFVzbXcsPpNnVXqKbN3xqJaSPDLbaWfO5t+Z0CRGBsO4pRa6mrxXLYKMiCu4Q+Jo97WBdeIXBeSp+iftYsqclL/54ZzcKuKKRsrUNbe42oZR1bttYryaNXxouQPqYzc5VcqVqeimWNf3zWhgjHJj4uQgPZzy29/b7YFwbWG6M0fPA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) by AM9PR04MB8145.eurprd04.prod.outlook.com (2603:10a6:20b:3e1::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.8; Wed, 28 Jan 2026 18:05:56 +0000 Received: from PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588]) by PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588%6]) with mapi id 15.20.9520.005; Wed, 28 Jan 2026 18:05:56 +0000 From: Frank Li Date: Wed, 28 Jan 2026 13:05:25 -0500 Subject: [PATCH RFC 06/12] dmaengine: Move fsl_edma_(alloc|free)_desc() to common library Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260128-dma_ll_comlib-v1-6-1b1fa2c671f9@nxp.com> References: <20260128-dma_ll_comlib-v1-0-1b1fa2c671f9@nxp.com> In-Reply-To: <20260128-dma_ll_comlib-v1-0-1b1fa2c671f9@nxp.com> To: Vinod Koul Cc: linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org, imx@lists.linux.dev, joy.zou@nxp.com, Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1769623546; l=7693; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=wp52EyiRanCFPsgK5reuEw8U6zXbt11wIf1f6ie8hx4=; b=KNZHQnbAdPmhLz+rOoJk+ka4CVpaTRuBqlySz4xj6tcPkUmqP4HiDViP6BFsFh/h3qgVbK7oQ k6myT0WYf2SCcCuknNTsq5Wdkq14UNjgFGpsS0urWGLz8P7nZ6fJXJo X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: SA9PR03CA0009.namprd03.prod.outlook.com (2603:10b6:806:20::14) To PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PA4PR04MB9366:EE_|AM9PR04MB8145:EE_ X-MS-Office365-Filtering-Correlation-Id: a42a5643-5ad9-41fc-45ef-08de5e97e250 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|19092799006|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?RitJUEtqKzB1UFJ6cFBaMnRFMEN3aTZpQjlpTHpvUG9sSkF2dHlHK2hKWG93?= =?utf-8?B?M2xSRVptdit0alhzS2wrVWoxcXBJNERzdjVuNlo1WmVJRTNuKzZlY1YzaEg3?= =?utf-8?B?cEg4Yng5SC81OFJScEs4TXJpNENMajllUGkzREdrUHhWcERRRjh3NXFxOGdn?= =?utf-8?B?dHQzRHR6c2pVbVhPeTdyYUNCUE40NE8wM01CdndNOXcyRlNXRFBnNEpXTXp5?= =?utf-8?B?RklrT2o3M3NyZUhPdmZ0akRRSGRubjN4bEgwZHVQNmhhMm5qS3JxSXo1RmxP?= =?utf-8?B?Ni9RVENNbkZQMWFEMnhMYURLcVA3WGE0ZGw3ci8zbTEwSEZEYUp5eXpPVnZ0?= =?utf-8?B?eVBKR0IwRXNWUDJNZnYreTZVK1ZBbVZhSVhiWHBnN25mbjdQaE4yd0k2ZDN2?= =?utf-8?B?cGEzZ2x4NDIzVm1mSzNINUJvZVNaNmcwTE42d1VsdEJmR09KSEVKZmliVkxH?= =?utf-8?B?c0FSdGtqRHozQm1welExMWJ3K3MzRUZVUGx5bHFJWEFUdEUxbmplaWxpYkRi?= =?utf-8?B?U2VhOUJ4d3RsN3ZwYXlQZ0g1RU9laEFsTW9kTkVYZWtXY2o3NjBNMUEweG5o?= =?utf-8?B?OGF3aXNJMWUwbzhpbGh2ZHh6aHVmankvcEU3c1ovTi9SalBFYkVLUW01eWdP?= =?utf-8?B?akJZV1IvVUljb3ZiMnZ2OWtkcnM0YWhMa3YvWWdJTi9QbHhjM3g1dnNpZEZp?= =?utf-8?B?dzcrL2dPR1FJd2lqczBPOStCVHJPNDlFRlhEcDlxZDhBTlhReEZGbkIrQUtx?= =?utf-8?B?VlpEUURqaDJUR2lxcGtlNExrVmtRMEdRM29NOEw2VHZLNk1aWlVKRHp5Nm9F?= =?utf-8?B?dEo0cVkxUC9hdXpmSkp2ODMyYWhnN0Z6STJHSTJrNE1YY2JjcEZISzRMUi83?= =?utf-8?B?bHJwQ280Qy84ZFo3OXRFSzcxV0xtVU40LzE4bUVJVGdZNk1oVTlxN0d1L3NX?= =?utf-8?B?Q2NjUklqT251NHo5OERaaENyQlJQRXUrdDFOYTRIakc0cWRrbHZKR200YUxY?= =?utf-8?B?bnlYakRCRGtzZk9oS2lFRXh3YVh0RHdyTytnWndGTDVRYm9HaTEydjZaRmFU?= =?utf-8?B?TklnSXJUallDY29hRGpQWlQ4VkxQbXQyR0hMUEszUWFzR1hBandnbnRjMHZ3?= =?utf-8?B?cDU0dXVMZGtyaE9VT1c2Y3B3ZEdIdkdpajlQM01HbXB0ZHlYL2xTK093UnE2?= =?utf-8?B?ZUc5MmQ5NlVqVjhMMGcyejM4Y2lwNTBvcXRYbU05YWs3cVJDY3MwcytwcStM?= =?utf-8?B?R1JNRVlHb1gwRjB2Q2plNWlvS0lPeDhpdTJ0TUg0ckJ1dHBqY2J0b3kyKysv?= =?utf-8?B?Q283WHAyZTY4bE5XR2w0M3duQ3Y1eXJ3djJja0t2a3hNcktRbFhCb2FJbk05?= =?utf-8?B?cmp4WjB5MlNGbVd4Sm9wQlBHbzZSb1Q4UVByZ2x5eGNVSmlFUXU5dGppZk5C?= =?utf-8?B?dk1XK2JudENkaThIMWNoZWNiblltdE0zaHBWRnpCbzFOZmpZMmE0VXU3LzV6?= =?utf-8?B?UWZhc0llYmVFcUtOaUpsVU1OQmVTRXN2K3VFZmYwY2ZLSzRaRENuWXgrN3hh?= =?utf-8?B?Y2R0Yk8yeDRQMEtFVk5pSjZ1TTBuQU9EakV5NCt6WEE1WDZMUS95R0tsV0s2?= =?utf-8?B?ZVhKaWNVUkVuQ3lPT2FlM3R1Wm5YM2tydWp5K0doWUQrcVhoT0NtT1ZlZUtx?= =?utf-8?B?QitNL2R2VVVIeWxheW40N0ZpRUNHRWlkeld0b3d0L3VUSTdBc29wRU1pLzd5?= =?utf-8?B?S2t6SzdHbHc0SjJ2Q1M1SU1XUFNDaTFLYmNYL2ZIY3NOT2pONGNuZjFwaThS?= =?utf-8?B?aW1INnlkWStyb2xWZVBoRWtxa1JvbEl5cGVrYVZCV3FhTXdRbWg5bGVrbnI5?= =?utf-8?B?cnpuRHFRZ2ZCTmowQmY2MEJJNDRiWVVLTTg0TmRMWHVIVHRER2VsSFJBTURy?= =?utf-8?B?eFE0NXVPMVFOUXJwZFJYdm1GL0RqVEVmV3hjV0E2WXlCY3Y5L0RjclRlK1ZX?= =?utf-8?B?ZElMV0JrcFZBc1MvWWFoR2swOFI0Zld0VFhZWWVuNkZBTzhZQ1QwK1U5ems2?= =?utf-8?B?YmhsbmJNc1l2Y2lTcDNmeHpEdDl6YlJORllCWENmOVZHdDk1eVBCSGZJTnVi?= =?utf-8?B?bWFrUituUVFJVlBDME82VGpISC96RVVZS1hWcGtqdzhnc1RMZ2lSSVE0d0cv?= =?utf-8?Q?hoGA2N+1ptxfR/YYslqY0uY=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR04MB9366.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(19092799006)(376014)(52116014)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?SktvT3pQR0xVTTZLenIrcGxMT09KNm5SODEvZ25YaGs5cm54TFNwUDJ2Qjc0?= =?utf-8?B?WGVVcGNhZWVSalJiZ1orcXhiYW8rVXBIOHBZdEp2TmFLYzdHY2xuam5YUUx2?= =?utf-8?B?QWE1cnhFSHlBNDd0S2UyaFBEd3dmY0VlU084cFd0TUs1WFRKY0ExVFpGaXlR?= =?utf-8?B?VjVuS1Y3bFluNTFlTTJXTHZzUTlBOEFSU2Z4RkR6aUp6OVlPQ1p5NFJ0OGEz?= =?utf-8?B?Z1dVNWYwVG5kY29oUzNKN0dBYS9lWnRneTYxbHdYU0x1OVgzejBqSE0wRWZ5?= =?utf-8?B?czR6dDE1dEVPQnRrVWE1NkIwaTFZWnhBSTVSTC91TUowZkFCWjZYb0hIZ0la?= =?utf-8?B?NEZtUmJTeG81bUYxRTJZUmREOXkyVk9hTFVkQmkrUU5sWEErNVhuNHZLa3R2?= =?utf-8?B?L1hPNTZOZk01Ky92MUdmYTFuZ1ZBSnVqa1kyMW1XUmZpc256eXE4NmZLdFR4?= =?utf-8?B?ZXVuTlEzdDFnQ3hlRVdMVDc0MzVRT1I3bFEyNTJPV1lYTlhHWGlpNEJHYnpo?= =?utf-8?B?bjBOaUFDZlFlcElwcVpDSnhqQS9xVTVkL01ydERLUXRjLzNkR012VGU4clAy?= =?utf-8?B?NkJYRnpJbkIrQ3JaY3VIWElkSFdnVWJES29mWEdzMUt2QUw2NStMZmtaa0Mw?= =?utf-8?B?Y2ptVEZVS3BzeDNtTU1VLzFtR0MrK0FYK3lzWHdvQ0t1cUNLaEdKOSs0djhQ?= =?utf-8?B?N0g0TytVSy9yZmZodnU1N1cyNVhOTlA0WlNCUXppa2NTOWNTSUZ6aGJQT2VP?= =?utf-8?B?VEdkc3VZNW5GbEgyTWFDRkM1NTJYVlp5eE9vblEzUjk0alpOTTJjbXkvdWQx?= =?utf-8?B?algvVUJIU3VBMnRiWnF6Vk03VERVNzBTTEV5Witzd1NNeEdRemlBSUhBbTNL?= =?utf-8?B?K3RYdjkyOUxNNUpoK2NwRjl6aS9Ydy9mczhROWQ1bHlHNStQd3IxK0szT0hm?= =?utf-8?B?NlpydkNqY2FFSVJuVmVIUjNpNi9USzNpYkRkTDliU0xmeTFXblgrRlFwbytO?= =?utf-8?B?UExmT3A1L3RGeXJuZ1NnSVNxSU1oZU52VUtQQnZpemFUMFlPMzdqWmtMN2VM?= =?utf-8?B?eE15cFlTQS90WVZiSllCODZOc2FRdnZmTFNYVGlFdzJuMndsaGd1YWRpVTlv?= =?utf-8?B?WCtPMEh0ZHVRM1J6ZUsvbGY4VGNmRnRYaDI3MVlLTDFjeTd2ZnFlaFl6cXpq?= =?utf-8?B?THQxSVFPSis2Q01ScjljYmFvRVlDRUdSTXNvZWhiNzViakNST1Voa3FqeHBL?= =?utf-8?B?WXB6UTRWWHN2NjVlYk9MOGhQbytvN3g5aTd1T2hsSVR6N0F5c2lqWWhlcS9F?= =?utf-8?B?T3gzV3lDcElOd05wQjk2RmV1TFZMOFJDaUF2ZzJmQUpuOUU0RlNiSmIydmll?= =?utf-8?B?TjB2VkI5TEJFNnQyek1YcjVDMGJKcFUvV3EwakRwODcrcW5VdElDdmltSHQw?= =?utf-8?B?K3pEbGJldlpEczEvb0x3eW1mTit3Sk9NMXhKOWhYejMyRUpGN3dmNkZzTTRw?= =?utf-8?B?dEpKQndEUmFpdHE5M1pZVVVrZWFPeWxUQ1Z1Rm5ubVl3K2pTSkFwVnUrbVQx?= =?utf-8?B?dnFzcDk1UGE1cDg5L3hqMllFcTA5MktWRWo1U2pvQVFyRXZTSUtKay9oY3g4?= =?utf-8?B?ZnZiaVBTdUlHYVpMV0xSV1hjd3hBOFplRmxFbC9PeXNPV1BJQVg2RlZqR0ha?= =?utf-8?B?QUdLVytTL2RqZXhRU0s2VWdGdERVMmFEaVNKRFRmeXU3R2RmUHpDeVpMWXh3?= =?utf-8?B?SVhJM3VSaTFmMVVhOE1ybHVIZExramV6WnluQjhPYlFmZ1p2Z0VhdDJ2b3NO?= =?utf-8?B?bld6cllTdjZmV0lWWG5hV05MZmNUOXJEVFdKS2tybnBuM3YvVkRzaWw2dUlK?= =?utf-8?B?MVFjd2dJQjl0TzZGVk9WY1V2elFpRDEva3I4OHU4RWNQL2dMTHFQZ3BqSkcy?= =?utf-8?B?cGlIWlVLbWF5STcwS2tGVVBHQzZiUmd3enFvamdRWVFUbi9VY2FYd2I4R1Z1?= =?utf-8?B?UURYWGt3QVAvVGVmTGhMdXVrSDNqempPMGtwVWg0b2JGR0xEd3FGaTRPV0NF?= =?utf-8?B?bXVvUXc3N3YxaGRDZ1d6Q3hlVUlIeEwrdGVWbExaM2ZueUZpd3VoQks1YnJS?= =?utf-8?B?Qjdnd21HNFlhdEtOb0NUME9WUHZ5Mzh2VE1nc2JDaGVjdmhRQjNYeThtYXBm?= =?utf-8?B?V3M4SmRxL0FybDN5YlNVeUlab3RaQTh1d2hkZ09zeWVHZzZMNGkzTU5mdGc2?= =?utf-8?B?T1pVNnRXZ1ZkMW51MkR0RVptczQ5YU52TDBzMnFFeko0WlVMaWNVOXU4NWdK?= =?utf-8?B?VUtaRjBtNnNBUEtFbFEvZEVHY21xM3pvS1VYQmlHME5FS0hvd21oZz09?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: a42a5643-5ad9-41fc-45ef-08de5e97e250 X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9366.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jan 2026 18:05:56.4792 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: zLa0hdSdKaPb1WDRg3WQhADsEhhWe7yDh3WtAeCXDhNKf+FCajKrPMFdZCMrIoEDvfcSjbBvm6XRJymeLoQDNQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8145 Move fsl_edma_(alloc|free)_desc() to the common DMA link-list library and rename them to vchan_dma_ll_(alloc|free)_desc(). Remove the "fsl_" prefix from local variables accordingly. No functional change. Signed-off-by: Frank Li --- drivers/dma/fsl-edma-common.c | 47 +++------------------------------------= ---- drivers/dma/fsl-edma-common.h | 1 - drivers/dma/fsl-edma-main.c | 2 +- drivers/dma/ll-dma.c | 43 +++++++++++++++++++++++++++++++++++++++ drivers/dma/mcf-edma-main.c | 2 +- drivers/dma/virt-dma.h | 2 ++ 6 files changed, 50 insertions(+), 47 deletions(-) diff --git a/drivers/dma/fsl-edma-common.c b/drivers/dma/fsl-edma-common.c index 1b5dcb4c333e7b9a0b1b3bd7964dcff94641bd79..20b954221c2e9b3b3a6849c1f0d= 4ca68efecb32e 100644 --- a/drivers/dma/fsl-edma-common.c +++ b/drivers/dma/fsl-edma-common.c @@ -221,19 +221,6 @@ static unsigned int fsl_edma_get_tcd_attr(enum dma_sla= ve_buswidth src_addr_width return dst_val | (src_val << 8); } =20 -void fsl_edma_free_desc(struct virt_dma_desc *vdesc) -{ - struct dma_ll_desc *fsl_desc; - int i; - - fsl_desc =3D to_dma_ll_desc(vdesc); - for (i =3D 0; i < fsl_desc->n_its; i++) - dma_pool_free(to_virt_chan(vdesc->tx.chan)->ll.pool, - fsl_desc->its[i].vaddr, - fsl_desc->its[i].paddr); - kfree(fsl_desc); -} - int fsl_edma_terminate_all(struct dma_chan *chan) { struct fsl_edma_chan *fsl_chan =3D to_fsl_edma_chan(chan); @@ -546,34 +533,6 @@ void fsl_edma_fill_tcd(struct fsl_edma_chan *fsl_chan, trace_edma_fill_tcd(fsl_chan, tcd); } =20 -static struct dma_ll_desc * -fsl_edma_alloc_desc(struct fsl_edma_chan *fsl_chan, int sg_len) -{ - struct dma_ll_desc *fsl_desc; - int i; - - fsl_desc =3D kzalloc(struct_size(fsl_desc, its, sg_len), GFP_NOWAIT); - if (!fsl_desc) - return NULL; - - fsl_desc->n_its =3D sg_len; - for (i =3D 0; i < sg_len; i++) { - fsl_desc->its[i].vaddr =3D dma_pool_alloc(fsl_chan->vchan.ll.pool, - GFP_NOWAIT, - &fsl_desc->its[i].paddr); - if (!fsl_desc->its[i].vaddr) - goto err; - } - return fsl_desc; - -err: - while (--i >=3D 0) - dma_pool_free(fsl_chan->vchan.ll.pool, fsl_desc->its[i].vaddr, - fsl_desc->its[i].paddr); - kfree(fsl_desc); - return NULL; -} - struct dma_async_tx_descriptor *fsl_edma_prep_dma_cyclic( struct dma_chan *chan, dma_addr_t dma_addr, size_t buf_len, size_t period_len, enum dma_transfer_direction direction, @@ -596,7 +555,7 @@ struct dma_async_tx_descriptor *fsl_edma_prep_dma_cycli= c( return NULL; =20 sg_len =3D buf_len / period_len; - fsl_desc =3D fsl_edma_alloc_desc(fsl_chan, sg_len); + fsl_desc =3D vchan_dma_ll_alloc_desc(chan, sg_len); if (!fsl_desc) return NULL; fsl_desc->iscyclic =3D true; @@ -679,7 +638,7 @@ struct dma_async_tx_descriptor *fsl_edma_prep_slave_sg( if (!fsl_edma_prep_slave_dma(fsl_chan, direction)) return NULL; =20 - fsl_desc =3D fsl_edma_alloc_desc(fsl_chan, sg_len); + fsl_desc =3D vchan_dma_ll_alloc_desc(chan, sg_len); if (!fsl_desc) return NULL; fsl_desc->iscyclic =3D false; @@ -774,7 +733,7 @@ struct dma_async_tx_descriptor *fsl_edma_prep_memcpy(st= ruct dma_chan *chan, src_bus_width =3D min_t(u32, DMA_SLAVE_BUSWIDTH_32_BYTES, 1 << (ffs(dma_s= rc) - 1)); dst_bus_width =3D min_t(u32, DMA_SLAVE_BUSWIDTH_32_BYTES, 1 << (ffs(dma_d= st) - 1)); =20 - fsl_desc =3D fsl_edma_alloc_desc(fsl_chan, 1); + fsl_desc =3D vchan_dma_ll_alloc_desc(chan, 1); if (!fsl_desc) return NULL; fsl_desc->iscyclic =3D false; diff --git a/drivers/dma/fsl-edma-common.h b/drivers/dma/fsl-edma-common.h index 56d219d57b852e0769cbead11fadac89913747e2..654d05f06b2c1817e68e7afaf9d= e3439285d2978 100644 --- a/drivers/dma/fsl-edma-common.h +++ b/drivers/dma/fsl-edma-common.h @@ -464,7 +464,6 @@ void fsl_edma_tx_chan_handler(struct fsl_edma_chan *fsl= _chan); void fsl_edma_disable_request(struct fsl_edma_chan *fsl_chan); void fsl_edma_chan_mux(struct fsl_edma_chan *fsl_chan, unsigned int slot, bool enable); -void fsl_edma_free_desc(struct virt_dma_desc *vdesc); int fsl_edma_terminate_all(struct dma_chan *chan); int fsl_edma_pause(struct dma_chan *chan); int fsl_edma_resume(struct dma_chan *chan); diff --git a/drivers/dma/fsl-edma-main.c b/drivers/dma/fsl-edma-main.c index a753b7cbfa7a3369d17314bc5bc9139c9f8e5c27..354e4ac5e46c920dd66ec1479a6= 4c75a609c186d 100644 --- a/drivers/dma/fsl-edma-main.c +++ b/drivers/dma/fsl-edma-main.c @@ -808,7 +808,7 @@ static int fsl_edma_probe(struct platform_device *pdev) fsl_chan->pm_state =3D RUNNING; fsl_chan->srcid =3D 0; fsl_chan->dma_dir =3D DMA_NONE; - fsl_chan->vchan.desc_free =3D fsl_edma_free_desc; + fsl_chan->vchan.desc_free =3D vchan_dma_ll_free_desc; =20 len =3D (drvdata->flags & FSL_EDMA_DRV_SPLIT_REG) ? offsetof(struct fsl_edma3_ch_reg, tcd) : 0; diff --git a/drivers/dma/ll-dma.c b/drivers/dma/ll-dma.c index 3b6de65ae83c070d2ca588abf6bca2c49c1d7bd2..ff9eac43886255c18550c978184= c0801456fefe9 100644 --- a/drivers/dma/ll-dma.c +++ b/drivers/dma/ll-dma.c @@ -53,6 +53,49 @@ void vchan_dma_ll_free(struct virt_dma_chan *vc) } EXPORT_SYMBOL_GPL(vchan_dma_ll_free); =20 +struct dma_ll_desc *vchan_dma_ll_alloc_desc(struct dma_chan *chan, u32 n) +{ + struct virt_dma_chan *vchan =3D to_virt_chan(chan); + struct dma_ll_desc *desc; + u32 i; + + desc =3D kzalloc(struct_size(desc, its, n), GFP_NOWAIT); + if (!desc) + return NULL; + + desc->n_its =3D n; + + for (i =3D 0; i < n; i++) { + desc->its[i].vaddr =3D dma_pool_alloc(vchan->ll.pool, GFP_NOWAIT, + &desc->its[i].paddr); + if (!desc->its[i].vaddr) + goto err; + } + + return desc; + +err: + while (--i >=3D 0) + dma_pool_free(vchan->ll.pool, desc->its[i].vaddr, + desc->its[i].paddr); + kfree(desc); + return NULL; +} +EXPORT_SYMBOL_GPL(vchan_dma_ll_alloc_desc); + +void vchan_dma_ll_free_desc(struct virt_dma_desc *vdesc) +{ + struct dma_ll_desc *desc =3D to_dma_ll_desc(vdesc); + struct virt_dma_chan *vchan =3D to_virt_chan(vdesc->tx.chan); + int i; + + for (i =3D 0; i < desc->n_its; i++) + dma_pool_free(vchan->ll.pool, desc->its[i].vaddr, + desc->its[i].paddr); + kfree(desc); +} +EXPORT_SYMBOL_GPL(vchan_dma_ll_free_desc); + int vchan_dma_ll_terminate_all(struct dma_chan *chan) { struct virt_dma_chan *vchan =3D to_virt_chan(chan); diff --git a/drivers/dma/mcf-edma-main.c b/drivers/dma/mcf-edma-main.c index 9e1c6400c77be237684855759382d7b7bd2e6ea0..60c5b928ade74d36c8f42067779= 21544787f6cd8 100644 --- a/drivers/dma/mcf-edma-main.c +++ b/drivers/dma/mcf-edma-main.c @@ -196,7 +196,7 @@ static int mcf_edma_probe(struct platform_device *pdev) mcf_chan->edma =3D mcf_edma; mcf_chan->srcid =3D i; mcf_chan->dma_dir =3D DMA_NONE; - mcf_chan->vchan.desc_free =3D fsl_edma_free_desc; + mcf_chan->vchan.desc_free =3D vchan_dma_ll_free_desc; vchan_init(&mcf_chan->vchan, &mcf_edma->dma_dev); mcf_chan->tcd =3D mcf_edma->membase + EDMA_TCD + i * sizeof(struct fsl_edma_hw_tcd); diff --git a/drivers/dma/virt-dma.h b/drivers/dma/virt-dma.h index e3311be3d917ea1e0d5f4fb0e6781c7d0737c0a5..a15f9e318ca5ec7fd3c4e6fc686= 4ad3d1dc3eaa5 100644 --- a/drivers/dma/virt-dma.h +++ b/drivers/dma/virt-dma.h @@ -277,6 +277,8 @@ int vchan_dma_ll_init(struct virt_dma_chan *vc, const struct dma_linklist_ops *ops, size_t size, size_t align, size_t boundary); void vchan_dma_ll_free(struct virt_dma_chan *vc); +struct dma_ll_desc *vchan_dma_ll_alloc_desc(struct dma_chan *chan, u32 n); +void vchan_dma_ll_free_desc(struct virt_dma_desc *vdesc); int vchan_dma_ll_terminate_all(struct dma_chan *chan); #endif =20 --=20 2.34.1 From nobody Sun Feb 8 13:48:19 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013040.outbound.protection.outlook.com [52.101.83.40]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B5C7B37755F; Wed, 28 Jan 2026 18:06:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.40 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769623568; cv=fail; b=GR1iSroEGpqU9QpucJCOIdA/xbeJTcJhg0cbbMjw3jpEVuPA3CV5wZlRFOqGzNaK0xdjuyJabhMMa0Q6s8/Rf/yZQjgczKVr3hsVX+XyvIqLKXcXx9gN+WrEuyUJ/Nadm1Nv25TAd/Jvdrk/vPHi1NRpYiqn+sLxvYcajbHJyxc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769623568; c=relaxed/simple; bh=GGybxVqDwFHeefQJ4VXNOM/LJgpNvM0KoiTvNlHzlDg=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=XwDK4T0kMZmri56CN3BfnyGyU+EV3MjC131iBkakfsAHFIT9qPdWoyfw2F1CgLtOsvLSZi44rvUR0Y7zMQvloTfM4jm7TizrYN5KwOmC9hIxtS5uC/VrWGgXGUrB58i7KVGnLYrujIPi4IfRoz9pCigiHGdUgiEQx8ZE8wxSZOE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=jlpdDKZH; arc=fail smtp.client-ip=52.101.83.40 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="jlpdDKZH" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=BE/Ta5daXewyjIveGhPGFI7tAApi+RVbD+iC8otnC0IuizjvM5BwAZy7FBAF5/mjGZTzAa5BHfV+NVgtxT/fK+Ctsk34OC4hONH4HRIX5oDhlRUruudjjvh/XQwQkA9BJryCsg5//C7wIByRq4M1Mozm0OC1A9XdghgYw2ha46GGRGqlAcMC9Tu28I5rzQtBLBZEkAPpap8XKNZbX2mMlGalMkeHl/DhztKo+cTeRNNUMDqKrvKYWJRsoWV4nvwOyfeRVLuZpY/aIX7ITNo4SKu0eGSpTrXcRfptlnNALlcfWHOKnwaf+Sz9qihB5UOQz561XrVNKAEwtdSXf3ovEA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=m/pa4I33FAqL4RoRKSe5v1LsrWdfSbAz0GychtgbwKE=; b=LvwxpCLHd89aNTeRtnlEdT5cdR+AXoF7ySbVrpVdBgGbmRM3/Nu3+dGp321JNsVIAF9YBgiDP1HlOZ7ovoDv6Ee/obqVEk91Cb6BbJAmhn7M58Nc7su+aJZD7NdLDapRlCJJFQd1Zuhh9iT6/2RKQDvDVGQDXJiSEOemDA5Fn1huziDghvQ6SKyRwjvHV1p8Ew5u/2amJzejFIlQh1bxZQ/8nJhX04hbmeRUYFClJh4JIfqdfnXH55y3Gj/nEhQledNnomNn5x1bvjxs5qdKHZ0S23vKGsGeUEF+8MIMw+UKFD/p8+cw7Q2UjrEidQyaT8Q9CW/Nglq6fds8f55pkQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=m/pa4I33FAqL4RoRKSe5v1LsrWdfSbAz0GychtgbwKE=; b=jlpdDKZHpCfeQxcHs+qu7vT+JEdki/THkeKTOhFZC380H5yS5hegP0A2NAwzGJHOT3s//2S/WuqbW7BNDuXajbotqGDAOTE0Ciaoyhvz7e+EyMSmIBAsGKC6PEW6P6PgQh2Bwx/9sGPX5CNSNC7p3k1gvSDbXRWWzICjRplYDh0X4anrwLiDWNn/sZQSWyWBlEGKX1y69bPCXWOdFw5rcqrGiGUmIrmG9u93ep9zjYNAdDkYOoACwkIaEOYYYUVAM+1ZRV2+0RbUKUI8t/cDV1B2bpQTsYPi2LRP+F5muGOicqdqzPGcXuIQ7fWFmFr5Es46VHPrQ6YHq3Y2Czrn4A== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) by AM9PR04MB8145.eurprd04.prod.outlook.com (2603:10a6:20b:3e1::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.8; Wed, 28 Jan 2026 18:05:58 +0000 Received: from PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588]) by PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588%6]) with mapi id 15.20.9520.005; Wed, 28 Jan 2026 18:05:57 +0000 From: Frank Li Date: Wed, 28 Jan 2026 13:05:26 -0500 Subject: [PATCH RFC 07/12] dmaengine: virt-dma: split vchan_tx_prep() into init and internal helpers Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260128-dma_ll_comlib-v1-7-1b1fa2c671f9@nxp.com> References: <20260128-dma_ll_comlib-v1-0-1b1fa2c671f9@nxp.com> In-Reply-To: <20260128-dma_ll_comlib-v1-0-1b1fa2c671f9@nxp.com> To: Vinod Koul Cc: linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org, imx@lists.linux.dev, joy.zou@nxp.com, Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1769623546; l=2942; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=GGybxVqDwFHeefQJ4VXNOM/LJgpNvM0KoiTvNlHzlDg=; b=UxDficT3vczAw/xw6eH1BTR7CFKYOP7cu5ukWBQaRvY8LvXU8HGL4hUVuAUTbGDIlba3tmUCh PRX4XEzHRlQDGRfp4/ocnZm0kXf+fSth/jMA/8QMkBEMhLLJodjygrz X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: SA9PR03CA0009.namprd03.prod.outlook.com (2603:10b6:806:20::14) To PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PA4PR04MB9366:EE_|AM9PR04MB8145:EE_ X-MS-Office365-Filtering-Correlation-Id: 183494ab-3cde-4a2c-c292-08de5e97e331 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|19092799006|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?cEdiamlNckxhdWt0b0VTaDRpVE1RV2x5Q1NsNS9YQnV2VTVyakNjV0RHV1dv?= =?utf-8?B?dHJpMWZYN2ltb201M01nK2VwV2NOTkNvSkpmcjI4K0llbzhqUkJIZXRPQzY3?= =?utf-8?B?dWNjaHNHR0ladGFWUnVnNTlpWmJJNUpzQVZNQkEwZFA3elkrL0hOS011MXpG?= =?utf-8?B?ZW12MXg5SUZjM0U3SlMwRDE3ZENNNGcwNWZYM2hkYjRRSDUxcG1hY00vSjBM?= =?utf-8?B?N2YxQTF4SUJUakxJVlpWcU10UDVFODBsOTVaMFlCZWI3LzFrN0hlREJGTkZC?= =?utf-8?B?dXRQMGNrNi9UTXpOdVpTemFqampuVkZFV2U0b0ZsTlRKMXFWUCtETGRoQzRK?= =?utf-8?B?dnFrSXBRV1dqK3g4UmZSUHlhVkUxMmpHd1dYMWZTWWpaOFgxV1pReGI2TnRm?= =?utf-8?B?aTV4eURGTG95czRncThWSEV0dEI1clcvK2JxQm5Cb1FWWlAwcExxTHBUekVO?= =?utf-8?B?TmlwOW8zME5vVW9SVGVKd2lvdERKamhuOVRlUGkwa2FvSmhkQ0tKQyt1TkVC?= =?utf-8?B?U1F6d2NMU25ZNmV5U0hDMnQrdlpJVUh6QnBTYVBBTTQ1dVo3WlB0TnVYVzcw?= =?utf-8?B?YWVIWmt3TGJaVEhWS2JtYnd0RVVqRjd4WTkzNHMrVDFuNnlpSDhWNDJvWEdO?= =?utf-8?B?SDRGc1ZDbHdJNTE4bzUyR3drd2luQTVCRytmTXlRTlJqZFY4REI5SWViS0lj?= =?utf-8?B?MGlqQU1hMlo1MXlPSlBYN0piQnp3ZjJtb0lFSWZwRUgwSGxMcWFzbTFSSllX?= =?utf-8?B?cDBsV1dLRTZBUXpmL0puTG1VdzE0ekZPWFlabGNuNmMvTGFxSUdiOGJnQ0hl?= =?utf-8?B?TnFVcU9CVWdKMnNqOFR1ZmNkT2x5dldnVUtrdHh2dTlrQzA4VHBkQXFKeVRm?= =?utf-8?B?bnBZWTF4N3N1b2RVMFgyZWRlNEZrbU1LemFoNnFoRWVUN1NYVlZaSWttZVow?= =?utf-8?B?Q3FBdU1ZZUZuUDVkdDM4Y2JSempheFM0MjRVZkpSWDN5QWNFQkkwZEY2WHhH?= =?utf-8?B?NHVsWVQ3ZlNsNFAwQlRFcUNURlZzZ2dZbU5WbXh1aHcxaXN5SWNrQkNuTSt2?= =?utf-8?B?dk0xTTJreXlsZGQ4ZFFkd0lmWjc0c1FZazVxTEliUzFZTlZHdGpNNkxIckUy?= =?utf-8?B?N2RIdDlycWFFMGpXVWEycUo3UkJ4YS9OdFp2YTYvRnZoYUtiak5uSUVOVGg5?= =?utf-8?B?dzFPYi9sSjAwem1IdzJ5WFJuTTAyOUtTaTVodlZKSXMyYkJnOXJoQmo4VDVN?= =?utf-8?B?bzc3Zm1IMHltTHpoTXJwWEtJOUNyeU5jOXJFMElKK3J5SjJLRjQ4d1l1aWEy?= =?utf-8?B?T2xscnJZRVdyYnNLZERqKzFRQ2VWcGIrdHRzUVNhMTNMWHk0NU52SlNsUUQ0?= =?utf-8?B?dnhrOWRQWUpvcEVHSWs4cUR2ZndCOVozU0IyUmRPcElQV2E2R1ZoZTlVY3dw?= =?utf-8?B?c1k5Qmp0d0J6WU1LRUNFaC82N2hZTUdTbzU4bjQ5S2pUaVVDY3hFOTgwTWtz?= =?utf-8?B?N1BUa1FWQXN6NlNwUTZ1UWFENHBiSkx0WktpOFFzTnlQRmppUzUzY1cwNTBv?= =?utf-8?B?RVdqaDdJLzhWZlJ0anJDeHRnUVVodUFhbWdaQjJUZ0JSdG0vZzdSZXFLZE8v?= =?utf-8?B?NlozbHEyK3N5aGppQSt5OSt4RDdoZFFidkdxYjAwdmxQd3NBV0MwRXBQcEZC?= =?utf-8?B?dUdER0NVVEFYbUU1cGp4eFRBSzBmYmJZTnNJbW5BazlOK1JWYisyWFNhamF6?= =?utf-8?B?NmhLTGJWVGdQdUFyaWFQZWxieUUrWEFNbUhWM2VSSlVGMXM3Z3Y1Q0xiczNP?= =?utf-8?B?dGlSYVFqT0ZwYjlGL2QzMUl3QngxSldsZERnTjVsMlovSXFzem1RbkFlRUs1?= =?utf-8?B?R2I4MHZ6RitSZzB3ZmNhYXNhL2x4TXhKdXRQY0NST1pXcDMydTJHYy9SWDdJ?= =?utf-8?B?NUZZOElITENHeitJSmR4WUphTUVGSkFma2FHMXltU2lmSFE5bk91UUZHbUwz?= =?utf-8?B?Nm5sSjNYenVYOEZibnR0aFduWCtsRmhvUXE2Slo4QWxrOXhMZVRDS3czdmky?= =?utf-8?B?em9TUW5HeFNsN1RWZW5rcjhuR0JVay8rUmE4UEhjRWl1T29RM0x4QWY3RGlO?= =?utf-8?B?Q2Vzemw1c2tmeGxEZjlCY2JKRjVGbm4rTVdsUDJxLzBKZ05pNnBCL21hblM3?= =?utf-8?Q?3+eMHKnrvx5jIygs00qTw6o=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR04MB9366.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(19092799006)(376014)(52116014)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?eWgrVXN0TnBLZUtKTkcwbzQxdStsbXVqVXNvZ1hkMHFQYWJaRVM5elVZaXgw?= =?utf-8?B?L284UVJERmdGRDlLZDRGSG01VmhVN01GdTVWL29XbmpsNkNsTW93a3ZGMHM5?= =?utf-8?B?clNYTVQraThHS3UvWHFKRngzM3l4d1FxRmxKOVl0Umx1MHR2Y1U0a0ZCWTNn?= =?utf-8?B?WUZHK01jWFVyV3NjbXlMS0JwdTl1UWQ2eW41TnJOczVEWWRRMllyTVZvNmJt?= =?utf-8?B?YUtadVV2OWh6VVlxa1ljVHFMMFZmRjlBOEd6ZE9jdTY4YVNUbXoxdHYrYTVu?= =?utf-8?B?WEg4S0d6WFgweHJpd05pMjhUUFNyT1hlTDFjY0FqZ0lMOS9MNjZndmtGRjhm?= =?utf-8?B?M050eEljZ3BLNzdONloyVXQ1YnN2RDhHb1h5a2UwY0lMREhHRHBwUUZScVlR?= =?utf-8?B?T1ZrYmJzMmJ4cFlNSWxmUVRGSVF4cnZwNDZVenhQbnJzUHRnanJPZWl5ZkdP?= =?utf-8?B?RHh5ZVMvcUs1SmFxME9SWTZiTWkzaWxuS2t6ZS9QdVNQRlJxMHFxZUFLR0pq?= =?utf-8?B?YVcybExyNXhNbDhMcm9WWGdnM09SeVpVUTZWR1M1YUlHaDlPMFFrckRoc2FW?= =?utf-8?B?UFdteGVKRDRjRkpYRlU2ZmVGajNQeTA5ZnNJem5MaU5PVkpuRVZJUnppeG5a?= =?utf-8?B?Y2NXYzlLdHI0SkxjRzRCRFpUMDNiVkx3T0lQU09SOHVsaEVLMDMwQ3dKSTAv?= =?utf-8?B?YllINHEyVXdYZmgwWi96c3R2QUkrQndWUlVFTGtXU1dXODh6U1pnaitkb01w?= =?utf-8?B?OXhoMFZReVpYR0xLMEFqOGsyVnBuYlJaU0o1L3FXenIxaXYwM3hTeTV5QVM4?= =?utf-8?B?eVB3UitwUHZrbkVNZCthSDVPRWQrZm5kV0orWjhwNGkxWWV1NkE1SExkZ1dQ?= =?utf-8?B?ak52MS9EazB3aWhkajEzZy83bXh5N0xmUjBVY2x5cVhPbkwxZy9oYWcvWFgz?= =?utf-8?B?UW5VYTN3ZG95aVdwU0VhVWovWDFLUDlMcnR2VmpKbzZyS2FZOHBYWnRTbjdt?= =?utf-8?B?Wjd1Qm1oOEdiajFxY1A2SVJDdVB3c0w3R2cyTnFwZ1ZXaVl0eG5rV2pKbWx4?= =?utf-8?B?WGFGc1lwdDQvL2V6NFZDYXJTME5lSXNldEhKaGNGRDBLVGU1VWFPTnErWmlm?= =?utf-8?B?cW9zOVFReGt1d3dvMUZzcmNXZmdkQ2twNnVXc3VacVFJdEkxdVRtZ0w1NWdt?= =?utf-8?B?b2piTDB5N1JxRWRHTUtDeTlBOERnam5CRWVxTC92K2FZR1FZN2hTbnJVbDRs?= =?utf-8?B?dmMwaXYvV1dPZlhvRkNzOW1vT3RhQ3J4SkhqODNNOGozVWlBcW0zUElXSWls?= =?utf-8?B?bHhhcXhmY2FydnhXQmpkeXk3L2Z3VVVHQzBkNEp4bWJEYzFMV3NCMTRqSXZY?= =?utf-8?B?bzBYRnZrNWU0RTBYcHFBTUFLbHd1bzc3SmhPd05pMDczRHpPN0lqRXh6NkNz?= =?utf-8?B?M0tORS9HUHBJR1VsYmE5NWc0TUdlUTZCQkNGRm1ORGNJNGlhbkxOM2FLazBO?= =?utf-8?B?UnduVU54Y3VVTmhOeFMwMkh2SldKTjNoUEhpL2tGb04ydURkWDNBT3FmUVRn?= =?utf-8?B?RWFZUU9aVFM5Rk1xWWVwdUdKU1YxbzVKc0FwWms3T2RUTFZ1c21CeDR1ZS9j?= =?utf-8?B?U2RGWU9ndW8xbUNmT1RBMmVTRWswdEtNSjB2TXNiZEorTG9WRXdpMXRHYzJy?= =?utf-8?B?VGZJWXYyYWsxYjdPa2ZCMmdIczZlM1RzUzdXUDA3WFRpaXNOanBXTXhGbS9Y?= =?utf-8?B?bi9QRHJkU1E4L28vV3BMVG16cWhIMjVTN0h0NjU3STczK1lBdzdKWkI4NHFj?= =?utf-8?B?Nm5SSG1sOERhRGNJZkVWb2VLZkEyRTA5STFMdGdOdkR6akRLVWllc1NpYW5I?= =?utf-8?B?SmFhaXFmTDc5TTBsRG9iWEVXaU9ucWdtNjk4QVZqaXRzWW55YTdhelI5YjRn?= =?utf-8?B?TXhnaG4yTzlGaEJrOHJETzVnb0NPTDBOOFJ6cXEzNC9lZ1c1RGREWUVLRURJ?= =?utf-8?B?SzdMRUsrZE5LVzNpczFLVk9nTHZtMzIxVVJFVnVhdGI2R215WDdkSE1tUXJs?= =?utf-8?B?NXRqV2oyZGRaN2txS0hEcTU3SitvRHNMRUdqU3NWTFhIUTJTTFdMc3ZRK2Ja?= =?utf-8?B?SkVnZlhxSllCSWhBSHg5REdQVElNRHQxTElmTmgyMUtyM0lNeEhxR2wvUGhQ?= =?utf-8?B?R2ZVT0lHaE1KeFFBWXVRc2NOKzZyMVRSUFgrdkJ5Ylpqb0RjUmxQMlgwUngw?= =?utf-8?B?MHNkU28vNGN1Uy8yM1BJLzlGSFZkUE0ya0xDTTRaWXd1Z2NHMVBzNGdmZHV1?= =?utf-8?B?WDd0RlVYN0pCbVBVMnFTV21LRkJOeGpoWThtN2VTUDJaTzhOZVZxZz09?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 183494ab-3cde-4a2c-c292-08de5e97e331 X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9366.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jan 2026 18:05:57.9159 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: acCuQFhxeDu7hEhltABf8foL3tJuQflsAt4M9oLBJGsSNHy2qDt59PHKJbJivQSG3hBixHXuXXmh4P8nbxekOw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8145 Split vchan_tx_prep() into vchan_init_dma_async_tx() and __vchan_tx_prep() to prepare for supporting the common linked-list DMA library. struct dma_async_tx_descriptor already contains the dma_chan pointer, so drivers do not need to duplicate it in their own descriptor structures derived from vchan_desc. Previously, dma_chan was NULL during descriptor preparation because vchan_init_dma_async_tx() was called too late. Initializing the dma_async_tx_descriptor earlier allows drivers to directly access dma_chan during the prepare phase. No functional change. Signed-off-by: Frank Li --- drivers/dma/virt-dma.h | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/drivers/dma/virt-dma.h b/drivers/dma/virt-dma.h index a15f9e318ca5ec7fd3c4e6fc6864ad3d1dc3eaa5..ad5ce489cf8e52aa02a0129bc56= 57fadd6070da2 100644 --- a/drivers/dma/virt-dma.h +++ b/drivers/dma/virt-dma.h @@ -80,17 +80,22 @@ struct virt_dma_desc *vchan_find_desc(struct virt_dma_c= han *, dma_cookie_t); extern dma_cookie_t vchan_tx_submit(struct dma_async_tx_descriptor *); extern int vchan_tx_desc_free(struct dma_async_tx_descriptor *); =20 -/** - * vchan_tx_prep - prepare a descriptor - * @vc: virtual channel allocating this descriptor - * @vd: virtual descriptor to prepare - * @tx_flags: flags argument passed in to prepare function - */ -static inline struct dma_async_tx_descriptor *vchan_tx_prep(struct virt_dm= a_chan *vc, - struct virt_dma_desc *vd, unsigned long tx_flags) +static inline struct dma_async_tx_descriptor * +__vchan_tx_prep(struct virt_dma_chan *vc, struct virt_dma_desc *vd) { unsigned long flags; =20 + spin_lock_irqsave(&vc->lock, flags); + list_add_tail(&vd->node, &vc->desc_allocated); + spin_unlock_irqrestore(&vc->lock, flags); + + return &vd->tx; +} + +static inline void +vchan_init_dma_async_tx(struct virt_dma_chan *vc, struct virt_dma_desc *vd, + unsigned long tx_flags) +{ dma_async_tx_descriptor_init(&vd->tx, &vc->chan); vd->tx.flags =3D tx_flags; vd->tx.tx_submit =3D vchan_tx_submit; @@ -98,12 +103,21 @@ static inline struct dma_async_tx_descriptor *vchan_tx= _prep(struct virt_dma_chan =20 vd->tx_result.result =3D DMA_TRANS_NOERROR; vd->tx_result.residue =3D 0; +} =20 - spin_lock_irqsave(&vc->lock, flags); - list_add_tail(&vd->node, &vc->desc_allocated); - spin_unlock_irqrestore(&vc->lock, flags); +/** + * vchan_tx_prep - prepare a descriptor + * @vc: virtual channel allocating this descriptor + * @vd: virtual descriptor to prepare + * @tx_flags: flags argument passed in to prepare function + */ +static inline struct dma_async_tx_descriptor * +vchan_tx_prep(struct virt_dma_chan *vc, struct virt_dma_desc *vd, + unsigned long tx_flags) +{ + vchan_init_dma_async_tx(vc, vd, tx_flags); =20 - return &vd->tx; + return __vchan_tx_prep(vc, vd); } =20 /** --=20 2.34.1 From nobody Sun Feb 8 13:48:19 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013040.outbound.protection.outlook.com [52.101.83.40]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C929C371068; Wed, 28 Jan 2026 18:06:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.40 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769623572; cv=fail; b=ZtUbKIi9ge2/d+XHn+S1nxjzIF24Zp8GNiOGXBt/YGNrQf3XL1CZ56Y/Vqap3G73D+IiSezSvsahXpkjG6uffn7+kq7/9vCwlzLp9GqvSqGqw6he/orAs6YMxLSS5hir7lFk32bNVLKIO5fF2D6V4WVkico9pf9qTDTTPF3Irck= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769623572; c=relaxed/simple; bh=aBObFsqmh0Sjy8mMQzBNAmk5iWcB6vXMt417dN83Tjc=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=VUgi50FGKXCI5S41VEH7XiiAlTi4xr4p7BQpHPf7AYvX2Uf47+l1SB/L6OrtbvkkmTs1chcjjOuNunbDk9IIem2/Ccapg8YNWGEROIovtyRmF2Z59BAWOXfUwJNPWeJRld27xAxglQMR9hLPoXap/v6DBqvHQLpDu2rUZ55pRGY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=I0EVMuQj; arc=fail smtp.client-ip=52.101.83.40 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="I0EVMuQj" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TwlZ5iXm1BcD1Kx1Nl+qmldgAO7bi48CZzGgw15MB1ahOTou+ta1fPzyeF1rMe5uyJoACO6skmODncqAhTH8RRycjP7XPj5TiZsSyJ2V7bsB9NluphLPFCOrlE7YMi3meTdzoLO7OANTjVPW3Oelxc96XgDmtPlQKBObtSET2X1rt8dKWJzcldqH9Ja9Lta1e7XZwZ7ijFWQ4oxCdByKy3m6UB4mzVieyAT85h2EoOQqeGxiUnnGvGjq1bkyF2eyInxMejgyc+TJyp71LqKO2GoVebw8INyFnOYo29MHUEAsjjRfFTHm8UhQGf+fcZbEEt0L0Xnt6HQiaAvejIy4Pw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=4de+dKq3kT3Kpbd6uyaBWOrLUJzAsd2Jw3E8m7RY60k=; b=rkANHCmrp7u0vtzgBCx8swxmihgMlAD/5i0U7XqD+ziWb4CF2FgTlDF8yYK3DX3PzbNCo0WWXCKGXEz5YvM2N8VLIFriOstg29x+X+jg1DKl7y4trWZaygNJl5sd57woMEtf9sMR286Edn7K1PkJS8/Eiz7WTysqBleWIJyTS/BfpogANQkD4zGyrfdCapnGOIzeAWhtJsny2SolI0magLMwyx0O5NvrzzvGV3pLqhdg9NNH6AfUl7FGkyUkUnF+6kwncc0xW8GPX8mOinqTFfJpRAJVBfYrfzvN6Q8oqQVXmjWSu8zKncAB3D0oiOYQdQ7fOMh9eo9tCfhoW1pP1Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4de+dKq3kT3Kpbd6uyaBWOrLUJzAsd2Jw3E8m7RY60k=; b=I0EVMuQjlvrO2oPkwtLLHfVDU34oINJa5RfmPC+3EWmJknSsABYePdQrG37VXs1F3KV18bsrZsrlR9jpTRP+vyofMi2I5d23o754W+XJx1B0+El/OEF2BQWyejLfenpV+1Yoh5kiISpgAnTIvwmr4ohwS9h5b5ust0wJFqSm3D1eVlk/nYbYnp6EcqLQj7qAmhrWrNOSC/HBK2V7v4n0N+ekDwrcH1fa1kDnFcfDlge++Jc6cFNn9QO+nM3z0F/GfYYjU+F6ArEtXWXTBgLzr8nn/0n+kl3ZEA2B/02s3vV0dmzSDuY72us/mfY28vdut/KAr1tozaHcs6GVp06X+w== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) by AM9PR04MB8145.eurprd04.prod.outlook.com (2603:10a6:20b:3e1::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.8; Wed, 28 Jan 2026 18:06:00 +0000 Received: from PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588]) by PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588%6]) with mapi id 15.20.9520.005; Wed, 28 Jan 2026 18:05:59 +0000 From: Frank Li Date: Wed, 28 Jan 2026 13:05:27 -0500 Subject: [PATCH RFC 08/12] dmaengine: Factor out fsl-edma prep_memcpy into common vchan helper Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260128-dma_ll_comlib-v1-8-1b1fa2c671f9@nxp.com> References: <20260128-dma_ll_comlib-v1-0-1b1fa2c671f9@nxp.com> In-Reply-To: <20260128-dma_ll_comlib-v1-0-1b1fa2c671f9@nxp.com> To: Vinod Koul Cc: linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org, imx@lists.linux.dev, joy.zou@nxp.com, Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1769623546; l=13067; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=aBObFsqmh0Sjy8mMQzBNAmk5iWcB6vXMt417dN83Tjc=; b=8tGfBwGkTcyWalm7KqF6H3fDj397ja1ii4EsMKoKC2BaNWGzs9c66LxOd//98Jz6g9TB3NPBJ na6AoncYKCaAY129KvWniQya1BSAs54O20SUbbEeDh2uBUpmUcl4PLF X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: SA9PR03CA0009.namprd03.prod.outlook.com (2603:10b6:806:20::14) To PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PA4PR04MB9366:EE_|AM9PR04MB8145:EE_ X-MS-Office365-Filtering-Correlation-Id: 2d28206b-d1a9-429c-e8f3-08de5e97e442 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|19092799006|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?ZEtjZU85ck9VRDRrZ1dFL29LY1N3ZW9LeVVpY0RYTG4ybjdtcXAwSHEvaWsv?= =?utf-8?B?SFVWb1FDSG5ySllFczVpU01xb2kwT1JjTnhtZTNxRjYwalZVZEdNdXM3TTU1?= =?utf-8?B?ckh2SzZXZGJ5aTRaOW5pdDF5aHVjMFVMY04xMTFPNkpGUTdLaW1XR0dzVzkr?= =?utf-8?B?WU0wUVk5Y0NwYVNzenhnMFFTYTI4bFg4QjV3U3FKM3FOYnFrdUNYQm4wMnJo?= =?utf-8?B?WlBGdmRzcGdQSGM5aW03Zm9sZGdldDRYTkN5dy93QkU3bTEvVTd6TWQ2cVJa?= =?utf-8?B?UEtPYUppMVlUVVUrVTNPTlRtVFg5b0pKZFlOcFBrOXJOTlQybHdacFRvUGFo?= =?utf-8?B?VXpvbkNKRHh4eGU3MldOU1U4aE9NWERlWnNZcjY3TDJtbitPVnhyYVZlcVNN?= =?utf-8?B?SkVZc3N5UFlBWDdFK1RWb3ZGMlZ1WFdJVE0zcjFNbU9hOTJDdkxnQnlwSk9G?= =?utf-8?B?cEpZbjlFQWZEZ212SlM2QW0xbkVlLzhNeUZMSTl3ZUJoUlJ4Yy92bVhPN0kv?= =?utf-8?B?MU9aeHBQdnZaN3pmckdPbEliK1lWMHdFOHFydndjQzBmMEFxYUFuNWJLQ2dz?= =?utf-8?B?NmNFdE1vb01ta3cwb2dBbEhZMG80NUVyQmkzMjU1R0drQkoyM01sZjRFd2xi?= =?utf-8?B?bWtMNDNlT1pnM21aWlU3WDJJOEtvZlBHM1Boa0ZUenN1ZlYzTmVpaHJ2Z1pC?= =?utf-8?B?SzNLb2hYZXUrcFhsems5R1pYREd1UjRieWRRVy9rVG4zK2ZCOTdaVXQ2aElX?= =?utf-8?B?NDE5T0JRTCtFYUtKWDAzVENuVHNvOG84TTF5d1A0QTc2SzhIUDdwM0NLTjhw?= =?utf-8?B?T2VnZnJBdzJhMThvRWtNTFNnZk15d3ZrSlpQT2FieFJxZ2MrUi84ekhyUHla?= =?utf-8?B?VzFqWXllSVNTeDl3SDdtOFZSQ3ZBMDQvTFpMUUVubGhNNEFtTnhnVDVsdnMz?= =?utf-8?B?V1ZSL0pMamtDdHdzV0M4MWRaQWFmSXBsTjcwdnF4SzdQdU53YWJDUXh0N0FT?= =?utf-8?B?enlHMXdzUUdleGhIRU4zeTJMRXdjSGM2dUxVeWJaVHJ2N1puNU9jWERtMUZu?= =?utf-8?B?NGc0REQxREF3eFMzYkVPL2ZoUmR3RlQ1d2pjQ1kwSzJVdC9tNXROYjhlVzhy?= =?utf-8?B?bDA3c2IxeUExd0luNG1MYTExd2k4SUdrRWZ4QW9HSlJoZStvbXBZdVBUdDFq?= =?utf-8?B?b052SHFQU3RCTnpGbzl5WnNHdjhvejJGOFJnSDVnM1dFemxhSUxleXFMKzR3?= =?utf-8?B?d0NUQllOdXRPbjVhSFUreFpXeUt2TERMdlA2Q1RLbmF3VUNIeE1abjN5Rk1W?= =?utf-8?B?MlhjVENyQVp4YjZBeWlQVWpmMjRydzZnTVNRaFI1UXViNlVPbG8zWEZJQlZa?= =?utf-8?B?TXdKSFgzNXo3ZlFtOS9xelVNZUZLSUtBTHh0SEtLU3hGeWRrdm44dzQ2RWZB?= =?utf-8?B?MFQxNU9sYmU4UWZxZHJlS3ZxbG9qMnRYYzgxMmIzRHM1UkNWQVAzeGVsUzZ3?= =?utf-8?B?dnhRV1lRaHAyN3BmVE1sVzhiS3NURkVPcjc3UnI4Q3FWMC9UbXZBU3lBZEJ2?= =?utf-8?B?TGVwVG5MamN4WnlOazh2bnJnS2hsbWxVd0k3aWNiS3c4NlJSMUlvRGFRRExQ?= =?utf-8?B?dVhPTDlscEQyZG5rUnAzbnRhSHMzMGtuNVJzRkMwQU02MlYxK0RjbnhqYm1y?= =?utf-8?B?MGZDc2NaUmxCZDBqZ0JGWnRGRktQOWxVeVR1bjNhRnBjQkovTGh2SldJSVhv?= =?utf-8?B?ZGpNUUxmRzl2cVo4aG5qTytsdnV1Z0RwMktIa1Bqd2RPNTdEQXIwcjRaV3BL?= =?utf-8?B?OXNmanZydU5PTkN6QjhkWTk4ckVWKzdyUXkzbnYrcGhJUm83REFOa0txVlJR?= =?utf-8?B?YmZPQnNrY2w1MDI2TVQvcU84TVRiWUNERUVYN3ZsVVlOOEFsL2lPTDlYUmcv?= =?utf-8?B?UVVBQ082MFRtYk9sa0dvR2pqQS9Dd0R1QzdxN3crT2xJVjdkckZORU1PVlN1?= =?utf-8?B?UEhpUWxoMGxkMnR0d04vNXRadDU2c2sxenVHTkJ6Q2VMK3lJQlNYdGI3Wnd3?= =?utf-8?B?by9ycmx5eDF6bW5wazQwMWdEMWN3bE9nQW1RemhqQTdMMnlMVUdjVytVNjZJ?= =?utf-8?B?ZTlHQmlFcXN2aTJIRlhuYm93WEhIa1pPNGU1MXpueWN4RTBBQ3JxK0FqVmk1?= =?utf-8?Q?D7mXSSbRpNW1Erqjx6e3Cak=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR04MB9366.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(19092799006)(376014)(52116014)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?T3JKRDluMWFUNzF0Rjc3WE1jWTJCWDlzZnRPWGlGRFpNVlp2MFZtM0VwYU80?= =?utf-8?B?RXdRZmNsdWFGaldNdHVnOXdvdEpDUXlkUm1rcFIvcjRwTzJMQVZFL0ZXeGd3?= =?utf-8?B?bUlmdDR0dm5FRllrSkEwcGNMdTE1NlZBVEVOUVBnZEtaSEpiSnJNUFFjNUFR?= =?utf-8?B?ZE9IbXkzZmlEVnJOL1lETjRnY2gvRHI3ZGVIWUxQaFlVajN1M1pPWERwNklp?= =?utf-8?B?ODhwMUlhYjZrUzdsVHdkeGtXZXliQ3VBK25YS3dmbE1BQ1EvRGpMV05zOW1E?= =?utf-8?B?VmJySW91enhHdWJsK3B2Y3lXRGVnb0pRNjBqRkQvME85RWlteHBvQjJJdFAz?= =?utf-8?B?cmhUdUVKbXBsdVZ5KytJbVY2elVOL0VORzlyT3pNQWFxSkQ1QzlDMDE2TlNH?= =?utf-8?B?VXZldFRKQnorNURqTU14eUZRZy83WWVVVCtmQUhzSUlWNVRCdldPV1pwcUdG?= =?utf-8?B?aFRTdmVpcnBudXRHTHJ4WFg0Z04wRkFqeVNIUmhXQ2lkR0pFUys5SWt3d3FM?= =?utf-8?B?UEZpRVFwdGNXWkF2enJIcllmNUFWTnd4MkhHSE1kdERWVjdrSlZaN0srUW5w?= =?utf-8?B?c0RObnlZZnhMcmhpVVJma29KbzBLelpxWHkwYWx5MGtEaU11TTV0Yzd6VWd5?= =?utf-8?B?SzlEWG9RcmlBUndnOVgyeUxYNzRKQ1Y3NzdiWVFYUlFsODB0cUVJVlVYb0Q0?= =?utf-8?B?TUdhK0lpRzNuMzdtbk5KUlozcGVOTDNHS0FMV1M3cmNodE1sZkdRRXJxQ2FY?= =?utf-8?B?R01VN3ZwaFVia1ZTTWNEODNlVkIzdVJQclNJbXM1MVRiLzhQU1psYXUzZzJF?= =?utf-8?B?aVNPalpzQjFCT24xS2FLMzUyc2U5d3lKRG5iRGs4c3c2NWNVenMrYldjbWZt?= =?utf-8?B?UWV4NUc4aWZjRkVySWpiWXppMkpzMmtBZk53YUpibk02K3B0WFdQTGtJd04w?= =?utf-8?B?OGhpMkl4SXJieVdGUTIrWDNxRk9yb2tCek1pYit3eXVnZllpRENGekNZQkIz?= =?utf-8?B?S3JsL0hocHZvL2pOenhNbThWMlhQVXl4ZUhHTjhqVzZmMDY3ZC8xWE9ncnRj?= =?utf-8?B?czM3c2tJN0xCVGo5aGMrMlcrTFNpcDhVaFFScldqYWYxenh6c0xxdWlPSnBN?= =?utf-8?B?aGgzYnZRUFpPeGlDR3F0N0ZETkd6cEZBcnFQKzFFcUtOSTIxeFN2MXBBK0hX?= =?utf-8?B?ditkUzUvWFVEYlJJdng5MExPeTlqVC9zMDQwSS9RTVJXQUpiMjhtRmlob3FN?= =?utf-8?B?VmdIRk01TitReFJnN1FPSUFJRjVNUlptZXZzeGU0SzV1ME1LeXdhUFhyUXc3?= =?utf-8?B?UkdlSklQS3BKZzdiTTl0dW8ycWlPS0x5b0lBKzlIT081d2tJa1Q4bEd6aFNP?= =?utf-8?B?NTFQWjlEZXJybnp6VGhwQUtUMXB0WWNZRE5sbXRqYTFBTjZFT01RME92WTBU?= =?utf-8?B?dWJHeFFwT21NanRvc3pZeFpzeGI0WitLbmJHYXBudWdQRzQySGhLcytDQ1dU?= =?utf-8?B?cGJocU82RVh1RFY3Y1k4aWNYQ0lHL2J2WEFpVjZnNWlGa3RBZUhLTnJCUTJN?= =?utf-8?B?Q2h0dHQxWEpYSHAvMlhVRUFQZ3lGbEw1bm5KdWpWWWhZQmlMMXdPL2NSdDdB?= =?utf-8?B?anlLUVBPcXN3b3huMk1CcmVRcjJWM3htMnVQYmVkRkpvNlNsaldQdy85eHYz?= =?utf-8?B?dGxmYUhSQndqRlU5dnlFeGw3U0ovdUxNUUlVY0JQdERoZ09lcnN6L1I4ZDd6?= =?utf-8?B?d0RTYlhDMFBiYjdLVFp5dUt0enAxK1lvKzNCa2FwNG5MbzY5U0tONEd0b2x1?= =?utf-8?B?cW4yb3BuZWM0U1RVcWpLSmVndjJpS1UrTUVqbjBjNWxBMUF4eXdtck55SW1y?= =?utf-8?B?THF5ditDZS9pZTZiai9BQS9oK3VBVVRXVVV0UVp3bHd4aTZ0K3o5TzhGNFZ0?= =?utf-8?B?Mk9WYlF5R1Z3bmNKTlRvelFjOU5CNXhHTHNyUitRZVQwck9ZYitDZjY5ZnI2?= =?utf-8?B?c2h1UUVpcTAzRUQ0Nk52UXp3UDJCVVB6V0ZwdGVhVHNyL0dCZ1ZZZEdrTFc5?= =?utf-8?B?SDBHcFFqbzAzYTUxTnUxOWNzU1BWWDJkSVRmS1VUTG4yRzVVK1cwRE13WjZh?= =?utf-8?B?ZnphV2pzK2NqdFpLL0R2R3lEZkppODlEdkkxM3ZIY24xQ3pKRnhWWWdtaVh6?= =?utf-8?B?aFZOdTZwQUlJMjFMaVV1L3hFNGs4Q1JxL2F5VWdxSjR5bnZjM3QreHN0cjJs?= =?utf-8?B?YzNrcVhqY3lhSWhWdU5GUEd0SkZ2WHZhbGlzQmpveWJRM1BCeFhaZ3dhUEli?= =?utf-8?B?MjkzS254L0pMUnFEenhsUlpxRks2NUdBM24zS2xiZDZFZUZnQnFudz09?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2d28206b-d1a9-429c-e8f3-08de5e97e442 X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9366.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jan 2026 18:05:59.8420 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: F5xunEz01yGIaSk0lQndXc3rdlEDjwfoLUiTxXkd7S3XY14KAr6OrW+zVbU/DXd8ghhlGn1MDmVyn6IQggicAw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8145 Create a common vchan_dma_ll_prep_memcpy() based on fsl_edma_prep_memcpy(). Add .set_ll_next() and .set_lli() callbacks to abstract DMA descriptor format differences between controllers, allowing DMA engine drivers to focus solely on hardware-specific descriptor programming. Signed-off-by: Frank Li --- drivers/dma/fsl-edma-common.c | 123 ++++++++++++++++++++++++++------------= ---- drivers/dma/fsl-edma-common.h | 3 -- drivers/dma/fsl-edma-main.c | 2 +- drivers/dma/ll-dma.c | 39 +++++++++++++- drivers/dma/virt-dma.h | 12 ++++- 5 files changed, 127 insertions(+), 52 deletions(-) diff --git a/drivers/dma/fsl-edma-common.c b/drivers/dma/fsl-edma-common.c index 20b954221c2e9b3b3a6849c1f0d4ca68efecb32e..a8f29830e0172b7e818d209f201= 45121631743c3 100644 --- a/drivers/dma/fsl-edma-common.c +++ b/drivers/dma/fsl-edma-common.c @@ -461,17 +461,17 @@ static void fsl_edma_set_tcd_regs(struct fsl_edma_cha= n *fsl_chan, void *tcd) edma_cp_tcd_to_reg(fsl_chan, tcd, csr); } =20 -static inline -void fsl_edma_fill_tcd(struct fsl_edma_chan *fsl_chan, - struct fsl_edma_hw_tcd *tcd, dma_addr_t src, dma_addr_t dst, - u16 attr, u16 soff, u32 nbytes, dma_addr_t slast, u16 citer, - u16 biter, u16 doff, dma_addr_t dlast_sga, bool major_int, - bool disable_req, bool enable_sg) +static inline void +__fsl_edma_fill_tcd(struct fsl_edma_chan *fsl_chan, + struct fsl_edma_hw_tcd *tcd, dma_addr_t src, dma_addr_t dst, + u16 attr, u16 soff, u32 nbytes, dma_addr_t slast, u16 citer, + u16 biter, u16 doff, bool major_int, + bool disable_req) { struct dma_slave_config *cfg =3D &fsl_chan->vchan.chan.config; struct dma_slave_cfg *c =3D dma_slave_get_cfg(cfg, cfg->direction); + u16 csr =3D fsl_edma_get_tcd_to_cpu(fsl_chan, tcd, csr); u32 burst =3D 0; - u16 csr =3D 0; =20 /* * eDMA hardware SGs require the TCDs to be stored in little @@ -509,8 +509,6 @@ void fsl_edma_fill_tcd(struct fsl_edma_chan *fsl_chan, fsl_edma_set_tcd_to_le(fsl_chan, tcd, EDMA_TCD_CITER_CITER(citer), citer); fsl_edma_set_tcd_to_le(fsl_chan, tcd, doff, doff); =20 - fsl_edma_set_tcd_to_le(fsl_chan, tcd, dlast_sga, dlast_sga); - fsl_edma_set_tcd_to_le(fsl_chan, tcd, EDMA_TCD_BITER_BITER(biter), biter); =20 if (major_int) @@ -519,9 +517,6 @@ void fsl_edma_fill_tcd(struct fsl_edma_chan *fsl_chan, if (disable_req) csr |=3D EDMA_TCD_CSR_D_REQ; =20 - if (enable_sg) - csr |=3D EDMA_TCD_CSR_E_SG; - if (fsl_chan->is_rxchan) csr |=3D EDMA_TCD_CSR_ACTIVE; =20 @@ -533,6 +528,71 @@ void fsl_edma_fill_tcd(struct fsl_edma_chan *fsl_chan, trace_edma_fill_tcd(fsl_chan, tcd); } =20 +static void +__fsl_edma_set_ll_next(struct fsl_edma_chan *fsl_chan, void *tcd, dma_addr= _t next) +{ + u32 csr =3D fsl_edma_get_tcd_to_cpu(fsl_chan, tcd, csr); + + fsl_edma_set_tcd_to_le(fsl_chan, tcd, next, dlast_sga); + + csr |=3D EDMA_TCD_CSR_E_SG; + fsl_edma_set_tcd_to_le(fsl_chan, tcd, csr, csr); +} + +static int +fsl_edma_set_ll_next(struct dma_ll_desc *desc, u32 idx, dma_addr_t next) +{ + struct dma_chan *chan =3D desc->vdesc.tx.chan; + struct fsl_edma_chan *fsl_chan =3D to_fsl_edma_chan(chan); + void *tcd =3D desc->its[idx].vaddr; + + __fsl_edma_set_ll_next(fsl_chan, tcd, next); + + return 0; +} + +static inline +void fsl_edma_fill_tcd(struct fsl_edma_chan *fsl_chan, + struct fsl_edma_hw_tcd *tcd, dma_addr_t src, dma_addr_t dst, + u16 attr, u16 soff, u32 nbytes, dma_addr_t slast, u16 citer, + u16 biter, u16 doff, dma_addr_t dlast_sga, bool major_int, + bool disable_req, bool enable_sg) +{ + __fsl_edma_fill_tcd(fsl_chan, tcd, src, dst, attr, soff, nbytes, slast, + citer, biter, doff, major_int, disable_req); + + if (enable_sg) + __fsl_edma_set_ll_next(fsl_chan, tcd, dlast_sga); +} + +static int fsl_edma_set_lli(struct dma_ll_desc *desc, u32 idx, + dma_addr_t src, dma_addr_t dst, size_t len, bool irq, + struct dma_slave_config *config) +{ + struct dma_chan *chan =3D desc->vdesc.tx.chan; + struct fsl_edma_chan *fsl_chan =3D to_fsl_edma_chan(chan); + void *tcd =3D desc->its[idx].vaddr; + u32 src_bus_width, dst_bus_width; + + /* Memory to memory */ + if (!config) { + src_bus_width =3D min_t(u32, DMA_SLAVE_BUSWIDTH_32_BYTES, 1 << (ffs(src)= - 1)); + dst_bus_width =3D min_t(u32, DMA_SLAVE_BUSWIDTH_32_BYTES, 1 << (ffs(dst)= - 1)); + + fsl_chan->is_sw =3D true; + } + + if (fsl_edma_drvflags(fsl_chan) & FSL_EDMA_DRV_MEM_REMOTE) + fsl_chan->is_remote =3D true; + + /* To match with copy_align and max_seg_size so 1 tcd is enough */ + __fsl_edma_fill_tcd(fsl_chan, tcd, src, dst, + fsl_edma_get_tcd_attr(src_bus_width, dst_bus_width), + src_bus_width, len, 0, 1, 1, dst_bus_width, irq, true); + + return 0; +} + struct dma_async_tx_descriptor *fsl_edma_prep_dma_cyclic( struct dma_chan *chan, dma_addr_t dma_addr, size_t buf_len, size_t period_len, enum dma_transfer_direction direction, @@ -555,7 +615,7 @@ struct dma_async_tx_descriptor *fsl_edma_prep_dma_cycli= c( return NULL; =20 sg_len =3D buf_len / period_len; - fsl_desc =3D vchan_dma_ll_alloc_desc(chan, sg_len); + fsl_desc =3D vchan_dma_ll_alloc_desc(chan, sg_len, flags); if (!fsl_desc) return NULL; fsl_desc->iscyclic =3D true; @@ -615,7 +675,7 @@ struct dma_async_tx_descriptor *fsl_edma_prep_dma_cycli= c( dma_buf_next +=3D period_len; } =20 - return vchan_tx_prep(&fsl_chan->vchan, &fsl_desc->vdesc, flags); + return __vchan_tx_prep(&fsl_chan->vchan, &fsl_desc->vdesc); } =20 struct dma_async_tx_descriptor *fsl_edma_prep_slave_sg( @@ -638,7 +698,7 @@ struct dma_async_tx_descriptor *fsl_edma_prep_slave_sg( if (!fsl_edma_prep_slave_dma(fsl_chan, direction)) return NULL; =20 - fsl_desc =3D vchan_dma_ll_alloc_desc(chan, sg_len); + fsl_desc =3D vchan_dma_ll_alloc_desc(chan, sg_len, flags); if (!fsl_desc) return NULL; fsl_desc->iscyclic =3D false; @@ -719,36 +779,7 @@ struct dma_async_tx_descriptor *fsl_edma_prep_slave_sg( } } =20 - return vchan_tx_prep(&fsl_chan->vchan, &fsl_desc->vdesc, flags); -} - -struct dma_async_tx_descriptor *fsl_edma_prep_memcpy(struct dma_chan *chan, - dma_addr_t dma_dst, dma_addr_t dma_src, - size_t len, unsigned long flags) -{ - struct fsl_edma_chan *fsl_chan =3D to_fsl_edma_chan(chan); - struct dma_ll_desc *fsl_desc; - u32 src_bus_width, dst_bus_width; - - src_bus_width =3D min_t(u32, DMA_SLAVE_BUSWIDTH_32_BYTES, 1 << (ffs(dma_s= rc) - 1)); - dst_bus_width =3D min_t(u32, DMA_SLAVE_BUSWIDTH_32_BYTES, 1 << (ffs(dma_d= st) - 1)); - - fsl_desc =3D vchan_dma_ll_alloc_desc(chan, 1); - if (!fsl_desc) - return NULL; - fsl_desc->iscyclic =3D false; - - fsl_chan->is_sw =3D true; - if (fsl_edma_drvflags(fsl_chan) & FSL_EDMA_DRV_MEM_REMOTE) - fsl_chan->is_remote =3D true; - - /* To match with copy_align and max_seg_size so 1 tcd is enough */ - fsl_edma_fill_tcd(fsl_chan, fsl_desc->its[0].vaddr, dma_src, dma_dst, - fsl_edma_get_tcd_attr(src_bus_width, dst_bus_width), - src_bus_width, len, 0, 1, 1, dst_bus_width, 0, true, - true, false); - - return vchan_tx_prep(&fsl_chan->vchan, &fsl_desc->vdesc, flags); + return __vchan_tx_prep(&fsl_chan->vchan, &fsl_desc->vdesc); } =20 void fsl_edma_xfer_desc(struct fsl_edma_chan *fsl_chan) @@ -797,6 +828,8 @@ static int fsl_edma_ll_stop(struct dma_chan *chan) } =20 static const struct dma_linklist_ops fsl_edma_ll_ops =3D { + .set_ll_next =3D fsl_edma_set_ll_next, + .set_lli =3D fsl_edma_set_lli, .stop =3D fsl_edma_ll_stop, }; =20 diff --git a/drivers/dma/fsl-edma-common.h b/drivers/dma/fsl-edma-common.h index 654d05f06b2c1817e68e7afaf9de3439285d2978..f2c346cb84f5f15d333cf854796= 3ea7a717f4d5f 100644 --- a/drivers/dma/fsl-edma-common.h +++ b/drivers/dma/fsl-edma-common.h @@ -479,9 +479,6 @@ struct dma_async_tx_descriptor *fsl_edma_prep_slave_sg( struct dma_chan *chan, struct scatterlist *sgl, unsigned int sg_len, enum dma_transfer_direction direction, unsigned long flags, void *context); -struct dma_async_tx_descriptor *fsl_edma_prep_memcpy( - struct dma_chan *chan, dma_addr_t dma_dst, dma_addr_t dma_src, - size_t len, unsigned long flags); void fsl_edma_xfer_desc(struct fsl_edma_chan *fsl_chan); void fsl_edma_issue_pending(struct dma_chan *chan); int fsl_edma_alloc_chan_resources(struct dma_chan *chan); diff --git a/drivers/dma/fsl-edma-main.c b/drivers/dma/fsl-edma-main.c index 354e4ac5e46c920dd66ec1479a64c75a609c186d..1724a2d1449fe1850d460cefae5= 899a5ab828afd 100644 --- a/drivers/dma/fsl-edma-main.c +++ b/drivers/dma/fsl-edma-main.c @@ -850,7 +850,7 @@ static int fsl_edma_probe(struct platform_device *pdev) fsl_edma->dma_dev.device_tx_status =3D fsl_edma_tx_status; fsl_edma->dma_dev.device_prep_slave_sg =3D fsl_edma_prep_slave_sg; fsl_edma->dma_dev.device_prep_dma_cyclic =3D fsl_edma_prep_dma_cyclic; - fsl_edma->dma_dev.device_prep_dma_memcpy =3D fsl_edma_prep_memcpy; + fsl_edma->dma_dev.device_prep_dma_memcpy =3D vchan_dma_ll_prep_memcpy; fsl_edma->dma_dev.device_config =3D fsl_edma_slave_config; fsl_edma->dma_dev.device_pause =3D fsl_edma_pause; fsl_edma->dma_dev.device_resume =3D fsl_edma_resume; diff --git a/drivers/dma/ll-dma.c b/drivers/dma/ll-dma.c index ff9eac43886255c18550c978184c0801456fefe9..da13ba4dcdfe403af0ad3678bf4= c0ff60f715a63 100644 --- a/drivers/dma/ll-dma.c +++ b/drivers/dma/ll-dma.c @@ -28,10 +28,11 @@ int vchan_dma_ll_init(struct virt_dma_chan *vc, const struct dma_linklist_ops *ops, size_t size, size_t align, size_t boundary) { - if (!ops || !ops->stop) + if (!ops || !ops->stop || !ops->set_ll_next || !ops->set_lli) return -EINVAL; =20 vc->ll.ops =3D ops; + vc->ll.size =3D size; =20 vc->ll.pool =3D dma_pool_create(dev_name(vc->chan.device->dev), vc->chan.device->dev, size, align, @@ -53,7 +54,8 @@ void vchan_dma_ll_free(struct virt_dma_chan *vc) } EXPORT_SYMBOL_GPL(vchan_dma_ll_free); =20 -struct dma_ll_desc *vchan_dma_ll_alloc_desc(struct dma_chan *chan, u32 n) +struct dma_ll_desc *vchan_dma_ll_alloc_desc(struct dma_chan *chan, u32 n, + unsigned long flags) { struct virt_dma_chan *vchan =3D to_virt_chan(chan); struct dma_ll_desc *desc; @@ -65,11 +67,15 @@ struct dma_ll_desc *vchan_dma_ll_alloc_desc(struct dma_= chan *chan, u32 n) =20 desc->n_its =3D n; =20 + vchan_init_dma_async_tx(vchan, &desc->vdesc, flags); + for (i =3D 0; i < n; i++) { desc->its[i].vaddr =3D dma_pool_alloc(vchan->ll.pool, GFP_NOWAIT, &desc->its[i].paddr); if (!desc->its[i].vaddr) goto err; + + memset(desc->its[i].vaddr, 0, vchan->ll.size); } =20 return desc; @@ -96,6 +102,35 @@ void vchan_dma_ll_free_desc(struct virt_dma_desc *vdesc) } EXPORT_SYMBOL_GPL(vchan_dma_ll_free_desc); =20 +struct dma_async_tx_descriptor * +vchan_dma_ll_prep_memcpy(struct dma_chan *chan, + dma_addr_t dma_dst, dma_addr_t dma_src, size_t len, + unsigned long flags) +{ + struct virt_dma_chan *vchan =3D to_virt_chan(chan); + struct dma_ll_desc *desc; + int ret; + + desc =3D vchan_dma_ll_alloc_desc(chan, 1, flags); + if (!desc) + return NULL; + + desc->iscyclic =3D false; + + ret =3D vchan->ll.ops->set_lli(desc, 0, dma_src, dma_dst, + len, true, NULL); + + if (ret) + goto err; + + return __vchan_tx_prep(vchan, &desc->vdesc); + +err: + vchan_dma_ll_free_desc(&desc->vdesc); + return NULL; +} +EXPORT_SYMBOL_GPL(vchan_dma_ll_prep_memcpy); + int vchan_dma_ll_terminate_all(struct dma_chan *chan) { struct virt_dma_chan *vchan =3D to_virt_chan(chan); diff --git a/drivers/dma/virt-dma.h b/drivers/dma/virt-dma.h index ad5ce489cf8e52aa02a0129bc5657fadd6070da2..f4aec6eb3c3900a5473c8feedc1= 6b06e29751deb 100644 --- a/drivers/dma/virt-dma.h +++ b/drivers/dma/virt-dma.h @@ -40,11 +40,16 @@ struct dma_ll_desc { }; =20 struct dma_linklist_ops { + int (*set_ll_next)(struct dma_ll_desc *desc, u32 idx, dma_addr_t next); + int (*set_lli)(struct dma_ll_desc *desc, u32 idx, + dma_addr_t src, dma_addr_t dst, size_t size, + bool irq, struct dma_slave_config *config); int (*stop)(struct dma_chan *chan); }; =20 struct dma_linklist { struct dma_pool *pool; + size_t size; const struct dma_linklist_ops *ops; }; =20 @@ -291,7 +296,12 @@ int vchan_dma_ll_init(struct virt_dma_chan *vc, const struct dma_linklist_ops *ops, size_t size, size_t align, size_t boundary); void vchan_dma_ll_free(struct virt_dma_chan *vc); -struct dma_ll_desc *vchan_dma_ll_alloc_desc(struct dma_chan *chan, u32 n); +struct dma_ll_desc *vchan_dma_ll_alloc_desc(struct dma_chan *chan, u32 n, + unsigned long flags); +struct dma_async_tx_descriptor * +vchan_dma_ll_prep_memcpy(struct dma_chan *chan, + dma_addr_t dma_dst, dma_addr_t dma_src, size_t len, + unsigned long flags); void vchan_dma_ll_free_desc(struct virt_dma_desc *vdesc); int vchan_dma_ll_terminate_all(struct dma_chan *chan); #endif --=20 2.34.1 From nobody Sun Feb 8 13:48:19 2026 Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11013046.outbound.protection.outlook.com [52.101.72.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BD2823783BE; Wed, 28 Jan 2026 18:06:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.72.46 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769623571; cv=fail; b=iei7meMhJMZabtovy/XdoICGs7ffZVyr4fazXrpdSOr1XBD4Q7l9DHgde8vTVK84E6EzQ1r1IKXUrIuifdG5xWyOA2MTagGpRoZiMTtrTOplQ8+/JFzwtnqlKqR5uoTXtVxx9m8wOgeerJ9OYxkvw9Q9onagUlCxejRtzWxpj8U= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769623571; c=relaxed/simple; bh=J24nVh/9jnhLIR8ZyOkFvOErw4twstnp62yM8dPj3jw=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=XJUaSpzy7pgCB5uZndGUK3GX5oKr8cY/M4hfx9PzmAneo5fFDXK9tVu8FLvsfD6U5COA+7RH+f9KoQEFD+XH7ryeYVSX362h2XQMrURty8+PWKy71FeTlhXGC7pq+NiJrwybGU4cfafBxa2SLX950Yzf7pu/JZZQ6i24wHckyEI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=R7xSZT+u; arc=fail smtp.client-ip=52.101.72.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="R7xSZT+u" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Zz629wuvNLNG2/v6dDUwWPmG62CKD/AyO6zkjAjvDXafKnEbdQIcr5VTLy+x5vfS8HlFjGG9jAxkM46GwuZAtxlzIXF5Q845Qvpt15Fhb2jn6//bjcsHO2Lbw1d/717+3aOz/CI8C+5si5+6F5JLl6jeXNU1dUlMdI7eFXTT7jSRZDUB7cg4KQf5UNFlXEpMrTXPChIezQs/69jXTcrWdfSBYA8moqiiGy2o6peKg5snv3fbnEmig6oaMCbwypQfLFC714WS6ade8nSdSNajX23mvbrVQgcD99qd9V5IsjvOJDWj3/P0BCvXibup6ZZH/qen4UwV94LK8/QN3sJxMw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=vgM/OqIG8yST0OMj3lGMDvGrnXmfQBkx8CDLkILU9H8=; b=iFEUyoiAf/xhKkfnUYv1F/9pSRAsRFyWGGfM2VRRkz0wqdvxZW+lxeBicayqeftIeiLl+QbvBhMsUJJbAVfWXpKPu6cGZPKlAfP8lqgLA/rJpbMBMLXz/6pM/GFrAA+7nrystOe0Owcx7vuk2gQDusue2VSnu3rAsVoX1oHs3NGGx6MIBzgIPY//TwdldathmsbPZaroiCms7ICVzoMXH0ypV04HQnO4tVynCDfjm2o4zJ2l3oyqDDKUs4NueztBkXI58PMdb15oiSTsfPKVdgMLzOhHytEA67hZe7747xSY8Uzne+HxOMf2NLtjhL382pXzPS60v83ANc3SVVV/cQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vgM/OqIG8yST0OMj3lGMDvGrnXmfQBkx8CDLkILU9H8=; b=R7xSZT+uI2RQI3n2ukeuqlX5QiY4lo8HVyodfujy4GjhANKqKzMQfgzac0hfIEjZsGZ2146nBZ3rZ40d9B77aRwEWiUrUH58KxpuVgwbbTkrJ1wZO1zVkCBkFicFkTC1fb/ldin42+5KxTIby3JASQU52eFKV7MpODWMg1tdlJYq9eytz0/nK6L9OCEPjSVcGB4gTgNxI2yaA9uPxRGab0G5m9ninAniJ82I9ci/93PtOg8r1x9G/O2M8qWcgVBIMZ8zv6RPZHMHt2Y8bMuwyhNBWqAwHsTe9IvKejNZvw3nLovtVjF30LKTCQro49AXavB8xL9NaISgj8TKQnZG0Q== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) by AM9PR04MB8145.eurprd04.prod.outlook.com (2603:10a6:20b:3e1::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.8; Wed, 28 Jan 2026 18:06:01 +0000 Received: from PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588]) by PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588%6]) with mapi id 15.20.9520.005; Wed, 28 Jan 2026 18:06:01 +0000 From: Frank Li Date: Wed, 28 Jan 2026 13:05:28 -0500 Subject: [PATCH RFC 09/12] dmaengine: ll-dma: support multi-descriptor memcpy for large transfers Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260128-dma_ll_comlib-v1-9-1b1fa2c671f9@nxp.com> References: <20260128-dma_ll_comlib-v1-0-1b1fa2c671f9@nxp.com> In-Reply-To: <20260128-dma_ll_comlib-v1-0-1b1fa2c671f9@nxp.com> To: Vinod Koul Cc: linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org, imx@lists.linux.dev, joy.zou@nxp.com, Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1769623546; l=2158; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=J24nVh/9jnhLIR8ZyOkFvOErw4twstnp62yM8dPj3jw=; b=y44w3PSDPRnwYTR1zng0Hmpa2h6Vh9LeRgD0uPgLr3kAUoyonouftxmovuZBOzx9IQ7KU2hTQ LadiuB/WhnBANKC3cbxs1P5LXPJEb+FK3z2FUL345N3oUNwz4x0vp0K X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: SA9PR03CA0009.namprd03.prod.outlook.com (2603:10b6:806:20::14) To PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PA4PR04MB9366:EE_|AM9PR04MB8145:EE_ X-MS-Office365-Filtering-Correlation-Id: e4d0688d-5d45-460f-277c-08de5e97e53f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|19092799006|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?VHM1aUlsSi9CUVJHSjNUemlVU1J6ZE11K1I0ZXY5bXVvR1RtZmtsd3VPbUlM?= =?utf-8?B?UlIyRGxGZXVyYS82dFRCQmJEbTdLMWVLUGpMWEtFaDQyZk5CRGpzWlZQeDEx?= =?utf-8?B?VlcrS0VTKytILzM3RkhSdk1UY1JnbVhqcmV5VGpkYjZPaTBGSlRPSGZDWGdn?= =?utf-8?B?eGViNlRNYTN5R04zYlhvS1RNeUhYZ3IzdjdSMlphUU1pRStESGRKTnJlNDlS?= =?utf-8?B?RUNFSTZiRldrbm1EVHNwZjNhamUrZ25LVGJXdE51MkRiOFpuWEFibFZCaGpV?= =?utf-8?B?UXhkd1Vja3g3VU90eU41UkRUUFhWbitBbkFGWEdsbVF5RWJFN2h1ZVAyU3g4?= =?utf-8?B?a1pvWXBHM3N2Q1M2aG8rbGFNdUhQazcyMjhxd0QxeEY2Z3B2NDBObG1ZQXZl?= =?utf-8?B?cGlJVEozMGJzUkVweXVLRkJ6UUVFeDJwMDVkR2h2REo2UjlIdFZDZnhrTHA3?= =?utf-8?B?QUlEOFBqQ2RZUDJrTnprVXcxWkJMb05HRXpBenU0TXlwTGR2WDBvUHYwN0NX?= =?utf-8?B?aGtXVnZ2R3EzWC9YOFVUWjdjUndzQlk4RWFDZkR6NmVDd3lzZndtbUpwa1lG?= =?utf-8?B?NFViMjBMTEFLSW5iZ1IwbWxtdkc4OXRPUTRqVVdsd3FVZ3B3SHorc2xCMzNz?= =?utf-8?B?Tk82MXkyZVdzbXg1RUl2NGdXTVRCZzNLQVhGd1JFMEcwaDhyUHV3a1JJaktP?= =?utf-8?B?S2hYdXdkbmpvTWdrZmx6VVdReWxZZXZoWittWmsyc2NSWERPNHlSdGx2clZD?= =?utf-8?B?QlRJdVU2R1JTd1Y0NkNQQ1BqR3pDbGxVM0hZNEc2T2FOWXNTaUwwbTdtZHQ5?= =?utf-8?B?MVpxOXA4ZnpneHQzWVlEZExUaXM3SkdyRGtobS9xTUZXMDkzQ1lmblRHaEZv?= =?utf-8?B?Sk5oQks1TkxIS25SSU5oR0paZDNoK0dXNG9wUHNsK0podWZjYkxXVzRidDZZ?= =?utf-8?B?dDg4aFVHSVppTnAxblROMHl1YXJROE5uOFhESmN0QzMrVlVucGJnaXVuQWdh?= =?utf-8?B?aGYreHJ4OHZaQ2REcENOMUcxTm4rYVUxYmZVb0pKTXNvM3JYV2tOVXA0SnFl?= =?utf-8?B?NFdzOVNOdE5ZMlBSamhzRXZPL0dvdXpNRm9nTnMzVUQ1NUhyTEUvekVaUUNs?= =?utf-8?B?RmV6Kzc1ZlVtZmU5NjhFUWttRFcxTU9SMGNMQVEwZXJlWjl3ejltT0NKSFJX?= =?utf-8?B?Y0NuV3BkU3dRQ1NCcWhGY1FMODBnRDdKSll3MWpLcHJqMFZHY0hkTnVTd2k3?= =?utf-8?B?YnNiR2VXSFhUb0Z0bThsZEk4QW5uRnVnMFNIcFV6ZnVrWThZSkNzRllFRklw?= =?utf-8?B?S0hTRHE4SlV1bWU3QXR0SjVyZ2hqeTJoSEJPeDBEVGg2UG1XU1NkR2NjZnU3?= =?utf-8?B?Yis0WXBWQVc1ZC8rYTNFMFBJSjU1U1hocmNBQWNwWkdJcUt0MERBRkY1Y0lV?= =?utf-8?B?VkliS2RNZUVmMmJ5K0IrTThaTDcxa2ttMWtqN2RRaGJhb2kyZjMzQmdtWFZD?= =?utf-8?B?dFN0OHhsN1hFbXhIL05lajZNWHU4YTBnOWtTbnA2NDJZVy81WVl6OEhxam9t?= =?utf-8?B?MHVSZ1M0UkxSTjAzK3Y4WVhvUHU1c3BvZ1hveGZjclVxZkx0V2Z5amU0N2gw?= =?utf-8?B?OXRQSlhmNWwrTHpnN292SmRBT1g0NWo2RVJmRmRzZS9tYkZybjZURkxiTmU3?= =?utf-8?B?ZytxQXRZZ2FoRlF6M05xeVI5QlJIRzYydWZicHhFMSt0dVE5T0VuQUdveW1V?= =?utf-8?B?cUMvZnkvY2FPeGlJaVpUZXc4Q0ZhM0hhN3JLeU9NZDVtbmtMRVh2UC9JV3BO?= =?utf-8?B?SnFtTmxrdERRSk9YSVpJVFFMTm1zaVpiSDQrRGl0ZHlBRDByVWwxQUJSQjFI?= =?utf-8?B?SndMeXM2dldCN3EzUFpESDRCbGh3WksyY1BkQzRIQU9JQmE3OWRHRHZxZW1B?= =?utf-8?B?SzJQeGhwRXNLTU5vS3h4THBESlJOVFF4cFFDQXk5K3dmT01wYVdGbXZXZk1U?= =?utf-8?B?TWE1OGdCVVdKaE9JTnR0UFF2QTh1cHlWTWlWVE1mV1FKa0hRaHFIOXlxTDFP?= =?utf-8?B?c3BNWXRRYXRUamZMQnJGbWZ1ekNpcXp1QTFlUWlJQnM0M2ZTeGVwYUNiZE84?= =?utf-8?B?a050dVBTSTZweHVxeGxPR0FRZ3NlSEVvVlBvRUNIdEx0NWwxMG1KRmdzQU0y?= =?utf-8?Q?H7yTwQJzhfikqXpLN4ivWpc=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR04MB9366.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(19092799006)(376014)(52116014)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?YlZWOExvblgyQVNkc1lqQmsvaDNSb0xXWHNRWkI1Y3kxZEhYMlp0Tk9HZ2dG?= =?utf-8?B?WGNKYmVETUV2b205UHUzRVRuK2NGME9jSzlTZU1DbXM5Z3NwY0toSld1R2d4?= =?utf-8?B?ZHlrM09WK2xBbVFYSGxya1FzbjBaTXpHYWl4NWJVbmkwUU56Z3NjZjMvTGFx?= =?utf-8?B?ditZS2F5OURTcGdGUGtFSkliZll6bS9wNHBEOUx3bmR5TnRSUWUveXFkMWRU?= =?utf-8?B?ZnE0K2M1TTZid0JKTWNWWitWd1JqUFJVd3pIZ0VzRkxkdHhMQUN2VFhWdlBY?= =?utf-8?B?MXlCclVHMU5QTFdyeWt2TGQ4ZUNLRzVjRkFzSGNLcDdZSXpQQWV4ZnZXcERu?= =?utf-8?B?cHJ5aUR5ZFFXVWttVnN0ZnRheHc5a0RHUThJQzRIdnR5N0RMYXA3NmdVdVMv?= =?utf-8?B?ZWFkMjBNQ2Z6OGJJQ0FzWUxYL3c5ZlErdE4vRXRtdmR5dnEyZkFNODBSdnVP?= =?utf-8?B?b0xPeE95UGMySXFCVGNFK05CWVk5Z3hVbk5OSVFlMlNjMjQyeTNxQXV1OGtw?= =?utf-8?B?c2lLU0hXb1crMFRYUk1Ja3BMa0VKYjdNT1JTak4zdjkxUldZbS9iNEhxNlM0?= =?utf-8?B?TS9CRzNRMGNBZXkydzJwTFVsYTFtSFkzR3pONzZuSk15OFdKQUJpQjZyc3Bn?= =?utf-8?B?amtueVFxeXA5TVJVc2MvU0JVSk95cE9PbUZrZkovUTYwQkNjb3VCNmxMbmdh?= =?utf-8?B?NmRLTmhjQTlLbjlKTlBicG5aRGlYMldibUhBeitHU3NyN2d1bFZMQkl0S241?= =?utf-8?B?dHpuOW9heUhTcnYzbHduVEdESFcrOVpOcmcrMm96QUpINkJFV3U2TUVkc0JD?= =?utf-8?B?NjBlMk1LNllZRWlvMDhoUmZaT0U5aXZEMVpNcXhQS1BWNTVtYkhQdXNHaGFH?= =?utf-8?B?bEhHY0N2QTNTU3lGSzRIK2U0bnZYckZuZ1JuU3o2amowVmkzNmVFWlpWSlY2?= =?utf-8?B?d3N4Ny9ITlNFbVNibVlUcW1ZU1JXaVVNTW4rWTBPRXJmNm1iYlVJbXQzSDBn?= =?utf-8?B?UUZMSTFJNE52eGl4WXNxNGZXRFpOMmhwV2JzcUxzL29VQ2RUajkrdVRsUWxY?= =?utf-8?B?ZXpLOEpENmVXRjZWU3pENk1HY0owY1ovRy80SW1XbDE1bXRYNmFnQlpNVnF0?= =?utf-8?B?UG4yM3BGdUlSNkJaWWN4OC9sT3hEZm4vUDdldUhLREU1T1Ewa0tLd2R6bXQy?= =?utf-8?B?YXlZVDVha1hYcFkzeTlRTnVxeW9KS0xJd0lTaFQ1WStVeUYzQkJYd2Y1TFA0?= =?utf-8?B?ZzdrbE1POXRybEo5aVI0TmhYOGQ0YXdpcWIyY3RsTlNKVEl4RUliUDU5NnJI?= =?utf-8?B?TTRQVHY4c3hRQ29Ta05SZnhLMTlUdkJPL3VxSUYyZUJJTWNDN2daYjQ3NnVp?= =?utf-8?B?cDdjdjM1M1NpY0xMdXZZQ0NiTTdqd1NwZHNCeVovdHdUNElXOWpYckF1c3Y3?= =?utf-8?B?dUFVcHFwOC9BUXNsSk1IQXhKNkZ5S2ZPUDl6UFBxanR0dXpYZWc2TlpPT08z?= =?utf-8?B?RlkvcUFBV3o2aFBHSjk5NDdYSVpwTGo1d1ptNjYyQ1V3TmlEaENjc0N4WW5h?= =?utf-8?B?Qk5ONWhPUXl4Wis2UmdBd3picm9DQ1oxWG1UT3Q2Y1lPbnpOaCtoZVZCbnN4?= =?utf-8?B?UGZHRlNGT25DeUViU3ZNTFBWck41K2k3bThzb0ZxVHhUZlAvV0paZUZyZTdT?= =?utf-8?B?cGJkOG8rck91RUxDMnRoR1VYSjB1SmV3SlBIODZtTmZlbEIxMzM0YTRCclZR?= =?utf-8?B?ZTVwRC96ZWtZSU14SERYbTBhMTUyNDlRcEVjUnRoZkkwUk1ISVkrdzlHYXBn?= =?utf-8?B?UVV1cmsyZWlpeUxmSmREWU5CTlp2RlRrNnZEeG5ISVlidDFPNmdMYkxUekQx?= =?utf-8?B?Qjdvd3lFRkt1bSs4R1ZkelFJU1VObnZBaGhBYVAveldFTmY0R1pBd1VzV29Y?= =?utf-8?B?TXpJNFR4S3JOYldOT3hFNVVlYUZGR3VBcHVsaEFsdTF6L2NFSk03OU9tdTNT?= =?utf-8?B?RVlzK1pZejdCWGJQL0pwZEMwQUU2MEN0VnpyUU9xWjBhZFF2M3RibnMvayt4?= =?utf-8?B?dXpNRDZwdHdnL29mRUMxZWIyNG1mY1J0UWpobk04anNra0lUdXI4YUtBZmpv?= =?utf-8?B?WGZBRXhLeldxUDZ1Z0Rob1FkNTVZbjRuTGtGSXJmVXRWRWIzSkNNbW80eVZ0?= =?utf-8?B?QkkwYzJKbjhacWlaSEpQZkRJcHZXSERtV0ZHRjM2clNxc0Q4cnVibDV3K2VE?= =?utf-8?B?Z1lnMHpONHRhR0hIQmhXdVlFUU1aMSthUCtpZHRmRitSNzg5cHZTUTVQUWlq?= =?utf-8?B?OWtMcm1vMGJySytKSEgrODRJTldlUzd2VGtFaXNkczdOMVlQYSt3QT09?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: e4d0688d-5d45-460f-277c-08de5e97e53f X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9366.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jan 2026 18:06:01.4229 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: yPYEF+GL14zzm9KCdm+ipCCnzaXmoVbX1ls3FF9H/9sHwgJNa1LtSjkcMlxXps7NUxlLcJ1kXmzs/qjLehqsSg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8145 Each DMA descriptor has a maximum transfer length limitation. When a memcpy request exceeds this limit, split it into multiple linked DMA descriptors to complete the transfer. Signed-off-by: Frank Li --- drivers/dma/ll-dma.c | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/drivers/dma/ll-dma.c b/drivers/dma/ll-dma.c index da13ba4dcdfe403af0ad3678bf4c0ff60f715a63..313ca274df945081fc569ddb6a1= 72298c25bc11c 100644 --- a/drivers/dma/ll-dma.c +++ b/drivers/dma/ll-dma.c @@ -17,6 +17,7 @@ */ #include #include +#include #include #include #include @@ -76,6 +77,15 @@ struct dma_ll_desc *vchan_dma_ll_alloc_desc(struct dma_c= han *chan, u32 n, goto err; =20 memset(desc->its[i].vaddr, 0, vchan->ll.size); + + if (!i) + continue; + + if (vchan->ll.ops->set_ll_next(desc, i - 1, + desc->its[i].paddr)) { + i++; /* Need free current one */ + goto err; + } } =20 return desc; @@ -107,21 +117,32 @@ vchan_dma_ll_prep_memcpy(struct dma_chan *chan, dma_addr_t dma_dst, dma_addr_t dma_src, size_t len, unsigned long flags) { + unsigned int max_seg =3D dma_get_max_seg_size(chan->device->dev); struct virt_dma_chan *vchan =3D to_virt_chan(chan); struct dma_ll_desc *desc; - int ret; + unsigned int ndesc; + int i, ret; =20 - desc =3D vchan_dma_ll_alloc_desc(chan, 1, flags); + ndesc =3D (len + max_seg - 1) / max_seg; + + desc =3D vchan_dma_ll_alloc_desc(chan, ndesc, flags); if (!desc) return NULL; =20 desc->iscyclic =3D false; =20 - ret =3D vchan->ll.ops->set_lli(desc, 0, dma_src, dma_dst, - len, true, NULL); + for (i =3D 0; i < ndesc; i++) { + ret =3D vchan->ll.ops->set_lli(desc, i, + dma_src, dma_dst, + min(len, max_seg), + i =3D=3D ndesc - 1, NULL); + if (ret) + goto err; =20 - if (ret) - goto err; + dma_src +=3D max_seg; + dma_dst +=3D max_seg; + len -=3D max_seg; + } =20 return __vchan_tx_prep(vchan, &desc->vdesc); =20 --=20 2.34.1 From nobody Sun Feb 8 13:48:19 2026 Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11013046.outbound.protection.outlook.com [52.101.72.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A20933783DB; Wed, 28 Jan 2026 18:06:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.72.46 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769623573; cv=fail; b=UG/YdtVSMlnmZCj3hv3tesi8q5kCWeYqvF9WiHTjV+uSpqBV9dPzPtlSLfasCFrNWIchGR3RSkVQSE19Dt4ur2o3pwaVdTtM9BKJwEExTQU8BWmZwzIpUW/oNs8VNMaQWT5I8PMmoLH8ZjWHGChkjiS6ippZD4Y1N+cywUblJVI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769623573; c=relaxed/simple; bh=wOXQMNIzbVOutah0EmLhmjIneZqWHqMTuYUyly6i+gs=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=i+/1P622yBjjb56/hFitDmbsB+l7nJ0S/il7Wa1+SMaUUwoW77chluBZUR/PgUTnLbTFdWIO25HajZo2UBTQ55Tq1+D3NEQaF8SIhgtrsPVMBLAsUrjdv9qSzFyVTTPHoSePw0V4UAYJPlmF5YtOkk0Pu8HyqlT/J3eRKlWfazw= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=XY7JJicm; arc=fail smtp.client-ip=52.101.72.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="XY7JJicm" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=oW0BA2bF88G6ATg5y4O3x1dGEv76HszuNhs1zgx0f48h2i3wG7tPcAzLT8QtgXx7GfRsj6Pv+DHtcqTnDxUH673qD2UJhRvMnhWWg94vaZuoBekFuR/UF+Ux6bNyRXWcucZgrUaoFbDWH4KQuatVS8e+c1DltjaGo8pnPoJD2vHT+xclEdaCo7C2ao+5dUEI6e4PpzW82AVIG2OS0zGUO4WefNhTRDwhSZCBRoWS6ZsoiwR/zL/dLISYPl1Df/P6w19PRacIfY28LLiWxTt4Jn0qW5VyTQKyFwgOBDs/LjJfF5+YC1KMMLhCusXSlv58gRy9hhydquC+DHKPTNhdog== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=O91igY/QhRawhuVExvoeVFdm8g0MsNxV8roTZdvm3yg=; b=d6xlSkmLIbbe7CphIxgsKDO2RrOk7PfkMbQqGA1aOj3kFGcA+pbzQPxrxhlKgifEakCNEeNvaUuXJZKXCXqww3mGxuPvvm0jkCkKAgFcbPEYQJzsGADMYJidyTDzbwdDBrK/xWtcFC0fh0GX559yYgRKZHfE8A+kI/J+MusulooYtguJr3jb6n13UapaD/Db2ZEcFDOAJcUacMCcWO82J0qHgdX6kr4HbQsk9xolA/5Ul1NPMYErF0lDCtCTqjcIcR4jDgMZP9SpmKHIAsWJx2yJF4uRWJyWGqrbRFUTmxhpDzVHz7314VhG/x+7VKHueNYU0QowVvrzmVPvkJDX9A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=O91igY/QhRawhuVExvoeVFdm8g0MsNxV8roTZdvm3yg=; b=XY7JJicmEYP1mx6+dowXcU+5VCR6NMEByLi5SMeN75whlBlRmWW73tED+Wp2Iyua4lJWdLSpMPgyqkYuNuf/uyILUQ/Jk/2eI3/z/Lx4xcTcLDSVgWYUkmwSgmRGfD01hDIVwj40CxZeTJ+mbwAZ47qwg6sUd0kA64a5PlybttaXi4FXQFPTEXQrbdAUTggw0yBF80rAWSfGmxk/Ro1iN3VhCUweGgicjKFP33EoPp/WXafrq1VjvjqKzl8jt0nxBP2buWWjbJ5BomeiEmlqNOtqoIOKmEYDx8mQAkM/e5Qd8x1kx3L1DpSeC2CYbMBgdf3zMi/ynljtmNbEf3tujg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) by AM9PR04MB8145.eurprd04.prod.outlook.com (2603:10a6:20b:3e1::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.8; Wed, 28 Jan 2026 18:06:03 +0000 Received: from PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588]) by PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588%6]) with mapi id 15.20.9520.005; Wed, 28 Jan 2026 18:06:03 +0000 From: Frank Li Date: Wed, 28 Jan 2026 13:05:29 -0500 Subject: [PATCH RFC 10/12] dmaengine: move fsl-edma dma_[un]map_resource() to linked list library Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260128-dma_ll_comlib-v1-10-1b1fa2c671f9@nxp.com> References: <20260128-dma_ll_comlib-v1-0-1b1fa2c671f9@nxp.com> In-Reply-To: <20260128-dma_ll_comlib-v1-0-1b1fa2c671f9@nxp.com> To: Vinod Koul Cc: linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org, imx@lists.linux.dev, joy.zou@nxp.com, Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1769623546; l=10194; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=wOXQMNIzbVOutah0EmLhmjIneZqWHqMTuYUyly6i+gs=; b=ZZJT836zlVqGJWpbJbAAvxYJNVAdGySK/XqskzQkW/EUaGd+tGTy8EsD3+PPlwn/aI9WhVEIV SsB5MY4+p5/BOnwmb6wqFMIc/5RWJDg+pf30OODoFtCfh7JaeBXIKWa X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: SA9PR03CA0009.namprd03.prod.outlook.com (2603:10b6:806:20::14) To PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PA4PR04MB9366:EE_|AM9PR04MB8145:EE_ X-MS-Office365-Filtering-Correlation-Id: 81e7129a-ca19-4173-9aa2-08de5e97e63e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|19092799006|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?Z3NHR2xMNnRaQVhmSkl3TFBkSzhlME1raVl1Z0dSVTg4dVFOVS9halZHc2lL?= =?utf-8?B?ZU1neUNuZWRyTEtGUUwxNDdneDhlWXA2Zm5GYmtjRFlKZnV6K1NBMU56VEtI?= =?utf-8?B?dmpZNkFtOE90NFA5Vk82ZWVNTDQrNlhGL1BWOXB4TncyczBVdE5KSWJoN0l0?= =?utf-8?B?akgxOGlXU0s1TFhiMWlNV29rb2pxaHp3K1lMOWVHdDhpQXhqL0Jwa09sZjE4?= =?utf-8?B?L3pnMWpOanlseEU3YVdybU82MnB2bVUyZERhbUxwRkhhTHgrZDBTNlFHRWhK?= =?utf-8?B?czNUY3VOZ1FVTURDT3htN2tCMllDVDZwQUdRclZvcEVHMzNjVERodVpmTmFV?= =?utf-8?B?MFNxbkJUbmROTGxTZm9ISSt2TFZtT045R2MvNGdwVHZWNDh6cU1pbm8yZGlC?= =?utf-8?B?Q3JyTkZxa1ZVcmZyNlNlUWlpVlAzMDdLM29vUzBvQWhIdEZoNVRCNW1jWVBi?= =?utf-8?B?dVJjL3hPK3ZsNm9NeEtIcUR5THZYQjl1MUFyaGwwQjc1V2MyUTcwaHRueFFZ?= =?utf-8?B?QnU0dXFxUXAyRzZNU1cyR2dzWkNsZ3ZNN08yYnpBNm9EY0QyeU9HcWp4d0pB?= =?utf-8?B?cStHQnppeituQ1JBK2ZVM2NSaUs2dFNoRkdlUy9nWDdGT2JZd1ZaKy8zeHV0?= =?utf-8?B?QkZuNWZuRUNnTlhLYmlveEswUHhGTVVCUnU5cGNRcmYrOG5OVU5ibGpQZS95?= =?utf-8?B?aWU3a2FzdTRyczRwRUM0WWJTSGVIQ2o2UTl3QytOV3VDZkgrWXpCbDZyelBa?= =?utf-8?B?N2JDa05tUU9PVVBCT09KOHNVaUllRWFvbDE1M0NsL3BhbUpzWUNNYjJ3V2Vi?= =?utf-8?B?TENQdTFnT3B4elIyOHhUVGNURTlXMktvTTB6anhsYy9tRUFMNytlemJZTit6?= =?utf-8?B?L1VkM0RJdHkvU29XT2hmcncrcE1tN21NUk9VbE00RDR5bWZaK2pvc1N2UFpV?= =?utf-8?B?TzNLTEFOQnIwYStnSC9QTktGVHhZVFlZSkJoc21RYkFYNGVpcTFtOEVseERN?= =?utf-8?B?cGxkanVJSDZxdWc3dTh0ek4xUHhXdmFZR0pTTlYza3hsRVFLVGhPOW9va3Bn?= =?utf-8?B?dkpHbGl3NkZWemFrZTlVbE5lMi8xSk96cFJqV2pvaE8raWdXbFp1TUlGYnEv?= =?utf-8?B?UkxoL1d0OXlZYTk5c2o5QndFRGRTTDNWemgweW95V2xhM0Z1M2FZOXprNFJR?= =?utf-8?B?dmhFK08vM3BBN2svVm5ONVZ2SlB3NUd0Nk56NE4wR3d1R3FYajFtUUdxYk56?= =?utf-8?B?enIxM2lqMnhqM2xYK0VZdGZsdng5UG8yMTR6WEtxZ2twWjBkUmRaVU1oSS8y?= =?utf-8?B?VFBSSGRaemdqTVJtZ1duNWFsbXRSWGZzOHZUSTUwMVNzNlhtaXJUVHJURHRz?= =?utf-8?B?VzZGZTBudDRLeVF2dE0zSThuazhuQ1hwSUZ1Qm12UzJULzZIaU5KMHhFQUxG?= =?utf-8?B?QWNOVzZwMkM2Uk9jRW1La0d5M2V3UjhZTWlPQUhSZUNwenprakY1dmVBYU9N?= =?utf-8?B?R2JPSFBGNm1LaHZMU0pJS3Q1WXB1WkhWWXZ1emhKNFhJOEhGdW5IcFBNWXNP?= =?utf-8?B?dHZwUWE2QWVPellQakJpcm9hVzF1ZHJ2L1V1eEwzOEpXYUxOdk0rL0RDOFla?= =?utf-8?B?dVZkREpIWS9oenJoTWo5WllIcVd0Zi9YREE3UFFKaVhWV1Q0NmdEYTUzdWxi?= =?utf-8?B?dll0TkorSkR6dDl2WmZjc28xMXRwTjdJd1RnTEYyWlM5M3hVamFyYmdWSVcr?= =?utf-8?B?bWE0Mzl3S1NGUGpCNnVVbjY1N283a2lIUmxXSUg5Z1pISGZNNGtiQUJoREtH?= =?utf-8?B?dVZidUVVU2oxQlZrbmpuZTN4ei9yODZVYkdxTzRzUWc4MzFqaDRzbWJqUGVk?= =?utf-8?B?VFRWN2ZVdWlWdVk5ZmtyZDVRZkxIbi8wU210WHJRdk5RNFhyZytldjZFMWd0?= =?utf-8?B?SnQ5ZklFalNjbExDeGxBdkZEQXVoSVdkNzg5MVg3Ny9nT3JtR2JYcmlrKzVC?= =?utf-8?B?azdCaXFySEQ0cUYyS25SMFpmKzM2QStUSzltUGt0SGtUQ0pIWlNaY004M0R1?= =?utf-8?B?NldmaEl3MUZJWldpSVR2cTlpT1lpUkNrZ1BCcms3V1JvWGZRN1ZJV2FtL0Rj?= =?utf-8?B?d3VtM1NydzhtRHRJRVJiVEhjbGJhT1p0ekNyNS9iSDZwNDY3Wm41V3VtdHFi?= =?utf-8?Q?X7b1Co4Q8MPU+Lq3UwyxbXA=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR04MB9366.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(19092799006)(376014)(52116014)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aHA0eFJFZWFIT3VIbERXdkhHc0NUejFhVExhR3V3NWM0NHluSFpkZ3d5Zll6?= =?utf-8?B?aXdDZW9XMVJQYnJZTzRhVXdWdXMvd3hFaFFjZEV6SjFDWkd1ZHpkZUh0OWpO?= =?utf-8?B?SFNrK0xjUTJuQi9XNUhqUkFTTWViZVhGRDJnYXdYOHFjcnd0NU0ycmJDS0tp?= =?utf-8?B?bXYrT3NqSGk0NGxUaCtJakxwZmxWcDg0dGswS1Y0eFNjUVVIbWVndElCTUZv?= =?utf-8?B?L1MrVHpOaEVvZmU0ajhQS2plOVJuUFBudldRb0U0VEtDZWNtZTZrckM0U25J?= =?utf-8?B?cTlCU0M1WHc1UStaTm5lSXF2WVFScEorZVl6dDZQL1BnRGd0NkJrdDdiTTk0?= =?utf-8?B?dVd5N2RPZWJxcXQ1RzZEWWQ1TnZyaFViaUVsNVFjTVNuRHJtbTlTSUFqSzhI?= =?utf-8?B?Ukg1T3pmRFNCbWtDeFIxdnV0eW5YU0Fad2hFUGxqK00zQUI4TDFIUWd0Kzkw?= =?utf-8?B?U2ZmdDh6bktFMDhYYUVIRlFqbFJhbUxWUEc1b0pGTmlXa0tlbVBKTm82Sjlz?= =?utf-8?B?THIyQlZQaUVqbE1ESUZOcStSdDkzYk5LRVcxSXpvYllDMUJ2RG1vKzBzcEJn?= =?utf-8?B?UW1VN3pLbGRqU204WTZHK1JZM05PcW9LanI0NllhSlFlYjlNQ1RnWi9LNHdp?= =?utf-8?B?MlhZcm1JcWJyQklZT1dmTHBtdUJBYlk0c3lybk9kYlhLNnVjdk9xNHIxYWFG?= =?utf-8?B?aWFZSVEwMTlQcXBBNGI3VEE2VkdmdDIyRm9TWDhTRVBlNTVLSHFYNlppNjZt?= =?utf-8?B?TFdJbit4d0dhMDUvanBreExEL3hNYlJ5MHRNQm0zYVNwSjhXQkNXaEpZTk5y?= =?utf-8?B?dEg0bWVyM3VTYnI0dzNSSDlhQStONDFUTTMxM1VScnVlSEVVbHo1NXNrZTIv?= =?utf-8?B?WWozbUo1anYxSW5YL25Ha3JUTEU1bHdJb3ZnZWJZSjZkKzVFZUhVYlp0MEI3?= =?utf-8?B?YmJjOXFQRnBZa2dWU3BKcGJ5dDh1QjdkeGE5TU1yVEVtZXV4SDhBK2NacThy?= =?utf-8?B?QTVmZWpSZ3QvNVlWQTcxL2J2L3hPMTg4WldnVHN3bDkwTGE5VlFtMzUxNkVx?= =?utf-8?B?RkVaNXhPb0E0eFFweE1hRldLbXpuRUE2RWNVaGQzYmVTdTRjRk96a2J5Zk1K?= =?utf-8?B?OXJqa1pvZVQvRWRiMFpQSmk1WTdhL0wrOEZQRUpDY0M4cHJIelBHdnk2TFNP?= =?utf-8?B?WGd2b3ZFcXVGWGxtOVdQSjFXRm92Rk9tOG41b0tMWXIvYllIKytwZDJLWm1Q?= =?utf-8?B?TVRKOUQyRmlEYlZRb3FNeW1MYUFxYVBNekprN1pTVVBaVUtCYWVINncwMnZY?= =?utf-8?B?cWEwK2t5UmJJWS9FbTdBa3l4ZzJCaUZwSFF5Q0pjM3p5eVN3Um41YStpL1pI?= =?utf-8?B?K21jTjhHeWhTRXZKR2ZQWURvTkFWcHdFY1V2Y3Ntd2x2WXMvQStiK0plOHJY?= =?utf-8?B?b0tjTzZzUHBGeDR3eWkzbmw0ZHZKc1FzL0lMRGwrRWllblhpT0lLZFJWTTB0?= =?utf-8?B?SHRLalRHajNXNDh0cys0TXU3TWQ2TzFMWVhJWUJoaVRYTnZqeGVzdUxWZ3lR?= =?utf-8?B?UXM3Z21mVFFZR1lrci83eXRnbVdWQ2llVkZFMUpRSit4T1J3VElLVEcyZU54?= =?utf-8?B?S21STDZrOGRJMnhwMFVodGFJcmFYL3V5bkFVelh6SGloMXVtWU1wRm1zMHlo?= =?utf-8?B?MnRUbjI2V2Q2YWZEUjZPOXhtVzlVZzRmTmFoWWNHaExVeHhlQ29nZkhpc1B3?= =?utf-8?B?aGNzY0xOam8zTFBMVW9HTEFJMnI2QzgxSVkzeStBeXdpRVhXVk1WSHZWS0Fy?= =?utf-8?B?QVFWNU1Ma3MwVWZwMUNkRmovaGlzODJXWitSODRlR2lpTmpJQ04yRjJsbGwx?= =?utf-8?B?eVFxMDhSVmNPNUZxTjZkQjFnSUVKKzQxbHRrT2VyeDhLbVJtNHRtdkYwZ0lY?= =?utf-8?B?anIrZmtlZHNUMHVqdFovdHJQUTJtZXBONTB1U3hOYzFTZTAzQkhwTXBoVWor?= =?utf-8?B?eURVcUZ4d3lybmxaWG8wRDRVNER5SnowNmlCWGFaNDhjZDd4WDgrVkVZZkoz?= =?utf-8?B?YXYyWUZvL3BvcEE3ZkRCaTVRMFF5dm1McUc2SjQyZjdJVmZab2pPNTFoU1RK?= =?utf-8?B?UWxGSy9nQndyNi9pbHdnaUMvRUx6N3dqcGtjUkVGblpPMmVkSmpwRjlzTEk5?= =?utf-8?B?QnBvekRITmJYb1A3dk9CYStGY1BoK3dtaHBYbFZtZVlYb0dlbGRFZzdDWGFW?= =?utf-8?B?YmRCdEFqYUthVmo1Um9WM2dXekxWYUl1ZkV6Um1vcTJLTXp2eisvZVJXV2hy?= =?utf-8?B?ZTBWa202dGdUQjdCU0RIOVVPWHIwdnNLNkNITzNiQ05uK1doVVg0QT09?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 81e7129a-ca19-4173-9aa2-08de5e97e63e X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9366.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jan 2026 18:06:03.2399 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: BNIm1kDDJGpXZIes2VVFJOMWzGxc3xepm/i58RkTGBtUKbLO0kOzQB6Ftzfn72FZtFkPdLGGWSez9BsWh4dJ6A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8145 Move fsl-edma dma_[un]map_resource() into the common linked list library. These helpers do not touch hardware resources and can be reused by other DMA engine controller drivers. Signed-off-by: Frank Li --- drivers/dma/fsl-edma-common.c | 85 +++++++++------------------------------= ---- drivers/dma/fsl-edma-common.h | 2 - drivers/dma/ll-dma.c | 64 ++++++++++++++++++++++++++++++++ drivers/dma/virt-dma.h | 9 +++++ 4 files changed, 91 insertions(+), 69 deletions(-) diff --git a/drivers/dma/fsl-edma-common.c b/drivers/dma/fsl-edma-common.c index a8f29830e0172b7e818d209f20145121631743c3..ff1ef067cfcffef876eefd30c62= d630c77ac537a 100644 --- a/drivers/dma/fsl-edma-common.c +++ b/drivers/dma/fsl-edma-common.c @@ -264,65 +264,9 @@ int fsl_edma_resume(struct dma_chan *chan) return 0; } =20 -static void fsl_edma_unprep_slave_dma(struct fsl_edma_chan *fsl_chan) -{ - if (fsl_chan->dma_dir !=3D DMA_NONE) - dma_unmap_resource(fsl_chan->vchan.chan.device->dev, - fsl_chan->dma_dev_addr, - fsl_chan->dma_dev_size, - fsl_chan->dma_dir, 0); - fsl_chan->dma_dir =3D DMA_NONE; -} - -static enum dma_data_direction -fsl_dma_dir_trans_to_data(enum dma_transfer_direction dir) -{ - if (dir =3D=3D DMA_MEM_TO_DEV) - return DMA_FROM_DEVICE; - - if (dir =3D=3D DMA_DEV_TO_MEM) - return DMA_TO_DEVICE; - - return DMA_NONE; -} - -static bool fsl_edma_prep_slave_dma(struct fsl_edma_chan *fsl_chan, - enum dma_transfer_direction dir) -{ - struct dma_slave_config *cfg =3D &fsl_chan->vchan.chan.config; - struct dma_slave_cfg *c =3D dma_slave_get_cfg(cfg, dir); - struct device *dev =3D fsl_chan->vchan.chan.device->dev; - enum dma_data_direction dma_dir; - phys_addr_t addr =3D 0; - u32 size =3D 0; - - dma_dir =3D fsl_dma_dir_trans_to_data(dir); - - addr =3D c->addr; - size =3D c->maxburst; - - /* Already mapped for this config? */ - if (fsl_chan->dma_dir =3D=3D dma_dir) - return true; - - fsl_edma_unprep_slave_dma(fsl_chan); - - fsl_chan->dma_dev_addr =3D dma_map_resource(dev, addr, size, dma_dir, 0); - if (dma_mapping_error(dev, fsl_chan->dma_dev_addr)) - return false; - fsl_chan->dma_dev_size =3D size; - fsl_chan->dma_dir =3D dma_dir; - - return true; -} - int fsl_edma_slave_config(struct dma_chan *chan, struct dma_slave_config *cfg) { - struct fsl_edma_chan *fsl_chan =3D to_fsl_edma_chan(chan); - - fsl_edma_unprep_slave_dma(fsl_chan); - return 0; } =20 @@ -611,9 +555,6 @@ struct dma_async_tx_descriptor *fsl_edma_prep_dma_cycli= c( if (!is_slave_direction(direction)) return NULL; =20 - if (!fsl_edma_prep_slave_dma(fsl_chan, direction)) - return NULL; - sg_len =3D buf_len / period_len; fsl_desc =3D vchan_dma_ll_alloc_desc(chan, sg_len, flags); if (!fsl_desc) @@ -621,6 +562,9 @@ struct dma_async_tx_descriptor *fsl_edma_prep_dma_cycli= c( fsl_desc->iscyclic =3D true; fsl_desc->dir =3D direction; =20 + if (vchan_dma_ll_map_slave_addr(chan, fsl_desc, direction, cfg)) + goto err; + dma_buf_next =3D dma_addr; if (direction =3D=3D DMA_MEM_TO_DEV) { if (!cfg->src_addr_width) @@ -649,13 +593,13 @@ struct dma_async_tx_descriptor *fsl_edma_prep_dma_cyc= lic( =20 if (direction =3D=3D DMA_MEM_TO_DEV) { src_addr =3D dma_buf_next; - dst_addr =3D fsl_chan->dma_dev_addr; + dst_addr =3D fsl_desc->dst.addr; soff =3D cfg->dst_addr_width; doff =3D fsl_chan->is_multi_fifo ? 4 : 0; if (cfg->dst_port_window_size) doff =3D cfg->dst_addr_width; } else if (direction =3D=3D DMA_DEV_TO_MEM) { - src_addr =3D fsl_chan->dma_dev_addr; + src_addr =3D fsl_desc->src.addr; dst_addr =3D dma_buf_next; soff =3D fsl_chan->is_multi_fifo ? 4 : 0; doff =3D cfg->src_addr_width; @@ -676,6 +620,10 @@ struct dma_async_tx_descriptor *fsl_edma_prep_dma_cycl= ic( } =20 return __vchan_tx_prep(&fsl_chan->vchan, &fsl_desc->vdesc); + +err: + vchan_dma_ll_free_desc(&fsl_desc->vdesc); + return NULL; } =20 struct dma_async_tx_descriptor *fsl_edma_prep_slave_sg( @@ -695,15 +643,15 @@ struct dma_async_tx_descriptor *fsl_edma_prep_slave_s= g( if (!is_slave_direction(direction)) return NULL; =20 - if (!fsl_edma_prep_slave_dma(fsl_chan, direction)) - return NULL; - fsl_desc =3D vchan_dma_ll_alloc_desc(chan, sg_len, flags); if (!fsl_desc) return NULL; fsl_desc->iscyclic =3D false; fsl_desc->dir =3D direction; =20 + if (vchan_dma_ll_map_slave_addr(chan, fsl_desc, direction, cfg)) + goto err; + if (direction =3D=3D DMA_MEM_TO_DEV) { if (!cfg->src_addr_width) cfg->src_addr_width =3D cfg->dst_addr_width; @@ -725,11 +673,11 @@ struct dma_async_tx_descriptor *fsl_edma_prep_slave_s= g( for_each_sg(sgl, sg, sg_len, i) { if (direction =3D=3D DMA_MEM_TO_DEV) { src_addr =3D sg_dma_address(sg); - dst_addr =3D fsl_chan->dma_dev_addr; + dst_addr =3D fsl_desc->dst.addr; soff =3D cfg->dst_addr_width; doff =3D 0; } else if (direction =3D=3D DMA_DEV_TO_MEM) { - src_addr =3D fsl_chan->dma_dev_addr; + src_addr =3D fsl_desc->src.addr; dst_addr =3D sg_dma_address(sg); soff =3D 0; doff =3D cfg->src_addr_width; @@ -780,6 +728,10 @@ struct dma_async_tx_descriptor *fsl_edma_prep_slave_sg( } =20 return __vchan_tx_prep(&fsl_chan->vchan, &fsl_desc->vdesc); + +err: + vchan_dma_ll_free_desc(&fsl_desc->vdesc); + return NULL; } =20 void fsl_edma_xfer_desc(struct fsl_edma_chan *fsl_chan) @@ -887,7 +839,6 @@ void fsl_edma_free_chan_resources(struct dma_chan *chan) fsl_edma_chan_mux(fsl_chan, 0, false); fsl_chan->edesc =3D NULL; vchan_get_all_descriptors(&fsl_chan->vchan, &head); - fsl_edma_unprep_slave_dma(fsl_chan); spin_unlock_irqrestore(&fsl_chan->vchan.lock, flags); =20 if (fsl_chan->txirq) diff --git a/drivers/dma/fsl-edma-common.h b/drivers/dma/fsl-edma-common.h index f2c346cb84f5f15d333cf8547963ea7a717f4d5f..7cba3bc0d39537e675167b42dda= 644647bf63819 100644 --- a/drivers/dma/fsl-edma-common.h +++ b/drivers/dma/fsl-edma-common.h @@ -164,8 +164,6 @@ struct fsl_edma_chan { u32 attr; bool is_sw; struct dma_pool *tcd_pool; - dma_addr_t dma_dev_addr; - u32 dma_dev_size; enum dma_data_direction dma_dir; char chan_name[32]; char errirq_name[36]; diff --git a/drivers/dma/ll-dma.c b/drivers/dma/ll-dma.c index 313ca274df945081fc569ddb6a172298c25bc11c..66e4222ac528f871c75a508c688= 95078fa38cf7b 100644 --- a/drivers/dma/ll-dma.c +++ b/drivers/dma/ll-dma.c @@ -99,12 +99,35 @@ struct dma_ll_desc *vchan_dma_ll_alloc_desc(struct dma_= chan *chan, u32 n, } EXPORT_SYMBOL_GPL(vchan_dma_ll_alloc_desc); =20 +static void +vchan_dma_ll_unmap_slave_addr_one(struct device *dev, + struct dma_slave_map_addr *map, + enum dma_data_direction dir) +{ + if (!dma_mapping_error(dev, map->addr) && map->size) + dma_unmap_resource(dev, map->addr, map->size, dir, 0); +} + +static void +vchan_dma_ll_unmap_slave_addr(struct dma_chan *chan, struct dma_ll_desc *d= esc) +{ + struct device *dev =3D chan->device->dev; + + if (desc->dir =3D=3D DMA_MEM_TO_DEV || desc->dir =3D=3D DMA_DEV_TO_DEV) + vchan_dma_ll_unmap_slave_addr_one(dev, &desc->dst, DMA_TO_DEVICE); + + if (desc->dir =3D=3D DMA_DEV_TO_MEM || desc->dir =3D=3D DMA_DEV_TO_DEV) + vchan_dma_ll_unmap_slave_addr_one(dev, &desc->src, DMA_FROM_DEVICE); +} + void vchan_dma_ll_free_desc(struct virt_dma_desc *vdesc) { struct dma_ll_desc *desc =3D to_dma_ll_desc(vdesc); struct virt_dma_chan *vchan =3D to_virt_chan(vdesc->tx.chan); int i; =20 + vchan_dma_ll_unmap_slave_addr(&vchan->chan, desc); + for (i =3D 0; i < desc->n_its; i++) dma_pool_free(vchan->ll.pool, desc->its[i].vaddr, desc->its[i].paddr); @@ -112,6 +135,47 @@ void vchan_dma_ll_free_desc(struct virt_dma_desc *vdes= c) } EXPORT_SYMBOL_GPL(vchan_dma_ll_free_desc); =20 +static int +vchan_dma_ll_map_slave_addr_one(struct device *dev, + struct dma_slave_map_addr *map, + enum dma_transfer_direction tran_dir, + enum dma_data_direction data_dir, + struct dma_slave_cfg *cfg) +{ + map->addr =3D dma_map_resource(dev, cfg->addr, cfg->maxburst, data_dir, 0= ); + if (dma_mapping_error(dev, map->addr)) + return -ENOMEM; + + map->size =3D cfg->maxburst; + return 0; +} + +int vchan_dma_ll_map_slave_addr(struct dma_chan *chan, struct dma_ll_desc = *desc, + enum dma_transfer_direction dir, + struct dma_slave_config *cfg) +{ + struct device *dev =3D chan->device->dev; + + if (dir =3D=3D DMA_MEM_TO_DEV || dir =3D=3D DMA_DEV_TO_DEV) { + if (vchan_dma_ll_map_slave_addr_one(dev, &desc->dst, dir, + DMA_TO_DEVICE, &cfg->dst)) + goto err; + } + + if (dir =3D=3D DMA_DEV_TO_MEM || dir =3D=3D DMA_DEV_TO_DEV) { + if (vchan_dma_ll_map_slave_addr_one(dev, &desc->src, dir, + DMA_TO_DEVICE, &cfg->src)) + goto err; + } + + return 0; + +err: + vchan_dma_ll_unmap_slave_addr(chan, desc); + return -ENOMEM; +} +EXPORT_SYMBOL_GPL(vchan_dma_ll_map_slave_addr); + struct dma_async_tx_descriptor * vchan_dma_ll_prep_memcpy(struct dma_chan *chan, dma_addr_t dma_dst, dma_addr_t dma_src, size_t len, diff --git a/drivers/dma/virt-dma.h b/drivers/dma/virt-dma.h index f4aec6eb3c3900a5473c8feedc16b06e29751deb..0a18663dc95f323f7a9bab76f2d= 730701277371a 100644 --- a/drivers/dma/virt-dma.h +++ b/drivers/dma/virt-dma.h @@ -24,6 +24,10 @@ struct dma_linklist_item { void *vaddr; }; =20 +struct dma_slave_map_addr { + dma_addr_t addr; + size_t size; +}; /* * Must put to last one if need extend it * struct vendor_dma_ll_desc { @@ -35,6 +39,8 @@ struct dma_ll_desc { struct virt_dma_desc vdesc; bool iscyclic; enum dma_transfer_direction dir; + struct dma_slave_map_addr src; + struct dma_slave_map_addr dst; u32 n_its; struct dma_linklist_item its[]; }; @@ -304,6 +310,9 @@ vchan_dma_ll_prep_memcpy(struct dma_chan *chan, unsigned long flags); void vchan_dma_ll_free_desc(struct virt_dma_desc *vdesc); int vchan_dma_ll_terminate_all(struct dma_chan *chan); +int vchan_dma_ll_map_slave_addr(struct dma_chan *chan, struct dma_ll_desc = *desc, + enum dma_transfer_direction dir, + struct dma_slave_config *cfg); #endif =20 #endif --=20 2.34.1 From nobody Sun Feb 8 13:48:19 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013040.outbound.protection.outlook.com [52.101.83.40]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F177A2505AA; Wed, 28 Jan 2026 18:06:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.40 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769623574; cv=fail; b=BktEZBwZ/JrPHCBu+mjE2QpFlCPCmje9Bpz8dc/MK+AoA/u72F48wr9Xb/LemtTqmbI0INwGCgpr0o/Xh3sRPs6hCZ8M1NE5zRHOGpnSWzSplSF9uHl8ZrQ0uIdXA98EkloP5JSOFLcW/yv8UAjsribeELpXbh5JcbdUrr0THs8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769623574; c=relaxed/simple; bh=B//VtRpbnVQ9Fa8FZBs2BPofG1vFvX55RuurZBgEVxw=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=l1nVWKeI9eunXJrw77YnxvYuBnKmxqBLJrVbIizfaT8xTkAtlxPWtF64VLCvU9OmyzHIOKnVGAiFBzpqP/PTNq0Sd54xs/H6TmiNsSghNGdxubSQbUkHDAhmg+E0rtHxKXtsqLFm0p9RW1a5ALsQ/D6FwaESZhCKHuJwocPDbaI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=ZZpw79Qx; arc=fail smtp.client-ip=52.101.83.40 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="ZZpw79Qx" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jcARq8dfPNd7jyZxAuv+CwzawyhOnuy9NYPaFCJDkvBZ4IwADOpj9HZO9QoR9jKr8Ac+dzu0yD3/K/bKV78JbZx7mOQ0udKuu7+RkxJVLy3QFOX09qEKrAjMQ2ts/bT6JS2neM94BKX7k9ihPX+WuHq1+VrK65MZtOtubg/ly5Bo9ObOgLbqJNXATVIsM1gBgYjiGRGNan18DlQLILFah89x4pTznInEOQ8QPZSZTKKgTjDuoMn0YHwG+kFpJLBoin+eBqM2KcZHhshwSkiGEKnyVKDVYeZEgeu4aM0SIAjTpeC3PQlfhabu83qYxB2PTRIxq5Mn7KUAs/QPMocKXA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=19pzVHhE1/+6ys28wk7jJb5TKQ/OjbDAmyRMaWqfq94=; b=x5fwbVLk3iIDsS7ULnDHM55D0LPxJkvCVVGZPqPIbiFXLL7KMsnJmycTb2lgQnnOQ7aY4xQkKEEHR8PCONmpcld320macW08T8aXDrwn9r3xSOygsKBodmCn3HuqMjlO8EPr2je/XcS1YZ4fzUaSeeAuQIAazIFXL55i2VQ8LyP5Y50W1pxyd1S7fV5OuLvfZm3ld9+ax3fXpYe9jPo1aims82oq41jY7vhZ1/or8M6MMQ84olmRH9mO2cubDlGJIhwB+0DMygCOBB6nocnmIBIISIYq+MmVvYmIw3PHwIn4N5e3wmZFnaDjWpT0rjt0vegBig1TUm0Xz5Xs7qTBpg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=19pzVHhE1/+6ys28wk7jJb5TKQ/OjbDAmyRMaWqfq94=; b=ZZpw79QxHtKycl3Sy5COGCXquUsGHjbk8Qx8TYPI4uNMt4Nc7a0yy1XOocpPTAGT5aieLOGD0+e2e5M/fxk2xj+HBhQZlBVWhoYGDKKjIEjsQEGa7khDbf//2Z8vCzZYRBhsBn4MdYwBy9QVUeGdGrD+ue5waHoEfgJZumN+ANQCsIha8XSnOc0ROwDYfUt4S4PIYfg9EsWbet5CeR4+EBz2JJQMA7nAlrSwh71BQlPKI3XIvDWmj0/iT/zPEiuw+ID1R/PbhPK9PyamR4S5AgMTdSz5fstMac4XzC7HcacbiAQeWbJQGd39yA9YO+6IeXhqPLvG2pjEMl7EsZ1C2Q== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) by AM9PR04MB8145.eurprd04.prod.outlook.com (2603:10a6:20b:3e1::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.8; Wed, 28 Jan 2026 18:06:05 +0000 Received: from PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588]) by PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588%6]) with mapi id 15.20.9520.005; Wed, 28 Jan 2026 18:06:05 +0000 From: Frank Li Date: Wed, 28 Jan 2026 13:05:30 -0500 Subject: [PATCH RFC 11/12] dmaengine: fsl-edma: use local soff/doff variables Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260128-dma_ll_comlib-v1-11-1b1fa2c671f9@nxp.com> References: <20260128-dma_ll_comlib-v1-0-1b1fa2c671f9@nxp.com> In-Reply-To: <20260128-dma_ll_comlib-v1-0-1b1fa2c671f9@nxp.com> To: Vinod Koul Cc: linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org, imx@lists.linux.dev, joy.zou@nxp.com, Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1769623546; l=1773; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=B//VtRpbnVQ9Fa8FZBs2BPofG1vFvX55RuurZBgEVxw=; b=lqykXi1QrcGXfdEx7JFn4kZy9caLGzqM+fjBHgv1avh2G1V+FJGNBZqGBG3XPfL9pbeereSMZ b5h/zy7dxlnC3qorJTqKhbnDUJUm8LL92Yfn6szzbDgcWktJA52VmVI X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: SA9PR03CA0009.namprd03.prod.outlook.com (2603:10b6:806:20::14) To PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PA4PR04MB9366:EE_|AM9PR04MB8145:EE_ X-MS-Office365-Filtering-Correlation-Id: 33e17065-8d52-4de9-cd51-08de5e97e773 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|19092799006|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?MXhnd0RWNU9YcXFwOENMSkhDNEZLRUI3dW1NbWU2WkR6czFHakNTTE8xRUpm?= =?utf-8?B?R1o1Z3Z2WlYwMHRiZEkxWnVoY2EwVVZFOWhCN0t3U3l0NE1MclhyZm1Ocmw2?= =?utf-8?B?b0pjRWJFWWx3UjZvVkVNRnZkK2kvaytpdTlyRlRTWG9KRWtucnZ5NFBqZFhl?= =?utf-8?B?aEhjSk41OVdRbDZsSFNPZzlwQWxINDZuRzFtZGhvM3YycHNiY29COURGa2NQ?= =?utf-8?B?ZmZySmwxRTBlbFhuNy9BMGdPMnJSSU9GY1FOaS9aRGtSTDU4aDJuQVJ0aElt?= =?utf-8?B?TzErRXJsVlM0K01zWTVnQzJaZExmakpmajNoMUFZUGVaSVVzM1QxZTNCc2gv?= =?utf-8?B?WGdvNnQxS0RuZ1htdGJNNnZuZWZnMXpyMHlwbXhWN3M2QmdIanduWTdtV1pz?= =?utf-8?B?QjdJY1BSVi9MWTZRTVRFb0lpRG9uZnQ4cERuN1k1Q0xUa1BBcUdPcFJlcWtr?= =?utf-8?B?REh2K1lTTG5CbE43QWU3Y0hNOVVUbVQwZXhweFJzK0tNWW5Ock1BOURXZWxz?= =?utf-8?B?VUZkMFlRTUFmaEd1R01KOXJ0Tzk3eFloYkpYS1lrcUoyQVN6dyt1N1pHY1d2?= =?utf-8?B?SEtrZkpZM1V0dHBuYjd5M1FYbGt0dUprSTkyZWFyVStUZjg5em9wL2FyZ2FR?= =?utf-8?B?YkM2UDYxNlMzY05uTjEvNlRjK1pUbmh2VDk2Mk1LemZybUJsbHRFU3VCTTdF?= =?utf-8?B?cUhORmpvbmNxT0JrY3R2NWFBRTFienVuOVRHcnJlcjBlVng1alhPbmJDL09I?= =?utf-8?B?OHg0ZXNVRHZSU2RlOHJmclNjbEVPUUZpb0JTbVNQM1Bnc0tmMEZFTEZHQi9q?= =?utf-8?B?ZVduYjlSRmI2Q1UrV2RJRXptZEVrSS84NXN1NmgzOHF0MWdDd3dBbzRhSVRz?= =?utf-8?B?dUpBY0VxdmY2cVgyVldBMXdqQXc1MkFJK1JCUjFDcXJuT0dVL3JrbTdlMnQr?= =?utf-8?B?Y2YxQjNydjJHby9DOXhHcVo5VUNpM2V0bEJoN3dMYTY5NzZSTmc2ZVZnbzRF?= =?utf-8?B?Zmp2T0x1ejJ0Z05DWFEwaCtWbzAzUjBDRW5XTWNCWEx3WHlFZFJNNGY3QVhZ?= =?utf-8?B?THVwa0cvTjVtTksvSTFDUjZmeVdJZ3J6bWxYc0ZkcDk5MnpuYzdiN2xjM3NE?= =?utf-8?B?emR6elZ0cnBsSVdJNjlWdXBYNUJMVExvK2h0bURNdmx0K21JME95NzVobVF4?= =?utf-8?B?YzRMUS9aYkdvUU5iN0NhbW1IYUYrQ2E3eFRtQ0dyUlBzdnNsZmFJWktGQzlG?= =?utf-8?B?ODJsa05uQ1cyQmM4M1dqNTBKTStoOTJVdFlGNWlRaHBVa2ttbDZNQjhPcDV6?= =?utf-8?B?UlhTdmZuRFgyTUc1UXk4Q3VrQ0kzUkt3MURWVHFXVEFUcEQvTFdSV05xbXZM?= =?utf-8?B?ZUFoVWhGREtWN09JNW9rVkhTQ2pzRjJLUlVlMjVsTEN1K3BHQXNxYjN2TFFU?= =?utf-8?B?dWlVZnc4SU54cGdsSFVzTFBhcVVoRVF6MmplKzA2cFhvTjNyaDlCZnFTa29l?= =?utf-8?B?OWtxYktGUEF1bHNxNzlnL2VGbS9CS25ReFVwc21YYkJ4eVFIdk81NmZSQzJU?= =?utf-8?B?UlpEbGN1aTRHY255UE5sWjRuWWlyVDNTU3pRUzZVTTRUNmtjNWJ3bDBmR2Vv?= =?utf-8?B?cUN2N0hkN1FyMnhxM0pxYStNL29DWXY2L1dTSVFuQnFWdjhiMjhFZlRsZzRt?= =?utf-8?B?a0ZJc0ZWS1RkdHQydXBkNW84Q0Q2R09KbUxuSWt5SVJiNWR0ajVTN0VkYmJz?= =?utf-8?B?K3l3YjdWeG83bTBtMjZ5YXNSUzZSTmdnZk5aVmdpUGpYZDd0M3lDcmU0NUY0?= =?utf-8?B?OXErWGF1d0JIVmZxWmpLTk5XdjdLRTVxNG5SZWlUTWxOSDliQjhvbFdDQmcy?= =?utf-8?B?M1l6KzRkclNVWXgwajJVcFJGMGZOWlJ5cmtLMU5CK25oSHIwYjMvMEQrd0xo?= =?utf-8?B?TUtZRmgxajRHQkpkRVkzdFptNFZaSzVJMGhzK1BNUHB0cVNpRXVaRmp2U1FQ?= =?utf-8?B?R2RwU1drb1pPYmZYOFpWQ3preDlOcWR1eTFhTzFqT0VuQWRocDExNHZ6SzVJ?= =?utf-8?B?TmljamFYSmp0aWkyYXhOemowN2hJbVBIcHYzb3hOV1NpenRVUmUzL0lrTWpz?= =?utf-8?B?VWNWUWU3Qmx3YkE0Ynk0dG5mN3RPR084bE5NMmpsaE5hZ0R2R3piNVlkeWp4?= =?utf-8?Q?AJKGvoOhzBd3hqTY22VDmPA=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR04MB9366.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(19092799006)(376014)(52116014)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MDl5UEFLWGhZYWNPeURWR3lTN0VPbTFxaElRek5ReDZzS2tTMEphbCtGZ1Jh?= =?utf-8?B?SHJ4bFZLR05lK2hYekw2bWZWRGdWNDlvSkhJK2p6TFJydnNNT2F5c1pISTRh?= =?utf-8?B?VnVEaHZoUzkzZXFKRFFjdmpyS0Y5ai80NlltQTFoRzZPaFYwTThUL1BTWitR?= =?utf-8?B?ZmRLajliajh5OHZlMUJPZFVLS3pqK1VGMDBacTVPTlZWdS9wMGhBcXc4S2VK?= =?utf-8?B?SGZ2SVFsSTh3UnhPZWorN1VUb1QwUlNhWXlDdVpVYW1sOVVLZENXRm1oZkZ6?= =?utf-8?B?dWlWNDkvWitmaHBDaktqVG1yYithejNVNHNtR0N3VncyRjJpRklnTmQ2MlM2?= =?utf-8?B?RGVydHZXZWsvUkVPbmR5bmtlUUx6Yko1cG1JclM3ck1Ub1hKdWdLMEErME9s?= =?utf-8?B?bC9CRWNFZU11Z1NoYnZQcU9hZzZodzZtQjRNa1BKRUt4ZzZoMUR5cFI1b3hC?= =?utf-8?B?Z0FVV0E0eHZlZHN4elZLMkRtZlFiYUJKZ0RCdDBvZW5tcURCaW1EcnZwUlVF?= =?utf-8?B?UUpNTk1TbVEvbnpDb21vNkFMS1hlVC82Sk9tWFJQay9EdkhPMHIwUzVjVjJM?= =?utf-8?B?L1lKMVpZWU9CMEN2S24rL2duMG1VQ0ZkVE5hYnNteEVsZzBGZmxPVEZOREdy?= =?utf-8?B?U292dVNEVzlXbW16cmdqVklhcnhDSU5OT0tydUlaTUxuaFVmSHJrNmlva0Vw?= =?utf-8?B?WWtTWnpEUzQ2dWs5cmdiZjhpc1ZTaUlQWTcyTFpTaGJZdVJWOGh1MmM0Vlk2?= =?utf-8?B?UzZQekZOSFpubUxXNmRHK0w0b1l1S3VYZDViMXljYUVjdDZxZXA4QmpqMmQy?= =?utf-8?B?a0dEZWNldjByQ083TFZReVdxQ1JwYnFPTVFRZlhwWHdhYlRQaC81MDlaR1pW?= =?utf-8?B?QjJ2NlBDTEpqZ2o3SDJnUFg0T2VUemhqcHhlZTQ3S1FFZDFWNE9YTmIvTnJP?= =?utf-8?B?SzZHSlVxUGdnUUljNGdKdFBmYjZOZGh1YWppUTlRbjFONDdYSUozYS9wSVBj?= =?utf-8?B?THlNZ2hLeWtUcnlYTGR2eGFLd05xTWpKYnJvaUZmMWIzQVNJclpycjFDV0Rm?= =?utf-8?B?V2Q0R3kvd3J2NktCc25BTGYyU3Y5dG9SM0hHSVJ4L2c4dWZaY09USXJTYW14?= =?utf-8?B?cEt1MEU3Z2FaMURXNzk1Vmc1Z2huQklxK0hNenJiMnIwQTA4anVNSnlpVzJs?= =?utf-8?B?TmR0UndpMEhZcVU1a1Ftd0dIL1pDZ2poaW5tSzk3OVg2MlZ1d0F5RDMwalBH?= =?utf-8?B?OWZYRCtDVXJXWCt1eS8rUVBDZ3Y1Y1pmSWYxVHYzRHdDL04zOWEwS0N0aWY0?= =?utf-8?B?bUVVMWpIZW9CTjQ4eTlzMHVxWVlhSVBUcWdISXJvQVkzOVlISWpjc0xBMEZO?= =?utf-8?B?eFZ6SVlpY1U5MmsxL2F4TDZ3Q0M2aTFKaGtDWXVsMWpwbjlJclVuOEFsUmNU?= =?utf-8?B?aC8yclI4ZkJGT1JCTTR2UHZ0SjdRM3Y2ZFpVVG9kckpaTVJ4dldmTW9hZWxM?= =?utf-8?B?SzlEeW4zRVVic3M4cVUwL0hXWE4zUExPRFAyV3N6bHVsekZvYVhzMGsvYmdp?= =?utf-8?B?SFB5WTZPMWR1RmVsaWJFK1laWW9mNWtmNlBaaW1NTFJtdGcrcFVhU0NIczND?= =?utf-8?B?MDdFUTFaUlZmUWxWMlN1bEZlTFJYd05Kb1d3VHlsVGJ2ZFJNRUJmcTVRMEpn?= =?utf-8?B?dEgvcGxLcjRDOW5wZjJlOW5QUHdUbnpZZ21Ia1lnajkzWWRDbzI5RERsUDlM?= =?utf-8?B?cDF2c3lIb1RYMElZeDJyaUlldmNmL2cxZU5XY1JYTWNJZGdxV2NwZm5saTlR?= =?utf-8?B?TDdqZmtaS3lsK0JES29ncWhBOG5QTHdTemdET1BhV3A5VjNWVkZuN0JGaWtx?= =?utf-8?B?UW0xOGpadHlvZDliZFlvMjkranBJbVpRNThUQWZQV1pJd2FNdGlReXdNWlpV?= =?utf-8?B?N1E0dk53N0liWWhCanNMSXJ2MUxqZDNvTGZYb2JOSC80UllaYno3ci9tckJG?= =?utf-8?B?b3QzWVdUOWdvcEl1cVdDVVljTStVY1cxWlVXUDdhUFBlYlpoYjBMQ2lLMWJl?= =?utf-8?B?emRBcWxCNGFDWGRUNXVOZFE3bFdVRis1K2lySzJSRkJtUm9BanpSYkdlMnFt?= =?utf-8?B?bUtMN0F3RmZKUVVkTVNYRnpFdnlDenR5WWtHc3RaZDVlQWRmRTl6ZTZGVmVk?= =?utf-8?B?dGV6cEhEMTN5UWhrdk5Dc1RRYTkvKy96OXpQSFNzdEw5aVZvSjB2Q2VGQ1ZC?= =?utf-8?B?c0pxbTd2aHJocFZ2djFJNDJFNkhLeGxRM3QxRlp6TlZtems0SVkyWkx3Qjlz?= =?utf-8?B?WWRCSEJVZGVOS0IxcUNidG1haERyakFhR2tDcWVHZXZxNjVkUHh1QT09?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 33e17065-8d52-4de9-cd51-08de5e97e773 X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9366.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jan 2026 18:06:05.1494 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ErlYfjYVNHViVNWZewfGZJCopLuRQoA2vcOPOh0uNX8YlDdRZ6E/5bZL9a0MkKotYsztRMjVt7zIDAm9I+4QdQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8145 Introduce local soff and doff variables (and related fields) so that memcpy set_lli() handling matches the sg and cyclic cases. Prepare the fsl-edma driver for moving prep_slave_{sg,cyclic} into the common linked-list library. Signed-off-by: Frank Li --- drivers/dma/fsl-edma-common.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/dma/fsl-edma-common.c b/drivers/dma/fsl-edma-common.c index ff1ef067cfcffef876eefd30c62d630c77ac537a..fdac0518316914d59df592ad26f= 6000d2034bcb9 100644 --- a/drivers/dma/fsl-edma-common.c +++ b/drivers/dma/fsl-edma-common.c @@ -517,6 +517,10 @@ static int fsl_edma_set_lli(struct dma_ll_desc *desc, = u32 idx, struct fsl_edma_chan *fsl_chan =3D to_fsl_edma_chan(chan); void *tcd =3D desc->its[idx].vaddr; u32 src_bus_width, dst_bus_width; + bool disable_req; + u32 soff, doff; + u32 nbytes; + u16 iter; =20 /* Memory to memory */ if (!config) { @@ -524,6 +528,12 @@ static int fsl_edma_set_lli(struct dma_ll_desc *desc, = u32 idx, dst_bus_width =3D min_t(u32, DMA_SLAVE_BUSWIDTH_32_BYTES, 1 << (ffs(dst)= - 1)); =20 fsl_chan->is_sw =3D true; + + soff =3D src_bus_width; + doff =3D dst_bus_width; + iter =3D 1; + disable_req =3D true; + nbytes =3D len; } =20 if (fsl_edma_drvflags(fsl_chan) & FSL_EDMA_DRV_MEM_REMOTE) @@ -532,7 +542,7 @@ static int fsl_edma_set_lli(struct dma_ll_desc *desc, u= 32 idx, /* To match with copy_align and max_seg_size so 1 tcd is enough */ __fsl_edma_fill_tcd(fsl_chan, tcd, src, dst, fsl_edma_get_tcd_attr(src_bus_width, dst_bus_width), - src_bus_width, len, 0, 1, 1, dst_bus_width, irq, true); + soff, nbytes, 0, iter, iter, doff, irq, disable_req); =20 return 0; } --=20 2.34.1 From nobody Sun Feb 8 13:48:19 2026 Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11013055.outbound.protection.outlook.com [52.101.72.55]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 074EB378803; Wed, 28 Jan 2026 18:06:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.72.55 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769623574; cv=fail; b=MOKL9lpVKV6+w9nsL0Cy8DZmKN4OJlnYRJzDmj5crkIX2oRv3jJIp5NgvjkRE6c0geXvavEObtyX+WJp1Ftbw18/GTpiuIs0TRw1aTk3zZB+3XFUem1Ab5rem1l+i45kO6jfc3WWTd3ZuZGOdJqkgJ4mekSAJ6cmFNfEAvgGN5k= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769623574; c=relaxed/simple; bh=T/R1cBEiR3v0+MtMeMed2PnwWXA62oWKFIBXUBGCHT0=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=j7MuPw6Exd5MVkG+XNFLIew4YtXuWMVeWPcdo2YyZrhFcZYYtW/WhmSVMbitTqNIku64GUeECVmJDwGG33SPzUtckk2NlY7WeB2NZwZQvI2QFCNaFJHivDGeFkUbqwnRyLLy/BQz049/Vkncr0GdZRyg/i/qa1CE3dv9et5x4yQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=c0qNa3lq; arc=fail smtp.client-ip=52.101.72.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="c0qNa3lq" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=flWhHcX6y5K6RoLpudf49dqXj2BvAtiUXwmS03QjvU0eHR+uyB+QvwLylyzV/RA3iQqzukFIdCTNiFvwwcxtppSj+KUIS+uB8OoQvWWfVd/kYLGcyeP/Li9/X9i2HYSfubZ1gzSPD8RS7MomgnvvGeMRHqFJyM/q+RoxBrlqfk2nO5uOtS+hmsEGfBKKacPsUNc9SMaAznAqhzS6GnlC1Qe8JCFlp/lm0WOptJuLYkCffob4n/UvrRFWG32SQkgAPtlpTS44cFOCor2d8CJIoNgLbsoUz4tPZYbLZGudj5TB6HqFTla6xt7xpIoskPbZdkPagYbOIJbNAXn8yvvGjg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=L+qS2Ko7f+qaIMTEuVoEhd6W/HjUxLrSlJW68ZYvYag=; b=TvL+sMSI/g2GeGA6tyaEtsjPnk/FA51htPsNpMNGOJwvMKEdilUpbaNPKoD6XtyG0sQjGXzHujDwt6QcHg1fJ8WkourpCNUsbkb610gcboQGRL3nAcMzn4Ip84l5dQuED+QkDw3Ie5bghwpuL75C/PEn40hWYRF19MWQb+8L7dX+y9KBz/HeNfj293x9X0utADc7fyzD3Q4EZDTXm75Vmy68VsIOgQlaq6N6W7b9VhGrpOxdXCYGue2ZLqxpA3jAJ/Kd0aH5CZo8+oz8epyVv5AC+1KNXr3Lo7qj/ETC9ovWXyrS+vCLBBb5ydXHTgvneQs7rvgeW4aRfDrawb58hA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=L+qS2Ko7f+qaIMTEuVoEhd6W/HjUxLrSlJW68ZYvYag=; b=c0qNa3lqQpMoHwobpOlom51mIk/MzvCKgkZ8aJ/L79PHU3VtYXeQyjA2s9VMAeUvkgVOLqygdEu9PFiPtOvkzyaxPylPr0J/Xu8OVeAeodhg0VtFcEGStSiMRF185jQbLcQK3zVJum4i78KBzkTEGbGD9AGKdsYYX/DlXBuE+b5Tyn4r7EYZA9MhkQcN4SL7mC6Bkihwhure3uJf6/yUzZaZPnyl0gnr4E1FAdLzWAhiyowUeuS3oVrciaa1/e3v9VmGaekFiKaaKh6yRVSfRSalLUd6cDLnFps2152E2hz6vai7h5cwMS8VVaHwq83Tox1ma/xxcHC53eudSgLbMA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) by PA4PR04MB7600.eurprd04.prod.outlook.com (2603:10a6:102:f2::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.11; Wed, 28 Jan 2026 18:06:09 +0000 Received: from PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588]) by PA4PR04MB9366.eurprd04.prod.outlook.com ([fe80::75e4:8143:ddbc:6588%6]) with mapi id 15.20.9520.005; Wed, 28 Jan 2026 18:06:09 +0000 From: Frank Li Date: Wed, 28 Jan 2026 13:05:31 -0500 Subject: [PATCH RFC 12/12] dmaengine: add vchan_dma_ll_prep_slave_{sg,cyclic} API Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260128-dma_ll_comlib-v1-12-1b1fa2c671f9@nxp.com> References: <20260128-dma_ll_comlib-v1-0-1b1fa2c671f9@nxp.com> In-Reply-To: <20260128-dma_ll_comlib-v1-0-1b1fa2c671f9@nxp.com> To: Vinod Koul Cc: linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org, imx@lists.linux.dev, joy.zou@nxp.com, Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1769623546; l=16298; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=T/R1cBEiR3v0+MtMeMed2PnwWXA62oWKFIBXUBGCHT0=; b=NjpoSeIeeu7dmTxOprVfSkd/JGard4izn4NerZxrgGKX7a8TQPfFm4AI20QMFh/IANmev+HVG m6gNLTiK61lC6D+5PE9VmNuBxL34NzMuCY/+To6+IHR1A2nllUNpkOV X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: SA9PR03CA0009.namprd03.prod.outlook.com (2603:10b6:806:20::14) To PA4PR04MB9366.eurprd04.prod.outlook.com (2603:10a6:102:2a9::8) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PA4PR04MB9366:EE_|PA4PR04MB7600:EE_ X-MS-Office365-Filtering-Correlation-Id: 953db963-2bdf-4438-717d-08de5e97e89d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|52116014|19092799006|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?MUIrTk41WFlma1AraTBFczJXem5tS2UvMGJCT0FzcnpJeUdNV1piNmJ3bEcw?= =?utf-8?B?VnkxeTZqOGZ0bFczejlyRXZVR0ZocVVDZmxsUnNkUnRYK05qZGx3NVNkbVdE?= =?utf-8?B?QzR5Y04zdmZSbUY4NXQwU1BRQ3loaXlDWll3ZVNZem1IQ1ZlcTJ5SEpDTThW?= =?utf-8?B?VUtESEtOYmEvcjZ6YzZOZFhCV2NwN3lsUlArNTR1QzFVNkFPQldNRE9nSTgy?= =?utf-8?B?NHJXSUJGNUI5ZFRpMlFtMXI4K3ljVnZRL0VOMVZjZ1dRSUVrQyt1MFhNblJn?= =?utf-8?B?L2Y1ZkF6ZjIvRHMzL1Nsd214SmFHRFg5d2NwUEcyUG5sYk5tenUyMEhIazFJ?= =?utf-8?B?T0dFWGRpSUN2Qjk3bjFvNGlHQTh1UDJncjk0SUJlZ1hhdVJ4Y1ZhMDhPMTk3?= =?utf-8?B?TXdwaHU5SFp1YkZjVHNKdlVQNFMvNWNQb1ZnWXM2NEF2dFltRGhGUXBQSkN1?= =?utf-8?B?aUl0ZnRxOFgwWmJnNGpvTG1wYXRST2JtYlFRV3o4Z2JqQUNXUnlQWXV3T08w?= =?utf-8?B?bTdCTkRXR0dtaHJJU2hlNmhpNmVSTGhXU1pGWklDU1JaRTl4VXdFOHJ6MXBT?= =?utf-8?B?bDVUQWxSVTg5djFFY0p6T0RQU1pjUlIwcTFNMWM3N3F5eXc4cTVPNTY1YU4x?= =?utf-8?B?SC91aFNUYWdvUmp2UDhtbW9HaWl6em1SZXBEdURBckFIYmxGYUhwckM0Nll6?= =?utf-8?B?bzVEZEJRMXgzcFQ0UEdCTlByWWwyYnNYQ0NLV0Nkb2JscDNIOTFmOERUQlpx?= =?utf-8?B?T3JqWTg4NSt1UGJOZG9XVkxpUnpDRXhFZFBWNkJ3TkRYM0ZCeFJqT3RSSklQ?= =?utf-8?B?UlY1WVdnVG1ucEVRd1o0YWZtTXZLeHlXbkhQVGZjR3h3cDczZFYwbzA4ekpP?= =?utf-8?B?Y0R0SGJEV2VVeUJJTk52dzJZVlVhUk9rc1RmTEhDdng1ekxMeUEyNEMzL2NE?= =?utf-8?B?Z04xQVZwMlNoaDZNbWkweGdvWmlyUVVrbjBoVVl5YTFZVjRDaXVaNkdTazVm?= =?utf-8?B?aTh4VXpBSlZXdlo3cGQ2SkN6eHpVNzJYOENySTZOYzA3QnFLTkxrRFdJZk1D?= =?utf-8?B?c0RqY1IzeEVQYXJvK0tMMHM1V3VuUEFZUGdHa1F1dTdhYjBVTE5ac0pRWG5C?= =?utf-8?B?OFl0TEVucTM4MEdML05xaTBpMzQxL1NWd3B0eUhtMmM0Qkw2L25ML1lQdWs5?= =?utf-8?B?bmxlRCtFblNjdkNxZFBQL29qUUdWenhkVWVOcEZHVW5FMVQzYjVwaGF5VXlW?= =?utf-8?B?ellRWnhrRGZFUGVLMThGSFZBR2c5YkswbVBtYm9MY0o3eW5KekJoTHZTTmNs?= =?utf-8?B?SWZjcGg0STlnbUhlMC9OZmF0YmNaQlNYN24rN3pTYVcwcjdzallPS0NBaHZo?= =?utf-8?B?SmFncUk5Nkt2Z1ZMdUF6Tlh6Vi9ldFJEYnQ1OEVpRzN3ZDYzcjZpZzUrZlJx?= =?utf-8?B?UWxVRHFkSURtaGhtTm1ucnZjOEpvcTljQmc3Q2E5blp1eDZlUFByZU5MNHRM?= =?utf-8?B?UmlYdzZNY2FQZXB3cmx2bG5zenVHUGwvazI1Vm9rTHU1bGJjc3Y4eXlLUDB0?= =?utf-8?B?c3ZlMitFdnRoQUJKOWpvR3hTYi8vS2hZWHNWcVBqN3RocXRXQzE5bE1jK2Ru?= =?utf-8?B?ZVhLdnhqOTR4dUtEa1ZXWnBDYnhuVVJnQmdsMEcrb2pzbTdLNHZ5SG5ySFkv?= =?utf-8?B?WGhEVHVWeFZndXkxbFIvVjB1eENOWmwxZytWRWpOM2s2Y0QrQnpHVXltTDNO?= =?utf-8?B?OS9xdGxlRExwc3JvK3FieTJPaXIyNVJVN0d0MnZGdDJncjV0bXBpQVVPU01n?= =?utf-8?B?cE1lZ2E0cm5yV2RzS3FlVzlEa05wYXdRVkdJSkRodUNld0Y1dWhjMkNRa1VM?= =?utf-8?B?YXpSVWFramtUWmdxeUV5TjFjaU9sWG9OdXdjV2sweHFYWEFzbUpzenZ0Y3JV?= =?utf-8?B?RytlVGgrREFXSllGNzdEVzhRd2llaHZvMG11WUFHNXdFUTBCZGhjTzYvY1pj?= =?utf-8?B?Y0dEUEl6TUlSNDhaYlFJVVJRa1UzNXppcmpzbXA2MEpuVXYyQkJJdUhSVDFP?= =?utf-8?B?YzJsSnpvWGFWTXhsTEpza1hOdHVyYzZHQnRpT2Z4WjFudCthN1hxWS9PRVZU?= =?utf-8?B?VS9MZTRDeFZ4NE5WRmphN1FhdkNoUkRLREU4UWtWYS9nUk4wVXY5MG5Lek9h?= =?utf-8?Q?yby4gkhs1v+xuJe6JXdYxEg=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR04MB9366.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(52116014)(19092799006)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Rm1OU3pudFhqZ2tXMzgwZ2pMUU42QVBESkhkSi9FMGtFVkVxU1R5ZkJnSXg5?= =?utf-8?B?T2k4STA2YS91cGRCQWJTcmZkRUFsTXhnRG5UVGt1V2VXVlE3MkdMRTlRRndp?= =?utf-8?B?THlselNXNXNwNFk5cmt1dE9YamkwenlTTFpJYzF6MW55MXdGeUt6emc0VVYy?= =?utf-8?B?cXJNTHNaeCtNN0IzeHJjMlhDM1BDWEpPanFZbCtiVGdQN294aGg5blYxU1Rx?= =?utf-8?B?dnEvNGN1bGdHU2FvZmdKL2JDbTUzYU11eFR2bTFVMnFINWF3V04vWGtnMzBF?= =?utf-8?B?VERvYUZnSlBNd2xab1pxbVJCWnFsRStGTEc3VDZWYmMzN0l6SFQ0QXNVMFdn?= =?utf-8?B?TFpMM0VRWGMrN2pBOU9zMlcvOUM5RUo5QkFOanNhT3FpL1BMMTErOUZMS1Q4?= =?utf-8?B?ZEE3S2NBSkxPZGErWnZHUlRnQ3VWMDdwQ0Q1Wno4Mno2OFd1VjhNVkZNWWdu?= =?utf-8?B?dUZmQ2JWL2crTzVQN25rNnEzZ0dmVC9tV0Z0NFBrdkJ4dXhSa1NNcDNEM0dz?= =?utf-8?B?bUlMTm5uWFgvQWxSSTF4NS8yb2p0c3RjampNRm85STFHS0YyMWZIV2hwL3VX?= =?utf-8?B?RGJwMmhUNEdyUDBTMzM2RXl4VzZwSS9iZ1Vka1hJN3dla1FFRlVQMXY0RUdQ?= =?utf-8?B?dzdtTldXUFlOL2dmNWFjNWU1RkdGaUNna25WQzNpK3o2M0Fza2k1MGEvSldx?= =?utf-8?B?aGJCWkNFcGYzN2hSTmVzaWZPL25FWFBaM0ZSWk1nbkl4WFgrYzFubStxWXdG?= =?utf-8?B?d01ycFdUZHJMWVB0TUVEYUV6QWl4MFFUVnNha2N1M0FmUG9nakcxbWNxRnBm?= =?utf-8?B?MTFOY2FoY0JjTDBKZ0ZUT2xscGtWQy9qUGRxd2liSTRIdUFsUnQzQ0NweEhG?= =?utf-8?B?WkIrWXdhd05ISWJYcThneWk2YitWMGcrbklNL09sbnNxUWR5bzBTNW9YdnAz?= =?utf-8?B?SzdBUHVRMWJPdlNTVlVQME81TWxSVEJBTFQvK1kwcE40ZmpKNWlRQTZIbVNp?= =?utf-8?B?NDgzV29MdFVPMCtMWFR3aHpMbEtJcEloMk5NZC9kdWZLdEFuS3orNktVcFFC?= =?utf-8?B?ZHBVTlEySjQ5a0hRS1VkNEdOMEplQWFYcGVaNVBaZWVpcGFwdWRIL2w4RjBu?= =?utf-8?B?OUpJZW5hcmZEWW1VVWt4QVhSS1oxT1MzaEpieVNUczVQMTJCUVdhc0VlNWMr?= =?utf-8?B?ak83WjU3V2owN1dlZVlCbEVWWXRCQ3pIWndveDYrOW9yWjI1L2Q4ZDdpWDAw?= =?utf-8?B?d2RNY25aUFNSNG8rekJnSzh0NkVES1B3Wm5pSTkrc3hLRzZJZGxwbFlSemtX?= =?utf-8?B?Z3MzL1F3NDQ2Wm9WS1dmQ042TnBpQ2wwQnBXRmE2d1R3OTh2N3p6MlRsTUFy?= =?utf-8?B?UjRBeiszOVZPdmNvaFBBSGhVR05CWlFZaHp2Q2Y2V1ArcE1ESlkzV1MwK2gx?= =?utf-8?B?WkFhaWJLYzRWcUY5anpGVGpUdktkWDRjajJzdUh2YXVEcWh5T3dzS2htZWRz?= =?utf-8?B?UEp1RFQrME0rSGxMOStuTzN4aEk2dnNIZ0I3QlVNMnRJa28wQ1FEcm1PaUwv?= =?utf-8?B?SUJOU0lrbS9rRGFqVkhqMUZ0NjRWcXhnckFIWjVPa0tWWnRiMzA1UmRJYkJl?= =?utf-8?B?ajJhMURnUzh3TEhlY1RVSTFGcTFONk1xU0pBaHUzL3Z4OVRsN2h5MXhrZHU2?= =?utf-8?B?SWE5QXV3TzV6UGd4d3llZUlvS25oSkxRYmlqTzNWRXZIOWJpcW5Uc1FDdFVa?= =?utf-8?B?ZWlzUmVaZTR2bWZVVk1veFg0NmhER2hIVFg3U3YwVUxCQjJZRklTcW43NWdM?= =?utf-8?B?V29SMUNuQ2E5a3R4ZklpVGJRM1NEWVZEY1NabnBJbnhoakNscTB3cUJxUUxL?= =?utf-8?B?OVlvbTdCOEtFSjVrT3pKenBreFdFTVhMWlF3dEJrNFhIc0crUjVyWHFzdEZq?= =?utf-8?B?T3J6TlJwZzUzR3VwTzF4RDdKNDJlb0dQY1ordEZRTmY0enhEdTJESGdWU2R4?= =?utf-8?B?ekFuLy9JNVlSdnBKeERDa0dMdjFTVjNIUFpGR1NnRk10cWtoNDhwb0s0L3BS?= =?utf-8?B?YUF1V0VTdmZwY0RNZTRCWGNBeWpVQ29JL1RzZXA5d2dFMHdWT1NrazZvcTYw?= =?utf-8?B?YmJFaTJvODdoUDZrZnlSdDFkT1FkWnl5RklsdlIyQk05U2IwK29sSGt5RFFP?= =?utf-8?B?U3BudUVwQUtxV0lzUUw1NHdaT1E1OEgrSkt5a1Y4WGRDWW12M3VDdktBdDdp?= =?utf-8?B?Q2w5N2VGd0k0bG92VTROekxQN3M0RERsRVkxT1BBalhMeWRlOW9MU3BtS3RJ?= =?utf-8?B?cnczM0ZBSFEyTFo4b3VJMTFTKzlyOU9YVjF4VlN3cndMR2I2QlM1Zz09?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 953db963-2bdf-4438-717d-08de5e97e89d X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9366.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jan 2026 18:06:07.4250 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ezSQ4eWSjXOQ3VYOrMijcWIbAfbO/sUqbYtu3A42Zqwx2fujytRDvSWp3WQNHyatDHefCnsBjyTBJdgi/rSeow== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB7600 Create common vchan_dma_ll_prep_slave_{sg,cyclic} API in the DMA linked-list library, based on the existing fsl-edma implementation. Update the fsl-edma driver to use the common API instead of maintaining its own implementation. Signed-off-by: Frank Li --- drivers/dma/fsl-edma-common.c | 226 ++++++++------------------------------= ---- drivers/dma/fsl-edma-common.h | 8 -- drivers/dma/fsl-edma-main.c | 4 +- drivers/dma/ll-dma.c | 112 +++++++++++++++++++++ drivers/dma/mcf-edma-main.c | 4 +- drivers/dma/virt-dma.h | 9 ++ 6 files changed, 169 insertions(+), 194 deletions(-) diff --git a/drivers/dma/fsl-edma-common.c b/drivers/dma/fsl-edma-common.c index fdac0518316914d59df592ad26f6000d2034bcb9..643e8bd30b88a2cf66eebf02450= 5428365b8f0ae 100644 --- a/drivers/dma/fsl-edma-common.c +++ b/drivers/dma/fsl-edma-common.c @@ -534,185 +534,55 @@ static int fsl_edma_set_lli(struct dma_ll_desc *desc= , u32 idx, iter =3D 1; disable_req =3D true; nbytes =3D len; - } - - if (fsl_edma_drvflags(fsl_chan) & FSL_EDMA_DRV_MEM_REMOTE) - fsl_chan->is_remote =3D true; - - /* To match with copy_align and max_seg_size so 1 tcd is enough */ - __fsl_edma_fill_tcd(fsl_chan, tcd, src, dst, - fsl_edma_get_tcd_attr(src_bus_width, dst_bus_width), - soff, nbytes, 0, iter, iter, doff, irq, disable_req); - - return 0; -} - -struct dma_async_tx_descriptor *fsl_edma_prep_dma_cyclic( - struct dma_chan *chan, dma_addr_t dma_addr, size_t buf_len, - size_t period_len, enum dma_transfer_direction direction, - unsigned long flags) -{ - struct fsl_edma_chan *fsl_chan =3D to_fsl_edma_chan(chan); - struct dma_slave_config *cfg =3D &chan->config; - struct dma_ll_desc *fsl_desc; - dma_addr_t dma_buf_next; - bool major_int =3D true; - int sg_len, i; - dma_addr_t src_addr, dst_addr, last_sg; - u16 soff, doff, iter; - u32 nbytes; - - if (!is_slave_direction(direction)) - return NULL; - - sg_len =3D buf_len / period_len; - fsl_desc =3D vchan_dma_ll_alloc_desc(chan, sg_len, flags); - if (!fsl_desc) - return NULL; - fsl_desc->iscyclic =3D true; - fsl_desc->dir =3D direction; - - if (vchan_dma_ll_map_slave_addr(chan, fsl_desc, direction, cfg)) - goto err; - - dma_buf_next =3D dma_addr; - if (direction =3D=3D DMA_MEM_TO_DEV) { - if (!cfg->src_addr_width) - cfg->src_addr_width =3D cfg->dst_addr_width; - fsl_chan->attr =3D - fsl_edma_get_tcd_attr(cfg->src_addr_width, - cfg->dst_addr_width); - nbytes =3D cfg->dst_addr_width * cfg->dst_maxburst; } else { - if (!cfg->dst_addr_width) - cfg->dst_addr_width =3D cfg->src_addr_width; - fsl_chan->attr =3D - fsl_edma_get_tcd_attr(cfg->src_addr_width, - cfg->dst_addr_width); - nbytes =3D cfg->src_addr_width * cfg->src_maxburst; - } + enum dma_transfer_direction dir =3D config->direction; =20 - iter =3D period_len / nbytes; + if (!desc->iscyclic && idx =3D=3D desc->n_its - 1) + disable_req =3D true; + else + disable_req =3D false; =20 - for (i =3D 0; i < sg_len; i++) { - if (dma_buf_next >=3D dma_addr + buf_len) - dma_buf_next =3D dma_addr; + fsl_chan->is_sw =3D false; =20 - /* get next sg's physical address */ - last_sg =3D fsl_desc->its[(i + 1) % sg_len].paddr; + if (dir =3D=3D DMA_MEM_TO_DEV) { + dst_bus_width =3D config->dst_addr_width; + if (!config->src_addr_width) + src_bus_width =3D config->dst_addr_width; + nbytes =3D config->dst_addr_width * config->dst_maxburst; =20 - if (direction =3D=3D DMA_MEM_TO_DEV) { - src_addr =3D dma_buf_next; - dst_addr =3D fsl_desc->dst.addr; - soff =3D cfg->dst_addr_width; + soff =3D config->dst_addr_width; doff =3D fsl_chan->is_multi_fifo ? 4 : 0; - if (cfg->dst_port_window_size) - doff =3D cfg->dst_addr_width; - } else if (direction =3D=3D DMA_DEV_TO_MEM) { - src_addr =3D fsl_desc->src.addr; - dst_addr =3D dma_buf_next; + if (config->dst_port_window_size) + doff =3D config->dst_addr_width; + } else if (dir =3D=3D DMA_DEV_TO_MEM) { + src_bus_width =3D config->src_addr_width; + if (!config->dst_addr_width) + dst_bus_width =3D config->src_addr_width; + nbytes =3D config->src_addr_width * config->src_maxburst; soff =3D fsl_chan->is_multi_fifo ? 4 : 0; - doff =3D cfg->src_addr_width; - if (cfg->src_port_window_size) - soff =3D cfg->src_addr_width; + doff =3D config->src_addr_width; + if (config->src_port_window_size) + soff =3D config->src_addr_width; } else { /* DMA_DEV_TO_DEV */ - src_addr =3D cfg->src_addr; - dst_addr =3D cfg->dst_addr; soff =3D doff =3D 0; - major_int =3D false; - } - - fsl_edma_fill_tcd(fsl_chan, fsl_desc->its[i].vaddr, src_addr, dst_addr, - fsl_chan->attr, soff, nbytes, 0, iter, - iter, doff, last_sg, major_int, false, true); - dma_buf_next +=3D period_len; - } - - return __vchan_tx_prep(&fsl_chan->vchan, &fsl_desc->vdesc); - -err: - vchan_dma_ll_free_desc(&fsl_desc->vdesc); - return NULL; -} - -struct dma_async_tx_descriptor *fsl_edma_prep_slave_sg( - struct dma_chan *chan, struct scatterlist *sgl, - unsigned int sg_len, enum dma_transfer_direction direction, - unsigned long flags, void *context) -{ - struct fsl_edma_chan *fsl_chan =3D to_fsl_edma_chan(chan); - struct dma_slave_config *cfg =3D &chan->config; - struct dma_ll_desc *fsl_desc; - struct scatterlist *sg; - dma_addr_t src_addr, dst_addr, last_sg; - u16 soff, doff, iter; - u32 nbytes; - int i; - - if (!is_slave_direction(direction)) - return NULL; - - fsl_desc =3D vchan_dma_ll_alloc_desc(chan, sg_len, flags); - if (!fsl_desc) - return NULL; - fsl_desc->iscyclic =3D false; - fsl_desc->dir =3D direction; - - if (vchan_dma_ll_map_slave_addr(chan, fsl_desc, direction, cfg)) - goto err; - - if (direction =3D=3D DMA_MEM_TO_DEV) { - if (!cfg->src_addr_width) - cfg->src_addr_width =3D cfg->dst_addr_width; - fsl_chan->attr =3D - fsl_edma_get_tcd_attr(cfg->src_addr_width, - cfg->dst_addr_width); - nbytes =3D cfg->dst_addr_width * - cfg->dst_maxburst; - } else { - if (!cfg->dst_addr_width) - cfg->dst_addr_width =3D cfg->src_addr_width; - fsl_chan->attr =3D - fsl_edma_get_tcd_attr(cfg->src_addr_width, - cfg->dst_addr_width); - nbytes =3D cfg->src_addr_width * - cfg->src_maxburst; - } - - for_each_sg(sgl, sg, sg_len, i) { - if (direction =3D=3D DMA_MEM_TO_DEV) { - src_addr =3D sg_dma_address(sg); - dst_addr =3D fsl_desc->dst.addr; - soff =3D cfg->dst_addr_width; - doff =3D 0; - } else if (direction =3D=3D DMA_DEV_TO_MEM) { - src_addr =3D fsl_desc->src.addr; - dst_addr =3D sg_dma_address(sg); - soff =3D 0; - doff =3D cfg->src_addr_width; - } else { - /* DMA_DEV_TO_DEV */ - src_addr =3D cfg->src_addr; - dst_addr =3D cfg->dst_addr; - soff =3D 0; - doff =3D 0; + irq =3D false; } =20 - /* - * Choose the suitable burst length if sg_dma_len is not - * multiple of burst length so that the whole transfer length is - * multiple of minor loop(burst length). - */ - if (sg_dma_len(sg) % nbytes) { - u32 width =3D (direction =3D=3D DMA_DEV_TO_MEM) ? doff : soff; - u32 burst =3D (direction =3D=3D DMA_DEV_TO_MEM) ? - cfg->src_maxburst : - cfg->dst_maxburst; + /* + * Choose the suitable burst length if sg_dma_len is not + * multiple of burst length so that the whole transfer length is + * multiple of minor loop(burst length). + */ + if (len % nbytes) { + u32 width =3D (dir =3D=3D DMA_DEV_TO_MEM) ? doff : soff; + u32 burst =3D (dir =3D=3D DMA_DEV_TO_MEM) ? + config->src_maxburst : + config->dst_maxburst; int j; =20 for (j =3D burst; j > 1; j--) { - if (!(sg_dma_len(sg) % (j * width))) { + if (!(len % (j * width))) { nbytes =3D j * width; break; } @@ -721,27 +591,19 @@ struct dma_async_tx_descriptor *fsl_edma_prep_slave_s= g( if (j =3D=3D 1) nbytes =3D width; } - iter =3D sg_dma_len(sg) / nbytes; - if (i < sg_len - 1) { - last_sg =3D fsl_desc->its[(i + 1)].paddr; - fsl_edma_fill_tcd(fsl_chan, fsl_desc->its[i].vaddr, src_addr, - dst_addr, fsl_chan->attr, soff, - nbytes, 0, iter, iter, doff, last_sg, - false, false, true); - } else { - last_sg =3D 0; - fsl_edma_fill_tcd(fsl_chan, fsl_desc->its[i].vaddr, src_addr, - dst_addr, fsl_chan->attr, soff, - nbytes, 0, iter, iter, doff, last_sg, - true, true, false); - } + + iter =3D len / nbytes; } =20 - return __vchan_tx_prep(&fsl_chan->vchan, &fsl_desc->vdesc); + if (fsl_edma_drvflags(fsl_chan) & FSL_EDMA_DRV_MEM_REMOTE) + fsl_chan->is_remote =3D true; + + /* To match with copy_align and max_seg_size so 1 tcd is enough */ + __fsl_edma_fill_tcd(fsl_chan, tcd, src, dst, + fsl_edma_get_tcd_attr(src_bus_width, dst_bus_width), + soff, nbytes, 0, iter, iter, doff, irq, disable_req); =20 -err: - vchan_dma_ll_free_desc(&fsl_desc->vdesc); - return NULL; + return 0; } =20 void fsl_edma_xfer_desc(struct fsl_edma_chan *fsl_chan) diff --git a/drivers/dma/fsl-edma-common.h b/drivers/dma/fsl-edma-common.h index 7cba3bc0d39537e675167b42dda644647bf63819..b5bfd3162237bb9dd585bbf91e6= f9f73f0376112 100644 --- a/drivers/dma/fsl-edma-common.h +++ b/drivers/dma/fsl-edma-common.h @@ -469,14 +469,6 @@ int fsl_edma_slave_config(struct dma_chan *chan, struct dma_slave_config *cfg); enum dma_status fsl_edma_tx_status(struct dma_chan *chan, dma_cookie_t cookie, struct dma_tx_state *txstate); -struct dma_async_tx_descriptor *fsl_edma_prep_dma_cyclic( - struct dma_chan *chan, dma_addr_t dma_addr, size_t buf_len, - size_t period_len, enum dma_transfer_direction direction, - unsigned long flags); -struct dma_async_tx_descriptor *fsl_edma_prep_slave_sg( - struct dma_chan *chan, struct scatterlist *sgl, - unsigned int sg_len, enum dma_transfer_direction direction, - unsigned long flags, void *context); void fsl_edma_xfer_desc(struct fsl_edma_chan *fsl_chan); void fsl_edma_issue_pending(struct dma_chan *chan); int fsl_edma_alloc_chan_resources(struct dma_chan *chan); diff --git a/drivers/dma/fsl-edma-main.c b/drivers/dma/fsl-edma-main.c index 1724a2d1449fe1850d460cefae5899a5ab828afd..e405aa96e625702673b5fc64e11= 02b50d18eb894 100644 --- a/drivers/dma/fsl-edma-main.c +++ b/drivers/dma/fsl-edma-main.c @@ -848,8 +848,8 @@ static int fsl_edma_probe(struct platform_device *pdev) fsl_edma->dma_dev.device_free_chan_resources =3D fsl_edma_free_chan_resources; fsl_edma->dma_dev.device_tx_status =3D fsl_edma_tx_status; - fsl_edma->dma_dev.device_prep_slave_sg =3D fsl_edma_prep_slave_sg; - fsl_edma->dma_dev.device_prep_dma_cyclic =3D fsl_edma_prep_dma_cyclic; + fsl_edma->dma_dev.device_prep_slave_sg =3D vchan_dma_ll_prep_slave_sg; + fsl_edma->dma_dev.device_prep_dma_cyclic =3D vchan_dma_ll_prep_slave_cycl= ic; fsl_edma->dma_dev.device_prep_dma_memcpy =3D vchan_dma_ll_prep_memcpy; fsl_edma->dma_dev.device_config =3D fsl_edma_slave_config; fsl_edma->dma_dev.device_pause =3D fsl_edma_pause; diff --git a/drivers/dma/ll-dma.c b/drivers/dma/ll-dma.c index 66e4222ac528f871c75a508c68895078fa38cf7b..de289e10468b9c0e6ab6c15b1bd= 49ab2b627e59d 100644 --- a/drivers/dma/ll-dma.c +++ b/drivers/dma/ll-dma.c @@ -216,6 +216,118 @@ vchan_dma_ll_prep_memcpy(struct dma_chan *chan, } EXPORT_SYMBOL_GPL(vchan_dma_ll_prep_memcpy); =20 +static dma_addr_t +vchan_dma_get_src_addr(struct dma_ll_desc *desc, dma_addr_t addr, + enum dma_transfer_direction dir) +{ + if (dir =3D=3D DMA_DEV_TO_MEM || dir =3D=3D DMA_DEV_TO_DEV) + return desc->src.addr; + + return addr; +} + +static dma_addr_t +vchan_dma_get_dst_addr(struct dma_ll_desc *desc, dma_addr_t addr, + enum dma_transfer_direction dir) +{ + if (dir =3D=3D DMA_MEM_TO_DEV || dir =3D=3D DMA_DEV_TO_DEV) + return desc->dst.addr; + + return addr; +} + +struct dma_async_tx_descriptor * +vchan_dma_ll_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl, + unsigned int sg_len, enum dma_transfer_direction dir, + unsigned long flags, void *context) +{ + struct virt_dma_chan *vchan =3D to_virt_chan(chan); + struct dma_slave_config *config =3D &chan->config; + struct dma_ll_desc *desc; + struct scatterlist *sg; + int i, ret; + + if (!is_slave_direction(dir)) + return NULL; + + desc =3D vchan_dma_ll_alloc_desc(chan, sg_len, flags); + if (!desc) + return NULL; + desc->iscyclic =3D false; + desc->dir =3D dir; + + if (vchan_dma_ll_map_slave_addr(chan, desc, dir, config)) + goto err; + + for_each_sg(sgl, sg, sg_len, i) { + dma_addr_t addr =3D sg_dma_address(sg); + + ret =3D vchan->ll.ops->set_lli(desc, i, + vchan_dma_get_src_addr(desc, addr, dir), + vchan_dma_get_dst_addr(desc, addr, dir), + sg_dma_len(sg), + i =3D=3D sg_len - 1, config); + if (ret) + goto err; + } + + return __vchan_tx_prep(vchan, &desc->vdesc); + +err: + vchan_dma_ll_free_desc(&desc->vdesc); + return NULL; +} +EXPORT_SYMBOL_GPL(vchan_dma_ll_prep_slave_sg); + +struct dma_async_tx_descriptor * +vchan_dma_ll_prep_slave_cyclic(struct dma_chan *chan, dma_addr_t dma_addr, + size_t buf_len, size_t period_len, + enum dma_transfer_direction dir, + unsigned long flags) +{ + struct virt_dma_chan *vchan =3D to_virt_chan(chan); + struct dma_slave_config *config =3D &chan->config; + dma_addr_t addr =3D dma_addr; + struct dma_ll_desc *desc; + int nItems; + int i, ret; + + if (!is_slave_direction(dir)) + return NULL; + + nItems =3D buf_len / period_len; + desc =3D vchan_dma_ll_alloc_desc(chan, nItems, flags); + if (!desc) + return NULL; + desc->iscyclic =3D true; + desc->dir =3D dir; + + if (vchan_dma_ll_map_slave_addr(chan, desc, dir, config)) + goto err; + + for (i =3D 0; i < nItems; i++) { + ret =3D vchan->ll.ops->set_lli(desc, i, + vchan_dma_get_src_addr(desc, addr, dir), + vchan_dma_get_dst_addr(desc, addr, dir), + period_len, true, config); + if (ret) + goto err; + + addr +=3D period_len; + } + + ret =3D vchan->ll.ops->set_ll_next(desc, nItems - 1, desc->its[0].paddr); + if (ret) + goto err; + + return __vchan_tx_prep(vchan, &desc->vdesc); + +err: + vchan_dma_ll_free_desc(&desc->vdesc); + return NULL; +} +EXPORT_SYMBOL_GPL(vchan_dma_ll_prep_slave_cyclic); + int vchan_dma_ll_terminate_all(struct dma_chan *chan) { struct virt_dma_chan *vchan =3D to_virt_chan(chan); diff --git a/drivers/dma/mcf-edma-main.c b/drivers/dma/mcf-edma-main.c index 60c5b928ade74d36c8f4206777921544787f6cd8..6d68dfd97b47c88d2499540b105= 64b964820b807 100644 --- a/drivers/dma/mcf-edma-main.c +++ b/drivers/dma/mcf-edma-main.c @@ -221,8 +221,8 @@ static int mcf_edma_probe(struct platform_device *pdev) fsl_edma_free_chan_resources; mcf_edma->dma_dev.device_config =3D fsl_edma_slave_config; mcf_edma->dma_dev.device_prep_dma_cyclic =3D - fsl_edma_prep_dma_cyclic; - mcf_edma->dma_dev.device_prep_slave_sg =3D fsl_edma_prep_slave_sg; + vchan_dma_ll_prep_slave_cyclic; + mcf_edma->dma_dev.device_prep_slave_sg =3D vchan_dma_ll_prep_slave_sg; mcf_edma->dma_dev.device_tx_status =3D fsl_edma_tx_status; mcf_edma->dma_dev.device_pause =3D fsl_edma_pause; mcf_edma->dma_dev.device_resume =3D fsl_edma_resume; diff --git a/drivers/dma/virt-dma.h b/drivers/dma/virt-dma.h index 0a18663dc95f323f7a9bab76f2d730701277371a..d1bb130f0fd798f8ec78cc8f88d= a3f8d1ae74625 100644 --- a/drivers/dma/virt-dma.h +++ b/drivers/dma/virt-dma.h @@ -308,6 +308,15 @@ struct dma_async_tx_descriptor * vchan_dma_ll_prep_memcpy(struct dma_chan *chan, dma_addr_t dma_dst, dma_addr_t dma_src, size_t len, unsigned long flags); +struct dma_async_tx_descriptor * +vchan_dma_ll_prep_slave_cyclic(struct dma_chan *chan, dma_addr_t dma_addr, + size_t buf_len, size_t period_len, + enum dma_transfer_direction dir, + unsigned long flags); +struct dma_async_tx_descriptor * +vchan_dma_ll_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl, + unsigned int sg_len, enum dma_transfer_direction dir, + unsigned long flags, void *context); void vchan_dma_ll_free_desc(struct virt_dma_desc *vdesc); int vchan_dma_ll_terminate_all(struct dma_chan *chan); int vchan_dma_ll_map_slave_addr(struct dma_chan *chan, struct dma_ll_desc = *desc, --=20 2.34.1