From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B9561EB64DB for ; Wed, 14 Jun 2023 08:13:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-ID:In-Reply-To: References:Message-ID:Date:Subject:CC:To:From:Reply-To:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=2oXZurfCubRw5LAsmX4WCTY8YN9IIBYyBI7hjAkZwR4=; b=1IjrnnNHmA2gE9 B1BW5+Z9V9hCWR33wSTjK7DJvqlGDTJ1Z55KDnZNCvn0zUidfxslbdAn+xiKv3tVbxPeZPARZxdXW S4c40TREXJyaLSgpxs3ZimomXuGvdPJ3n18Pv9x+jYlCT/g95hk3RcFnDR3lR1YfVRdZNJWQ4O/3l DhztvWdFws4rOBmrVNOTcLh/0GGeonTuzftLcT4C8I0Ba13tWcBQyTo2RvTZzPtJW8181QoU0t1aJ /jJh6fBFNLESJx5xVNjoMQ53q9+8JD5cV+bZVPGs7RXs0U1pEaD9RL820YPFntnAfo/26MEBOllGu irdBS9JXvXJVSHasZAgA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1q9LdE-00AqGn-2T; Wed, 14 Jun 2023 08:13:32 +0000 Received: from mailgw01.mediatek.com ([216.200.240.184]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1q9LdB-00AqFE-1i; Wed, 14 Jun 2023 08:13:31 +0000 X-UUID: 560530800a8b11ee912e1518a6540028-20230614 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=MIME-Version:Content-Transfer-Encoding:Content-ID:Content-Type:In-Reply-To:References:Message-ID:Date:Subject:CC:To:From; bh=OzMSF4O6EESR3IMCGvwhXUOURx3RvD6Hme0bWb0qP84=; b=lQb58285vgDofBcu1fur9cEgX2jur513CXhDNVVChO9yCK/oKJo/Zn5FbnkaiZvL0uSD87wNLWf9wxAfNPX2LpHftTQ1rQrtLPtscjXNWpKA2jZg7U2RmxAKC20gLSxAqW5qeI3U4s+ABqX/ax8/eazDXYkwB+vP8uR9sXOfW1U=; X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.1.26,REQID:bf220c98-db45-4ea9-bc83-74c5604cefb3,IP:0,U RL:0,TC:0,Content:0,EDM:0,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTION: release,TS:0 X-CID-META: VersionHash:cb9a4e1,CLOUDID:1da8943e-7aa7-41f3-a6bd-0433bee822f3,B ulkID:nil,BulkQuantity:0,Recheck:0,SF:102,TC:nil,Content:0,EDM:-3,IP:nil,U RL:0,File:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR:NO X-CID-BVR: 0 X-CID-BAS: 0,_,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR X-UUID: 560530800a8b11ee912e1518a6540028-20230614 Received: from mtkmbs13n2.mediatek.inc [(172.21.101.108)] by mailgw01.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256/256) with ESMTP id 1380284834; Wed, 14 Jun 2023 01:13:25 -0700 Received: from mtkmbs10n1.mediatek.inc (172.21.101.34) by mtkmbs10n1.mediatek.inc (172.21.101.34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.26; Wed, 14 Jun 2023 16:13:22 +0800 Received: from APC01-TYZ-obe.outbound.protection.outlook.com (172.21.101.237) by mtkmbs10n1.mediatek.inc (172.21.101.34) with Microsoft SMTP Server id 15.2.1118.26 via Frontend Transport; Wed, 14 Jun 2023 16:13:22 +0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kpvDgeRcjga/XBCa/XlwdEgCrGHAKvA35CAgnZHeQIuyMR+hOFz3Y1WcoO5aTkJfhWfb/at0PIRldjYdEpTDTrxqUpf3YcR6hPD9luk8oUJdR0E90JZAD72yYVuWJafLPQRj2jwnNfKprMBpbi3Rl2oxAuvda2E5BZvT80us03T19S2kIrjAjSAuVwT9aDncvEpl4qm9/qxpPKsml5e4sxYRC2O+4dK/O/KQkZI/PqP4qE27YpNAtsivAUC3BszUTbBaX8EloJ4YAKZmHqr5RUexBRI5utpdIT7AQAbK5/66K9rSektKFCI06dtYiG8qY2CgG7BZBYhNYqdgzljR5A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=OzMSF4O6EESR3IMCGvwhXUOURx3RvD6Hme0bWb0qP84=; b=myUrT1KWHdlCxKyDWbiWH4Zlt73WA5y3cj2S81ihTKkH0FWkyLjAeyGKvidN2Anzmf+AL31vXbXl+f8nmT+0MfXgv0uvoDeDU1LZs/9ssm2kYsJt50WyFtKDAvlLRVc3zCfV9F9V+RKweYJsIWwDxyhX+G/6G6fyxCPjClxUtEFxHEn47v++73T/xXUdZN5HEeEgiflqHM32QkZgXML81r/JPLtV7+KNsf0TZbeDtj0+GrstDoWp4VUoVwoiWfR9x2ZnCRzX2umUCE4MFsZF9dRbfGDh1Be7JR1SPMHNWKkl5rqQQHnuVSDqwMcgUc6o+f3emiODjc3gROTXNeLQYg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mediatek.com; dmarc=pass action=none header.from=mediatek.com; dkim=pass header.d=mediatek.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mediateko365.onmicrosoft.com; s=selector2-mediateko365-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OzMSF4O6EESR3IMCGvwhXUOURx3RvD6Hme0bWb0qP84=; b=gsMFIXcFGLo4lNqU1mzVE4zfKbKCiCl4FBL9HRDyAKQnkf4A3C04GxydVcc8sXULiw1zynqdlFhNUgGpvt3vYC0xNjlVafOxyWVIy84gsm2/OjDdx97sCTU1ssYopPJ5Jr780KbTXJgrEroczBwQYv5VQ5VgRXNu2HFg1KIywbY= Received: from SL2PR03MB4204.apcprd03.prod.outlook.com (2603:1096:100:53::15) by SEYPR03MB7009.apcprd03.prod.outlook.com (2603:1096:101:b1::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6477.37; Wed, 14 Jun 2023 08:13:18 +0000 Received: from SL2PR03MB4204.apcprd03.prod.outlook.com ([fe80::2648:bb51:77fb:125b]) by SL2PR03MB4204.apcprd03.prod.outlook.com ([fe80::2648:bb51:77fb:125b%4]) with mapi id 15.20.6455.045; Wed, 14 Jun 2023 08:13:18 +0000 From: =?utf-8?B?VGluZ0hhbiBTaGVuICjmsojlu7fnv7Ap?= To: "mathieu.poirier@linaro.org" CC: "linux-kernel@vger.kernel.org" , "robh+dt@kernel.org" , "linux-remoteproc@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-mediatek@lists.infradead.org" , "conor+dt@kernel.org" , Project_Global_Chrome_Upstream_Group , "linux-arm-kernel@lists.infradead.org" , "krzysztof.kozlowski+dt@linaro.org" , "matthias.bgg@gmail.com" , "andersson@kernel.org" , "angelogioacchino.delregno@collabora.com" Subject: Re: [PATCH v13 05/11] remoteproc: mediatek: Introduce cluster on single-core SCP Thread-Topic: [PATCH v13 05/11] remoteproc: mediatek: Introduce cluster on single-core SCP Thread-Index: AQHZmREWM9sf5lt/10GGmQUprBIKY6+Hc7YAgAKKTYA= Date: Wed, 14 Jun 2023 08:13:18 +0000 Message-ID: <0668bbfc732db80ad12703c1c4906cb4348b5730.camel@mediatek.com> References: <20230607072222.8628-1-tinghan.shen@mediatek.com> <20230607072222.8628-6-tinghan.shen@mediatek.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=mediatek.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SL2PR03MB4204:EE_|SEYPR03MB7009:EE_ x-ms-office365-filtering-correlation-id: be79dcbc-1dd6-41e3-c268-08db6caf35f9 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 7RvWkBIs1eid4pn/53qgkhGrR4bgS4hN4kw6fnHPwaSvJC03VD46Z7+V6Ch6mWjMW11Ambb7stNIiOieAFPaKlaPTuGcYoU9VZk7f2srvVOkt+Mqaf/yvZ+MkxTACvWe3UY+6sSNSgdczuhaLU+uBgKHASqR3H9hHhA/UINNRZY3+mu/q+PdB3f2l+iqwSIZxMBHKWuuIOaKhwkn+lDEkzSCTFkoeTcJHGcN4vl+1H/HGLnJtF3FvbK58oLOkhKngKJOrq6PKAsoVUOSckWeiQQfCOFFtNKK2B+/vKp2FmMVNma6Mvxm6OQcqXyBTnaqZrm+2KieVdO58cdlnEmfEOCI1jKjaN8OTzbkZR0YWqFBDiAsUJdCG1He1BL57918FtJbqcYbXjLhgb46u3WXkPdha+5GoVFtXARJtOJRAyp1yRL+jrbF9//MtxVbuq8VmkL/wsCubZmfX+2fMLHk0wlYTY60uHg+B8N8R4YnnYRNFEZfnWayf6b1gVRflEgtyedo+4aXG5aiuUnEHMkW/52qESRUMVT0Ol5vrsSVMcUGruWT74HO0IM8ABssZG/o0rxZAm2m0h/l0GZQsNUxuQEhPVwQ7dS1mW1Pg51z5AOU266Q8k90RyKIn1gS7ciZOQRjClMr5cOtO7MVtAHX5AG96aZrKwVdOqIi7i2qmIJt86fgORaqgKZ+7QaYPIrq4BFhg1QIVgd5VmU4jF3toA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SL2PR03MB4204.apcprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(346002)(396003)(376002)(136003)(366004)(39860400002)(451199021)(8936002)(6486002)(26005)(8676002)(6512007)(41300700001)(38100700002)(478600001)(85182001)(36756003)(86362001)(71200400001)(66946007)(6916009)(66476007)(4326008)(91956017)(76116006)(64756008)(66446008)(66556008)(316002)(122000001)(38070700005)(54906003)(6506007)(5660300002)(83380400001)(186003)(2616005)(7416002)(2906002)(414714003)(473944003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bnMxSGlMY2ttM3l4aDUxOXBVRUpTQ3hYdVhCTmF1MThPNGErNlVVeFh3OHdZ?= =?utf-8?B?clV1cTFuNklOblQ5cVRCV2pPVm1Jc1RnSVl0R0FIbmx0blZIVnYxeWJZcFRr?= =?utf-8?B?dGUxZE9leXAwY2NaS3F1RXhYdEpKNEI2RnZQaGNtY09CbFZUTW5Gd2FzQTlR?= =?utf-8?B?S2ZRc1E0MGplenNicXBDWGJHVTFLeUJnMlp4SHFFREdvZ1F0b2IzSnFnQTY4?= =?utf-8?B?R1IxN1UxZTI2WithQi9OWlcvSEpDOTJ2aWp2WXdwSm80ZmhVMHdNRkprdHlB?= =?utf-8?B?YllJUmFqMlk4eXdpcFE2QnNkNWdXSS94NURIVlZveVN1WWFSUWlGazQ0T3RT?= =?utf-8?B?WTk1S0p3RzFPaWVLaU5henpWQnUyYjN5eFcxNWludlBWUDFyQW56WUlmUUFm?= =?utf-8?B?MWhsRm83Qm1VMGRCUmNyYzU1TVRYdzNGUU5mRFJIb3ArMTNhcHV3ZU9JaTNp?= =?utf-8?B?L0VPUmlGbmg0cVA3RG5mdk16RFNsbVBmcytOYXZTczM0OFplVndnY2lMRUVP?= =?utf-8?B?d0pIR0dvNjhiYklSeTh4c212U2cvUUtxR0k4TmNpb0Jpd05Zd254MGVSdk1W?= =?utf-8?B?Z09KRXI1QnRIeXVKMTcrRlV6MVR6REJmd25qWDA5d0M3SnNLSitTdHI1ZGNC?= =?utf-8?B?L0RPVUNOZVpRYTBxbHBGL1kzV2xqTWlQS1E2SXNvMjdFTWs4Q1BrSVIzaXh4?= =?utf-8?B?c0VWYjgxc1hWelJoa3pWbXJKRzRKNFZwbGt1bHFaQW1pZm4zbU5CTXd4a2Rs?= =?utf-8?B?MXdjWEVQVlBEZGN1dFRyY3Nwa3Z5OHU4L0w5NVlZRGlGSWc3ZUhVWDVLZUJO?= =?utf-8?B?ZHpCcUFIQ0RkeGZidERVcTdielhoODJMQ3puRkhlZWQ1RTBSQUZRcnEwVEtq?= =?utf-8?B?UGcyeEVyM0RmcFBsSi9ERG9BV1h0bVJFZlkxZzUvTmdJRUxDS1hxZzVrSE0x?= =?utf-8?B?QzlsMDQrNHlQYkR3Y3NReHQ5MjlLYitEbWpjT2lrUGNHSlcrdzk1bjBUeU8w?= =?utf-8?B?djdMdnlkMW0xdTdNVFJqUld5dGZMUmdySTRtM0VyUHRWaHlOemduOCswRWVW?= =?utf-8?B?c2krdmk0RHBmQmtQMnhEU1g4Rk1ya3FIZkFTWXFhaWlVSEk4R2RadUY3Y2cx?= =?utf-8?B?ZnlERk80VHRlcnpFaHlhbE9mVk5aVm9GSUdMUzJkWE9rZ1V5RCtZVGt5WjBo?= =?utf-8?B?cy9ZN2J5bkV5aG1xUTNXTHRYMFBRUVdud2hVTi9zMzRnYlAwbXlEa2xWNmhh?= =?utf-8?B?cG12V0VqcmtwUzF3T1NrbzRVWVZKR3VlVjE3NVIvMDJlNW1iNGdIbW9Jd0VP?= =?utf-8?B?QTZhckVML2MwWVZqZzN5UnVWb0o4djIvbDVuUWU5QU5pSHoyNGFNL0RpSFo1?= =?utf-8?B?VFo5VzRUazNGWUVMSGlZQXdSNm9aSWhZQTNXSDNIYzA3dkdvUWdvYXd3clhS?= =?utf-8?B?QW5kZkI0TisxbWdkOVlYUU13c0huNUJzTTN4cWpiTHFZTjFkK0hBSFA3U2pi?= =?utf-8?B?c3BhUmxieVcweUlSVnVZZlIrNFRFajhaNFBwUUdqRTIvMUZMeFIwWmQyU08v?= =?utf-8?B?SWFYT3RVOGF0VFFyZkZJNHFNNko3QkJNWU5ma1dhb3ZvSjVxK25WQzBzWE9U?= =?utf-8?B?K2JmcTRuVTZBNzFUT0RnSS9GY3ljUkJnbnlObU1sNnA4ejdUN1FCeHFRdVFl?= =?utf-8?B?VmlIYVk4TGNnWWlFclBuVzh0V2dpd3hqRU4zTndabmU0b0ZQVXN0RnVqSEgw?= =?utf-8?B?ZndWVEM2ektySkIrQmFkVHJFOVhxUWJnR0ZzNXNZSWg1RjR1L3pXL3NuVzRv?= =?utf-8?B?SjlrTUxXVUtONHc5Q3VxZURNbU44RGRVSUxpTXB3MzYyS3FDWWNJZjlPZmg0?= =?utf-8?B?MlU2L0dGV3FNVXZmYk5WNEFDTW01L05RRXAxOXhmdkZ0OTBMUHVpTWZlTHpM?= =?utf-8?B?YWtCMFZWSElIRmYvcFh2TmM4RmkzUDdHQmwrajhkZWxTbUl0c0diRldpTE5O?= =?utf-8?B?TG5WRWlXRlpxTWgrMHljb3VoSzlVcXVkY21COXRoVmJsa2hoUFB4Ym1FS2M2?= =?utf-8?B?QmErV01ibGpuaHlGd01PajNvaVdFTGlQRy8wM01JaVR4NHJHbHdRVU5lcVdx?= =?utf-8?B?VzFzaUNBR292Y1ZMUnBMMEdFNXFTMGZ5Zm1OdTRQam41NmViTDJtLzhsMXl6?= =?utf-8?B?Z0E9PQ==?= Content-ID: <5F0AA69DFE0A5E429ABA2A89F67C9368@apcprd03.prod.outlook.com> MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SL2PR03MB4204.apcprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: be79dcbc-1dd6-41e3-c268-08db6caf35f9 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Jun 2023 08:13:18.3110 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a7687ede-7a6b-4ef6-bace-642f677fbe31 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: CdUCp+ufE5/prPXD4q/t+yYr3i6qzT3RStwO0WE8jJS2lJxZki/Ukwyurwf4/FD4zsRpUU+f3E9tHl476gU1b1EyFoV0FXc8FAmFcPfNego= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEYPR03MB7009 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230614_011329_578152_B1FBDD77 X-CRM114-Status: GOOD ( 24.54 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi Mathieu, On Mon, 2023-06-12 at 11:25 -0600, Mathieu Poirier wrote: > On Wed, Jun 07, 2023 at 03:22:16PM +0800, Tinghan Shen wrote: > > This is the preliminary step for probing multi-core SCP. > > The initialization procedure for remoteproc is similar for both > > single-core and multi-core architectures and is reusing to avoid > > redundant code. > > > > Rewrite the probing flow of single-core SCP to adapt with the 'cluster' > > concept needed by probing the multi-core SCP. The main differences > > are, > > - the SCP core object(s) is maintained at the cluster list instead of at > > the platofmr device driver data property. > > - save the cluster information at the platofmr device driver data property. > > - In order to keep the compatibility of exported SCP APIs which getting > > the SCP core object by SCP node phandle, move the SCP core object > > pointers to the platform device platform data property. > > > > The registers of config and l1tcm are shared for multi-core > > SCP. Reuse the mapped addresses for all cores. > > > > Signed-off-by: Tinghan Shen > > --- > > drivers/remoteproc/mtk_common.h | 2 + > > drivers/remoteproc/mtk_scp.c | 151 +++++++++++++++++++++++--------- > > 2 files changed, 112 insertions(+), 41 deletions(-) > > > > diff --git a/drivers/remoteproc/mtk_common.h b/drivers/remoteproc/mtk_common.h > > index c0905aec3b4b..56395e8664cb 100644 > > --- a/drivers/remoteproc/mtk_common.h > > +++ b/drivers/remoteproc/mtk_common.h > > @@ -128,6 +128,8 @@ struct mtk_scp { > > size_t dram_size; > > > > struct rproc_subdev *rpmsg_subdev; > > + > > + struct list_head elem; > > }; > > > > /** > > diff --git a/drivers/remoteproc/mtk_scp.c b/drivers/remoteproc/mtk_scp.c > > index d66822dad943..c8fc6b46f82b 100644 > > --- a/drivers/remoteproc/mtk_scp.c > > +++ b/drivers/remoteproc/mtk_scp.c > > @@ -23,6 +23,14 @@ > > #define MAX_CODE_SIZE 0x500000 > > #define SECTION_NAME_IPI_BUFFER ".ipi_buffer" > > > > +struct mtk_scp_of_cluster { > > + void __iomem *reg_base; > > + void __iomem *l1tcm_base; > > + size_t l1tcm_size; > > + phys_addr_t l1tcm_phys; > > + struct list_head mtk_scp_list; > > +}; > > + > > /** > > * scp_get() - get a reference to SCP. > > * > > @@ -51,7 +59,7 @@ struct mtk_scp *scp_get(struct platform_device *pdev) > > return NULL; > > } > > > > - return platform_get_drvdata(scp_pdev); > > + return *(struct mtk_scp **)dev_get_platdata(&scp_pdev->dev); > > } > > EXPORT_SYMBOL_GPL(scp_get); > > > > @@ -810,14 +818,14 @@ static void scp_unmap_memory_region(struct mtk_scp *scp) > > static int scp_register_ipi(struct platform_device *pdev, u32 id, > > ipi_handler_t handler, void *priv) > > { > > - struct mtk_scp *scp = platform_get_drvdata(pdev); > > + struct mtk_scp *scp = *(struct mtk_scp **)dev_get_platdata(&pdev->dev); > > > > return scp_ipi_register(scp, id, handler, priv); > > } > > > > static void scp_unregister_ipi(struct platform_device *pdev, u32 id) > > { > > - struct mtk_scp *scp = platform_get_drvdata(pdev); > > + struct mtk_scp *scp = *(struct mtk_scp **)dev_get_platdata(&pdev->dev); > > > > scp_ipi_unregister(scp, id); > > } > > @@ -825,7 +833,7 @@ static void scp_unregister_ipi(struct platform_device *pdev, u32 id) > > static int scp_send_ipi(struct platform_device *pdev, u32 id, void *buf, > > unsigned int len, unsigned int wait) > > { > > - struct mtk_scp *scp = platform_get_drvdata(pdev); > > + struct mtk_scp *scp = *(struct mtk_scp **)dev_get_platdata(&pdev->dev); > > > > return scp_ipi_send(scp, id, buf, len, wait); > > } > > @@ -855,7 +863,8 @@ static void scp_remove_rpmsg_subdev(struct mtk_scp *scp) > > } > > } > > > > -static int scp_probe(struct platform_device *pdev) > > +static struct mtk_scp *scp_rproc_init(struct platform_device *pdev, > > + struct mtk_scp_of_cluster *scp_cluster) > > { > > struct device *dev = &pdev->dev; > > struct device_node *np = dev->of_node; > > @@ -867,52 +876,42 @@ static int scp_probe(struct platform_device *pdev) > > > > ret = rproc_of_parse_firmware(dev, 0, &fw_name); > > if (ret < 0 && ret != -EINVAL) > > - return ret; > > + return ERR_PTR(ret); > > > > rproc = devm_rproc_alloc(dev, np->name, &scp_ops, fw_name, sizeof(*scp)); > > - if (!rproc) > > - return dev_err_probe(dev, -ENOMEM, "unable to allocate remoteproc\n"); > > + if (!rproc) { > > + dev_err(dev, "unable to allocate remoteproc\n"); > > + return ERR_PTR(-ENOMEM); > > + } > > > > scp = rproc->priv; > > scp->rproc = rproc; > > scp->dev = dev; > > scp->data = of_device_get_match_data(dev); > > - platform_set_drvdata(pdev, scp); > > + platform_device_add_data(pdev, &scp, sizeof(scp)); > > + > > + scp->reg_base = scp_cluster->reg_base; > > + scp->l1tcm_base = scp_cluster->l1tcm_base; > > + scp->l1tcm_size = scp_cluster->l1tcm_size; > > + scp->l1tcm_phys = scp_cluster->l1tcm_phys; > > > > res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "sram"); > > scp->sram_base = devm_ioremap_resource(dev, res); > > - if (IS_ERR(scp->sram_base)) > > - return dev_err_probe(dev, PTR_ERR(scp->sram_base), > > - "Failed to parse and map sram memory\n"); > > + if (IS_ERR(scp->sram_base)) { > > + dev_err(dev, "Failed to parse and map sram memory\n"); > > + return ERR_PTR(PTR_ERR(scp->sram_base)); > > Can you spot what is wrong here? After look around of the header, I thought that I should use the ERR_CAST instead. It fix the sparse warning and prevent the weired double type casting. If this is ok, I will fix it this way in the next version. Best regards, TingHan > > > + } > > > > scp->sram_size = resource_size(res); > > scp->sram_phys = res->start; > > > > - /* l1tcm is an optional memory region */ > > - res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "l1tcm"); > > - scp->l1tcm_base = devm_ioremap_resource(dev, res); > > - if (IS_ERR(scp->l1tcm_base)) { > > - ret = PTR_ERR(scp->l1tcm_base); > > - if (ret != -EINVAL) { > > - return dev_err_probe(dev, ret, "Failed to map l1tcm memory\n"); > > - } > > - } else { > > - scp->l1tcm_size = resource_size(res); > > - scp->l1tcm_phys = res->start; > > - } > > - > > - scp->reg_base = devm_platform_ioremap_resource_byname(pdev, "cfg"); > > - if (IS_ERR(scp->reg_base)) > > - return dev_err_probe(dev, PTR_ERR(scp->reg_base), > > - "Failed to parse and map cfg memory\n"); > > - > > ret = scp->data->scp_clk_get(scp); > > if (ret) > > - return ret; > > + return ERR_PTR(ret); > > > > ret = scp_map_memory_region(scp); > > if (ret) > > - return ret; > > + return ERR_PTR(ret); > > > > mutex_init(&scp->send_lock); > > for (i = 0; i < SCP_IPI_MAX; i++) > > @@ -939,11 +938,7 @@ static int scp_probe(struct platform_device *pdev) > > goto remove_subdev; > > } > > > > - ret = rproc_add(rproc); > > - if (ret) > > - goto remove_subdev; > > - > > - return 0; > > + return scp; > > > > remove_subdev: > > scp_remove_rpmsg_subdev(scp); > > @@ -954,15 +949,13 @@ static int scp_probe(struct platform_device *pdev) > > mutex_destroy(&scp->ipi_desc[i].lock); > > mutex_destroy(&scp->send_lock); > > > > - return ret; > > + return ERR_PTR(ret); > > } > > > > -static void scp_remove(struct platform_device *pdev) > > +static void scp_free(struct mtk_scp *scp) > > { > > - struct mtk_scp *scp = platform_get_drvdata(pdev); > > int i; > > > > - rproc_del(scp->rproc); > > scp_remove_rpmsg_subdev(scp); > > scp_ipi_unregister(scp, SCP_IPI_INIT); > > scp_unmap_memory_region(scp); > > @@ -971,6 +964,82 @@ static void scp_remove(struct platform_device *pdev) > > mutex_destroy(&scp->send_lock); > > } > > > > +static int scp_cluster_init(struct platform_device *pdev) > > +{ > > + struct mtk_scp_of_cluster *scp_cluster = platform_get_drvdata(pdev); > > + struct list_head *cluster = &scp_cluster->mtk_scp_list; > > + struct mtk_scp *scp; > > + int ret; > > + > > + scp = scp_rproc_init(pdev, scp_cluster); > > + if (IS_ERR(scp)) > > + return PTR_ERR(scp); > > + > > + ret = rproc_add(scp->rproc); > > + if (ret) { > > + dev_err(dev, "Failed to add rproc\n"); > > + scp_free(scp); > > + return ret; > > + } > > + > > + list_add_tail(&scp->elem, cluster); > > + > > + return 0; > > +} > > + > > +static int scp_probe(struct platform_device *pdev) > > +{ > > + struct device *dev = &pdev->dev; > > + struct mtk_scp_of_cluster *scp_cluster; > > + struct resource *res; > > + int ret; > > + > > + scp_cluster = devm_kzalloc(dev, sizeof(*scp_cluster), GFP_KERNEL); > > + if (!scp_cluster) > > + return -ENOMEM; > > + > > + res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "cfg"); > > + scp_cluster->reg_base = devm_ioremap_resource(dev, res); > > + if (IS_ERR(scp_cluster->reg_base)) > > + return dev_err_probe(dev, PTR_ERR(scp_cluster->reg_base), > > + "Failed to parse and map cfg memory\n"); > > + > > + /* l1tcm is an optional memory region */ > > + res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "l1tcm"); > > + scp_cluster->l1tcm_base = devm_ioremap_resource(dev, res); > > + if (IS_ERR(scp_cluster->l1tcm_base)) { > > + ret = PTR_ERR(scp_cluster->l1tcm_base); > > + if (ret != -EINVAL) > > + return dev_err_probe(dev, ret, "Failed to map l1tcm memory\n"); > > + > > + scp_cluster->l1tcm_base = NULL; > > + } else { > > + scp_cluster->l1tcm_size = resource_size(res); > > + scp_cluster->l1tcm_phys = res->start; > > + } > > + > > + INIT_LIST_HEAD(&scp_cluster->mtk_scp_list); > > + platform_set_drvdata(pdev, scp_cluster); > > + > > + ret = scp_cluster_init(pdev); > > + if (ret) > > + return ret; > > + > > + return 0; > > +} > > + > > +static void scp_remove(struct platform_device *pdev) > > +{ > > + struct mtk_scp_of_cluster *scp_cluster = platform_get_drvdata(pdev); > > + struct mtk_scp *scp, *temp; > > + > > + list_for_each_entry_safe_reverse(scp, temp, &scp_cluster->mtk_scp_list, elem) { > > + list_del(&scp->elem); > > + rproc_del(scp->rproc); > > + scp_free(scp); > > + } > > +} > > + > > static const struct mtk_scp_of_data mt8183_of_data = { > > .scp_clk_get = mt8183_scp_clk_get, > > .scp_before_load = mt8183_scp_before_load, > > -- > > 2.18.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel