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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 079FDC4332F for ; Mon, 1 Nov 2021 08:01:16 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id B486F60F70 for ; Mon, 1 Nov 2021 08:01:15 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org B486F60F70 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=oss.nxp.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org 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:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=unlJXug7DDp7+ehbphxRUYEq/XuhAPpeipktYGVulwc=; b=YPFM83yezUPT9t AZWoOCQa1986VkZs2ZA02bJFwn98VtAyc7HvVT+oXmo0JoOQ7i3F3iOyLJqNKZhYO3xPPutpOjUJr 5o/MT1tpOSqLE/VQ5h05AM4xgFjHW+2CtL7p7i8zMilcsGulMXotaxsQNjoHi3iQ0JZxkdl4EBlQG vKb60RLxh2hjLySoB42Z2TdRb1DkWCRkQ6kjmYuk7hckRepcwgrV905dR4bdhJ9MIaEs+k8n9eShj AAyKY+OoNtIwTFoLHcU40e5a8oZrzNs9/b9JAKImSXragD9bM3OUSJciNyzWE1FNGFqHK4BLnb8z3 WX2kEWcc3idcSSKnrGRw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mhSFV-00Fbnu-Sh; Mon, 01 Nov 2021 08:00:57 +0000 Received: from mail-vi1eur05on2076.outbound.protection.outlook.com ([40.107.21.76] helo=EUR05-VI1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mhSFR-00FblX-BW for linux-mediatek@lists.infradead.org; Mon, 01 Nov 2021 08:00:56 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Z1e7AvgBzE1k844blub1AYAad8HBxKsWIpP++b7KMIkhycUSaF5z4HKD+OrCEVLS8Ns4eoQjhmgpgwvZp1aDQ69L5ZhvgV9UPrPG4vouDZ2j9YV1QTq6iojiPoc5o2/Obzz6sC4RH8dfgxnKRlpOl6W9NzlCuQvG/VGrONueerZjyueZlGqGvEOxr/RifAQ21FbwweP0OF40L1ICZSv4e+wG60dbucfY4aEy3FbUBcbIAGUoS/8N5Hy47jYqt77TT/BTaifXQPpd8mjC5TlfeYouhFSSKpTn0Z/7HdyI25fPpjtvNs5vZbnsPfPvOeVIj6+zjmyvQQ4EEMSPBk4sTw== 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=QK3wmLOkLI5eOaYP33H8x3DD08z4kqfJ2cGMooeGb9I=; b=Dx9MJVqJIx3xQk9bpmbrojykVClGX/Cv3TMVPACO57ODvpzi/myASwN8MrNr6M61Uetnj8PQB44iog8LqtVPGCKTeAMLZo6W8iYEiAjDg1DVsMm31gLY4o2cL9yaa7EyA6Ro0qFALl4DpEWSm2YOe6I/uPMYvA//xm41nohRZkW/Hvmp/t1wHYYmAGQnXFwKS9gfAlR5E11POJawxnLzeQOYVgnGfxCfAaIrTw7mZVikJ3efOQOm18wOuYaqlZeCypgz6Tr4+0G08G95+On3rt9GXqHCQZspntu/BO5+H+j5J2YCwXtRNrAToEOcW7RCkGUIn6KR5ur5+3IdWVgiOw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector2-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QK3wmLOkLI5eOaYP33H8x3DD08z4kqfJ2cGMooeGb9I=; b=NvQfYI3bnHwY+2zhcxKfxEXZxXz7Gp2M3+YYEeviSspezUBm1vrGmvifwh62yE2O85QOVVgmrFw1bKciC5lOh3KICJwR3eyMDDJ2XDsbQcfGx6RfRTtxPh455NaMjti8Ms3HjSK+VeSos2L4m2etYywDwz+uCKTabV+6V/FF+QA= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from VI1PR04MB5151.eurprd04.prod.outlook.com (2603:10a6:803:61::28) by VI1PR0402MB3664.eurprd04.prod.outlook.com (2603:10a6:803:1e::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.15; Mon, 1 Nov 2021 08:00:48 +0000 Received: from VI1PR04MB5151.eurprd04.prod.outlook.com ([fe80::85af:f8be:aa99:ba5f]) by VI1PR04MB5151.eurprd04.prod.outlook.com ([fe80::85af:f8be:aa99:ba5f%3]) with mapi id 15.20.4649.019; Mon, 1 Nov 2021 08:00:48 +0000 From: Daniel Baluta To: broonie@kernel.org, alsa-devel@alsa-project.org Cc: peter.ujfalusi@linux.intel.com, ranjani.sridharan@linux.intel.com, guennadi.liakhovetski@linux.intel.com, daniel.baluta@gmail.com, linux-mediatek@lists.infradead.org, kai.vehmanen@linux.intel.com, lgirdwood@gmail.com, pierre-louis.bossart@linux.intel.com, YC Hung , Daniel Baluta Subject: [PATCH 1/6] ASoC: SOF: mediatek: Add mt8195 hardware support Date: Mon, 1 Nov 2021 10:00:21 +0200 Message-Id: <20211101080026.297360-2-daniel.baluta@oss.nxp.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20211101080026.297360-1-daniel.baluta@oss.nxp.com> References: <20211101080026.297360-1-daniel.baluta@oss.nxp.com> X-ClientProxiedBy: AM3PR07CA0070.eurprd07.prod.outlook.com (2603:10a6:207:4::28) To VI1PR04MB5151.eurprd04.prod.outlook.com (2603:10a6:803:61::28) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (2a02:2f08:5719:1500:cdb2:376b:257c:429a) by AM3PR07CA0070.eurprd07.prod.outlook.com (2603:10a6:207:4::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.9 via Frontend Transport; Mon, 1 Nov 2021 08:00:47 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0cbfb0cd-ede8-4615-937a-08d99d0db711 X-MS-TrafficTypeDiagnostic: VI1PR0402MB3664: X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: A2GB3ffQBGKoaRc3ar/nMrJemXJ7Kwnx6GsddxR5QC4hueVhfR5spV/tAX2AIQD+yT28D13PTSA42K8ETqVkWeACc351BDzb5lzsYuvnuj9a2SdzYPj+w2hIRtr8iJeGVDcUOORdq+utaLO1UenQavW0jnnV2QGa+mtWiMyo6T2cD8NmmDGn0wxfkcEjh2zStHXS2At/jZu9EwQ7XqGUYVQuZbWeq+3IxEAvvElwiNyEzdizeYM2wXLN/Yf7s6UBN0oJ1UD1wqzcVl7P9SOMG2FV8j4nnv7wkfNwD7pYo+r3TlIfi9mFlm+cYMgO9mPdm27sIol3sfpcrhOWTL+nS2d9XbbPj/RH0fCSfgzsGEG4VEzrlP/cr4omSpkE5YgVbvn9+rKJJyNuOxqYTr7ERimgRRUUsslQrv1cXaM4B6p2nk1ZK4SitafinzAJYX/2mALaZS2Yg1SDWcX0G6D0R/Yj+KSb8afyqTHrfylEpT2DCmqa1cDSW/49gL7kQn69gTH1EkZN5kgzmM9KycmaGEHwVLO3w3n+X5Bq32mxiwRMuYRkegHty+Zukoe7+0tsOGl7Tv3+YWJlWuzWvPWbQBaUy0HnrazSPqv8qw4SMvW3p4CtTQtBi0GFaPI0+wASyeFewpgHF+yjrELHAq/3Sw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR04MB5151.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(86362001)(54906003)(6666004)(66574015)(7416002)(6512007)(316002)(186003)(52116002)(508600001)(30864003)(5660300002)(4326008)(2616005)(1076003)(66946007)(66476007)(66556008)(6486002)(6506007)(8676002)(8936002)(38100700002)(2906002)(83380400001)(44832011); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ODVnZXc5SHJKNkdPaUprRjlwQ0pPVDBFMzlUcnJUNXF5TVBkNWZlKzA4Q1pH?= =?utf-8?B?VGlNSlpFOFFGM2pZb0VzWVpRSlRlNXJ1WDR2WFNjNTVIa0FVYUsrVVpIYUIz?= =?utf-8?B?cFFpcE1OQXg1M2t1OUtFRTB2MVF1dFBDUjk4ZDdBS1p5cU9DdnFDU282RjI2?= =?utf-8?B?ajI5aWJrS3VxbE94YnNRSjEwVUtVZUhIeDhJSDZEaFRJck5IV09VOHlTSFNY?= =?utf-8?B?SGh0OHM0OEo3UjlYU29hRFFqcU4vTDlyY2ZMR0xHcWZlVjRVVmJMbytGbE5H?= =?utf-8?B?R2xicG5ieGRQYWJvU1dUTmJ3Zzdac1JONENqSTdmQUtVZEFldkpFZjdQK3JU?= =?utf-8?B?dlJ4YlgzMk8rODhNY2VIU3JDS3llZ3poOTE3TGRScTZsSUtJODBSUm9FMENU?= =?utf-8?B?MkE3VzVvZXhIY2k5N0d2UFp0Ri8vUlNQbWJFV21jZ081WDMwWFBzbnVheXJR?= =?utf-8?B?UEYvQWI5SHk2M1p6N1BJWExUdnRPVlJMMllDWmM2aTNzeUVpOGdGMFJ0SEd6?= =?utf-8?B?VksvanM1bC9hcG84M25CRUdYLzhrK2tPQklhTllETUh2R2R0VDNYck5TVUtC?= =?utf-8?B?RnFGdHNCd0VVYzdlMWFydHJlNnBrcHM0cC9kTVcxUEp1NC80ME1vRVQwbCtC?= =?utf-8?B?NTdoM2RacDdzUC9wMGR3dkoraWxocGtoWlJ6bTVPWUxsZmZmd0ZRb1hZTmI4?= =?utf-8?B?c0Vrd29kMWhOdENzOGJNdW1MWUIzOFQvRGFlakY3TjExZjVDcWpWeVM1Z2tF?= =?utf-8?B?WWJLMDg4c0FlMlNGYkpkRjIzcGRHbElvVk8yMEY1aFAvblA0Zkx0d2luVm0x?= =?utf-8?B?T0pwYllrZTIxelQ2YmRWSTlhOVgyaE9ncS9tb2p4Nkx4Vmw3ajlweGZ2YWVy?= =?utf-8?B?WkdGMi9hbE1MbWlidEtoaElEMGN0TStobEpmbUJmZGV0OUhxVVFiMDBNRFJ0?= =?utf-8?B?VUhZZFQ3STZTLytDcENpZjZ1MEwxZUx2VlpPV0JKRlVvU1hHUEgrSVUyelVw?= =?utf-8?B?cjNKRHRWSFBZb1hXMFNBdXk5TnpJQk5kREZBaUU0WlNXOFlpeFArOTRoRzNs?= =?utf-8?B?WlZqK0VZKzVlRXE3S29aRTA3dUhhQ0ZLc1Q0Q2hlY3RGcHNaUXRpM0I5dGVj?= =?utf-8?B?U1U5aElPVjZueFc2OGJEaEl4eVdXc3RLMlBzbUozaEE1Z2JlaVlZRXdXcStx?= =?utf-8?B?Y0tKWURjald2MUZ4RmlsNG5LYWpNODNOUjN4aVVsVk1aeU82aUxEZ0prZGxV?= =?utf-8?B?UGxWbWF2R1pBSHFSUThMV0l1ZDNoNUZYUHpBUzNENVVsVG9LN1lwaGo2d01a?= =?utf-8?B?THJ2MzRndkxKYW04VEU5aFg3L1hDdGQzT3dnTDgwam1DSUE4TXRTZENuelNl?= =?utf-8?B?a2Z4aFNzOU1CZDRlbTR1WDQ0TWZzaEJBUUVvWFVsUWlGL3dEbHc0Zk1wallQ?= =?utf-8?B?M1NZTzRBdzRBUFZFMXMybWVpamtVNUROYzVqcjNjMEZ2c1A3c3ZkeGZNMktq?= =?utf-8?B?NlhzWDRxMkw5SDJRWUJkZ2NzaWVqQ0VDNjNJWVlZWWpKS2s2ZFlSbUxjSURz?= =?utf-8?B?eG4vZWVCSi94VVJHM0NYaGc5bFRuTjJWUVhIRldWTHNOcUV4cXdGV3dWUFps?= =?utf-8?B?TW1td0lDdUFiejB0c0dyMGg1bityQlBJZnVqRlh4NWdGbjlqNnVWbm4xUTRL?= =?utf-8?B?bmRka0VhSDNyTFdWOTcwS3YwblZ6WGdrcEdtWmtnbnZ6TW9KZmFWTGdSWVR5?= =?utf-8?B?OXpsL2traDh6SjJqcVViMWV2ejR3b3kvRlFnaFlNL0dLbHlqa3ZtY1FpWitk?= =?utf-8?B?R0kySE9JMCtlVG5zY040UEg2TnRFbTI1TEdwMjFoZGZJZzc5bkYwQi81enAx?= =?utf-8?B?eUJEOHh2aFFVNkxZUGl3RWI4OFBubGp1YjN6SzBCcGFUcnNpZm9ndFBZRTI3?= =?utf-8?B?Qm5ydm9ZNGdxY3h4T0FKR0k0M0xKTDdORmlQOWJXUVBjRG95a3BqdkZxUFFI?= =?utf-8?B?NDdYdUhOWUd1bXExOGpHYUNLbmgwY282SFMybVR6NTJXbE1jZW5uNTdXMUdn?= =?utf-8?B?dDFkdGEwUXBzc0ZuMlpNY0pNVXZGeGc2TS9WSTZKNVp4VUlvaFB1OWN6QWs1?= =?utf-8?B?UHBabm5pLzR5Ukt3TXphWE1hWFdPUmRtMENiaG5MSzQxYjdOb3NwcU5EWUFL?= =?utf-8?B?QnFxeGNBUW9ILzd4Zk9vZURjcGtKbm9pUmxoNXBTQ0gwTkRoVFVvVXRLamhi?= =?utf-8?Q?I7Wy6DTCXy4DvqHTwmQA3x0XD297lcCvr5p+puaOUE=3D?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0cbfb0cd-ede8-4615-937a-08d99d0db711 X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5151.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Nov 2021 08:00:48.3752 (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: f1O+RrTUwG3Iv98kze995WYFuPA0RxkmPnuBecPa00vrA/nyL1FKCsY6kBryVSzr3nVPMkXG1Q7dBT9twSvUTw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0402MB3664 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211101_010053_607689_D8B9F290 X-CRM114-Status: GOOD ( 19.17 ) X-BeenThere: linux-mediatek@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="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org RnJvbTogWUMgSHVuZyA8eWMuaHVuZ0BtZWRpYXRlay5jb20+CgpUaGlzIHBhdGNoIGluaXRpYWxp emUgdG8gc3VwcG9ydCBTT0Ygb24gTWVkaWF0ZWsgbXQ4MTk1IHBsYXRmb3JtLgpNVDgxOTUgaGFz IGZvdXIgQ29ydGV4IEE3OCBjb3JlcyBwYWlyZWQgd2l0aCBmb3VyIENvcnRleCBBNTUgY29yZXMu Ckl0IGFsc28gaGFzIENhZGVuY2UgSGlGaS00IERTUCBzaW5nbGUgY29yZS4gVGhlcmUgYXJlIHNo YXJlZCBEUkFNIGFuZAptYWlsYm94IGludGVycnVwdCBiZXR3ZWVuIEFQIGFuZCBEU1AgdG8gdXNl IGZvciBJUEMgY29tbXVuaWNhdGlvbi4KClNpZ25lZC1vZmYtYnk6IFlDIEh1bmcgPHljLmh1bmdA bWVkaWF0ZWsuY29tPgpSZXZpZXdlZC1ieTogUMOpdGVyIFVqZmFsdXNpIDxwZXRlci51amZhbHVz aUBsaW51eC5pbnRlbC5jb20+ClJldmlld2VkLWJ5OiBQaWVycmUtTG91aXMgQm9zc2FydCA8cGll cnJlLWxvdWlzLmJvc3NhcnRAbGludXguaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogUmFuamFuaSBT cmlkaGFyYW4gPHJhbmphbmkuc3JpZGhhcmFuQGxpbnV4LmludGVsLmNvbT4KUmV2aWV3ZWQtYnk6 IEthaSBWZWhtYW5lbiA8a2FpLnZlaG1hbmVuQGxpbnV4LmludGVsLmNvbT4KUmV2aWV3ZWQtYnk6 IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8Z3Vlbm5hZGkubGlha2hvdmV0c2tpQGxpbnV4LmludGVs LmNvbT4KU2lnbmVkLW9mZi1ieTogRGFuaWVsIEJhbHV0YSA8ZGFuaWVsLmJhbHV0YUBueHAuY29t PgotLS0KIHNvdW5kL3NvYy9zb2YvS2NvbmZpZyAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNv dW5kL3NvYy9zb2YvTWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgICAxICsKIHNvdW5kL3NvYy9z b2YvbWVkaWF0ZWsvS2NvbmZpZyAgICAgICAgIHwgIDMzICsrKwogc291bmQvc29jL3NvZi9tZWRp YXRlay9NYWtlZmlsZSAgICAgICAgfCAgIDIgKwogc291bmQvc29jL3NvZi9tZWRpYXRlay9hZHNw X2hlbHBlci5oICAgfCAgNDkgKysrKwogc291bmQvc29jL3NvZi9tZWRpYXRlay9tZWRpYXRlay1v cHMuaCAgfCAgIDggKwogc291bmQvc29jL3NvZi9tZWRpYXRlay9tdDgxOTUvTWFrZWZpbGUgfCAg IDQgKwogc291bmQvc29jL3NvZi9tZWRpYXRlay9tdDgxOTUvbXQ4MTk1LmMgfCAzMzQgKysrKysr KysrKysrKysrKysrKysrKysrKwogc291bmQvc29jL3NvZi9tZWRpYXRlay9tdDgxOTUvbXQ4MTk1 LmggfCAxNTUgKysrKysrKysrKysrCiA5IGZpbGVzIGNoYW5nZWQsIDU4NyBpbnNlcnRpb25zKCsp CiBjcmVhdGUgbW9kZSAxMDA2NDQgc291bmQvc29jL3NvZi9tZWRpYXRlay9LY29uZmlnCiBjcmVh dGUgbW9kZSAxMDA2NDQgc291bmQvc29jL3NvZi9tZWRpYXRlay9NYWtlZmlsZQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNvdW5kL3NvYy9zb2YvbWVkaWF0ZWsvYWRzcF9oZWxwZXIuaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNvdW5kL3NvYy9zb2YvbWVkaWF0ZWsvbWVkaWF0ZWstb3BzLmgKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzb3VuZC9zb2Mvc29mL21lZGlhdGVrL210ODE5NS9NYWtlZmlsZQogY3JlYXRl IG1vZGUgMTAwNjQ0IHNvdW5kL3NvYy9zb2YvbWVkaWF0ZWsvbXQ4MTk1L210ODE5NS5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgc291bmQvc29jL3NvZi9tZWRpYXRlay9tdDgxOTUvbXQ4MTk1LmgKCmRp ZmYgLS1naXQgYS9zb3VuZC9zb2Mvc29mL0tjb25maWcgYi9zb3VuZC9zb2Mvc29mL0tjb25maWcK aW5kZXggODlmYmE0ZmE2NzFhLi5mZDZhZTA2MjlhMWMgMTAwNjQ0Ci0tLSBhL3NvdW5kL3NvYy9z b2YvS2NvbmZpZworKysgYi9zb3VuZC9zb2Mvc29mL0tjb25maWcKQEAgLTIzNiw2ICsyMzYsNyBA QCBjb25maWcgU05EX1NPQ19TT0ZfUFJPQkVfV09SS19RVUVVRQogc291cmNlICJzb3VuZC9zb2Mv c29mL2FtZC9LY29uZmlnIgogc291cmNlICJzb3VuZC9zb2Mvc29mL2lteC9LY29uZmlnIgogc291 cmNlICJzb3VuZC9zb2Mvc29mL2ludGVsL0tjb25maWciCitzb3VyY2UgInNvdW5kL3NvYy9zb2Yv bWVkaWF0ZWsvS2NvbmZpZyIKIHNvdXJjZSAic291bmQvc29jL3NvZi94dGVuc2EvS2NvbmZpZyIK IAogZW5kaWYKZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9zb2YvTWFrZWZpbGUgYi9zb3VuZC9zb2Mv c29mL01ha2VmaWxlCmluZGV4IDMyYTVmNjM3MGM1Yi4uNmY3NjkyN2UwYTFjIDEwMDY0NAotLS0g YS9zb3VuZC9zb2Mvc29mL01ha2VmaWxlCisrKyBiL3NvdW5kL3NvYy9zb2YvTWFrZWZpbGUKQEAg LTI0LDMgKzI0LDQgQEAgb2JqLSQoQ09ORklHX1NORF9TT0NfU09GX0lOVEVMX1RPUExFVkVMKSAr PSBpbnRlbC8KIG9iai0kKENPTkZJR19TTkRfU09DX1NPRl9JTVhfVE9QTEVWRUwpICs9IGlteC8K IG9iai0kKENPTkZJR19TTkRfU09DX1NPRl9BTURfVE9QTEVWRUwpICs9IGFtZC8KIG9iai0kKENP TkZJR19TTkRfU09DX1NPRl9YVEVOU0EpICs9IHh0ZW5zYS8KK29iai0kKENPTkZJR19TTkRfU09D X1NPRl9NVEtfVE9QTEVWRUwpICs9IG1lZGlhdGVrLwpkaWZmIC0tZ2l0IGEvc291bmQvc29jL3Nv Zi9tZWRpYXRlay9LY29uZmlnIGIvc291bmQvc29jL3NvZi9tZWRpYXRlay9LY29uZmlnCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWVhY2YwZTViZmJiCi0tLSAvZGV2 L251bGwKKysrIGIvc291bmQvc29jL3NvZi9tZWRpYXRlay9LY29uZmlnCkBAIC0wLDAgKzEsMzMg QEAKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4wLW9ubHkgT1IgQlNELTMtQ2xh dXNlKQorCitjb25maWcgU05EX1NPQ19TT0ZfTVRLX1RPUExFVkVMCisJYm9vbCAiU09GIHN1cHBv cnQgZm9yIE1USyBhdWRpbyBEU1BzIgorCWRlcGVuZHMgb24gQVJNNjQgfHwgQ09NUElMRV9URVNU CisJZGVwZW5kcyBvbiBTTkRfU09DX1NPRl9PRgorCWhlbHAKKwkgIFRoaXMgYWRkcyBzdXBwb3J0 IGZvciBTb3VuZCBPcGVuIEZpcm13YXJlIGZvciBNZWRpYXRlayBwbGF0Zm9ybXMuCisJICBJdCBp cyB0b3AgbGV2ZWwgZm9yIGFsbCBtZWRpYXRlayBwbGF0Zm9ybXMuCisJICBTYXkgWSBpZiB5b3Ug aGF2ZSBzdWNoIGEgZGV2aWNlLgorCSAgSWYgdW5zdXJlIHNlbGVjdCAiTiIuCisKK2lmIFNORF9T T0NfU09GX01US19UT1BMRVZFTAorY29uZmlnIFNORF9TT0NfU09GX01US19DT01NT04KKwl0cmlz dGF0ZQorCXNlbGVjdCBTTkRfU09DX1NPRl9PRl9ERVYKKwlzZWxlY3QgU05EX1NPQ19TT0YKKwlz ZWxlY3QgU05EX1NPQ19TT0ZfWFRFTlNBCisJc2VsZWN0IFNORF9TT0NfU09GX0NPTVBSRVNTCisJ aGVscAorCSAgVGhpcyBvcHRpb24gaXMgbm90IHVzZXItc2VsZWN0YWJsZSBidXQgYXV0b21hZ2lj YWxseSBoYW5kbGVkIGJ5CisJICAnc2VsZWN0JyBzdGF0ZW1lbnRzIGF0IGEgaGlnaGVyIGxldmVs CisKK2NvbmZpZyBTTkRfU09DX1NPRl9NVDgxOTUKKwl0cmlzdGF0ZSAiU09GIHN1cHBvcnQgZm9y IE1UODE5NSBhdWRpbyBEU1AiCisJc2VsZWN0IFNORF9TT0NfU09GX01US19DT01NT04KKwloZWxw CisJICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgU291bmQgT3BlbiBGaXJtd2FyZSBmb3IgTWVkaWF0 ZWsgcGxhdGZvcm1zCisJICB1c2luZyB0aGUgbXQ4MTk1IHByb2Nlc3NvcnMuCisJICBTYXkgWSBp ZiB5b3UgaGF2ZSBzdWNoIGEgZGV2aWNlLgorCSAgSWYgdW5zdXJlIHNlbGVjdCAiTiIuCisKK2Vu ZGlmICMjIFNORF9TT0NfU09GX01US19UT1BMRVZFTApkaWZmIC0tZ2l0IGEvc291bmQvc29jL3Nv Zi9tZWRpYXRlay9NYWtlZmlsZSBiL3NvdW5kL3NvYy9zb2YvbWVkaWF0ZWsvTWFrZWZpbGUKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lOGVjNmRhOTgxZGUKLS0tIC9k ZXYvbnVsbAorKysgYi9zb3VuZC9zb2Mvc29mL21lZGlhdGVrL01ha2VmaWxlCkBAIC0wLDAgKzEs MiBAQAorIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBCU0QtMy1D bGF1c2UpCitvYmotJChDT05GSUdfU05EX1NPQ19TT0ZfTVQ4MTk1KSArPSBtdDgxOTUvCmRpZmYg LS1naXQgYS9zb3VuZC9zb2Mvc29mL21lZGlhdGVrL2Fkc3BfaGVscGVyLmggYi9zb3VuZC9zb2Mv c29mL21lZGlhdGVrL2Fkc3BfaGVscGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwLi4zNDY5NTNkZDIyZGIKLS0tIC9kZXYvbnVsbAorKysgYi9zb3VuZC9zb2Mvc29m L21lZGlhdGVrL2Fkc3BfaGVscGVyLmgKQEAgLTAsMCArMSw0OSBAQAorLyogU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KKworLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMSBNZWRp YVRlayBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworCisjaWZuZGVmIF9f TVRLX0FEU1BfSEVMUEVSX0hfXworI2RlZmluZSBfX01US19BRFNQX0hFTFBFUl9IX18KKworLyoK KyAqIEdsb2JhbCBpbXBvcnRhbnQgYWRzcCBkYXRhIHN0cnVjdHVyZS4KKyAqLworI2RlZmluZSBE U1BfTUJPWF9OVU0JMworCitzdHJ1Y3QgbXRrX2Fkc3BfY2hpcF9pbmZvIHsKKwlwaHlzX2FkZHJf dCBwYV9zcmFtOworCXBoeXNfYWRkcl90IHBhX2RyYW07IC8qIGFkc3AgZHJhbSBwaHlzaWNhbCBi YXNlICovCisJcGh5c19hZGRyX3QgcGFfc2hhcmVkX2RyYW07IC8qIGFkc3AgZHJhbSBwaHlzaWNh bCBiYXNlICovCisJcGh5c19hZGRyX3QgcGFfY2ZncmVnOworCXBoeXNfYWRkcl90IHBhX21ib3hy ZWdbRFNQX01CT1hfTlVNXTsKKwl1MzIgc3JhbXNpemU7CisJdTMyIGRyYW1zaXplOworCXUzMiBj ZmdyZWdzaXplOworCXZvaWQgX19pb21lbSAqdmFfc3JhbTsgLyogY29ycmVzcG9uZGluZyB0byBw YV9zcmFtICovCisJdm9pZCBfX2lvbWVtICp2YV9kcmFtOyAvKiBjb3JyZXNwb25kaW5nIHRvIHBh X2RyYW0gKi8KKwl2b2lkIF9faW9tZW0gKnZhX2NmZ3JlZzsKKwl2b2lkIF9faW9tZW0gKnZhX21i b3hyZWdbRFNQX01CT1hfTlVNXTsKKwl2b2lkIF9faW9tZW0gKnNoYXJlZF9zcmFtOyAvKiBwYXJ0 IG9mICB2YV9zcmFtICovCisJdm9pZCBfX2lvbWVtICpzaGFyZWRfZHJhbTsgLyogcGFydCBvZiAg dmFfZHJhbSAqLworCXBoeXNfYWRkcl90IGFkc3BfYm9vdHVwX2FkZHI7CisJaW50IGRyYW1fb2Zm c2V0OyAvKmRyYW0gb2Zmc2V0IGJldHdlZW4gc3lzdGVtIGFuZCBkc3AgdmlldyovCit9OworCitz dHJ1Y3QgYWRzcF9wcml2IHsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJc3RydWN0IHNuZF9zb2Zf ZGV2ICpzZGV2OworCisJLyogRFNQIElQQyBoYW5kbGVyICovCisJc3RydWN0IG1ib3hfY29udHJv bGxlciAqYWRzcF9tYm94OworCisJc3RydWN0IG10a19hZHNwX2NoaXBfaW5mbyAqYWRzcDsKKwor CXUzMiAoKmFwMmFkc3BfYWRkcikodTMyIGFkZHIsIHZvaWQgKmRhdGEpOworCXUzMiAoKmFkc3Ay YXBfYWRkcikodTMyIGFkZHIsIHZvaWQgKmRhdGEpOworCisJdm9pZCAqcHJpdmF0ZV9kYXRhOwor fTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9zb3VuZC9zb2Mvc29mL21lZGlhdGVrL21lZGlhdGVr LW9wcy5oIGIvc291bmQvc29jL3NvZi9tZWRpYXRlay9tZWRpYXRlay1vcHMuaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmUwZmZhNjllY2IwYwotLS0gL2Rldi9udWxs CisrKyBiL3NvdW5kL3NvYy9zb2YvbWVkaWF0ZWsvbWVkaWF0ZWstb3BzLmgKQEAgLTAsMCArMSw4 IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBCU0QtMy1D bGF1c2UpICovCisKKyNpZm5kZWYgX19NRURJQVRFS19PUFNfSF9fCisjZGVmaW5lIF9fTUVESUFU RUtfT1BTX0hfXworCitleHRlcm4gY29uc3Qgc3RydWN0IHNuZF9zb2ZfZHNwX29wcyBzb2ZfbXQ4 MTk1X29wczsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9zb3VuZC9zb2Mvc29mL21lZGlhdGVrL210 ODE5NS9NYWtlZmlsZSBiL3NvdW5kL3NvYy9zb2YvbWVkaWF0ZWsvbXQ4MTk1L01ha2VmaWxlCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYmYyM2Q4OGRiODI4Ci0tLSAv ZGV2L251bGwKKysrIGIvc291bmQvc29jL3NvZi9tZWRpYXRlay9tdDgxOTUvTWFrZWZpbGUKQEAg LTAsMCArMSw0IEBACisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAoR1BMLTIuMC1vbmx5IE9S IEJTRC0zLUNsYXVzZSkKK3NuZC1zb2YtbXQ4MTk1LW9ianMgOj0gbXQ4MTk1Lm8KK29iai0kKENP TkZJR19TTkRfU09DX1NPRl9NVDgxOTUpICs9IHNuZC1zb2YtbXQ4MTk1Lm8KKwpkaWZmIC0tZ2l0 IGEvc291bmQvc29jL3NvZi9tZWRpYXRlay9tdDgxOTUvbXQ4MTk1LmMgYi9zb3VuZC9zb2Mvc29m L21lZGlhdGVrL210ODE5NS9tdDgxOTUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLjk0NTYwMWEwZGMzNwotLS0gL2Rldi9udWxsCisrKyBiL3NvdW5kL3NvYy9zb2Yv bWVkaWF0ZWsvbXQ4MTk1L210ODE5NS5jCkBAIC0wLDAgKzEsMzM0IEBACisvLyBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBCU0QtMy1DbGF1c2UpCisvLworLy8gQ29w eXJpZ2h0KGMpIDIwMjEgTWVkaWF0ZWsgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8v IEF1dGhvcjogWUMgSHVuZyA8eWMuaHVuZ0BtZWRpYXRlay5jb20+CisvLworCisvKgorICogSGFy ZHdhcmUgaW50ZXJmYWNlIGZvciBhdWRpbyBEU1Agb24gbXQ4MTk1CisgKi8KKworI2luY2x1ZGUg PGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8bGludXgvZmlybXdhcmUuaD4KKyNpbmNsdWRlIDxs aW51eC9pby5oPgorI2luY2x1ZGUgPGxpbnV4L29mX2FkZHJlc3MuaD4KKyNpbmNsdWRlIDxsaW51 eC9vZl9pcnEuaD4KKyNpbmNsdWRlIDxsaW51eC9vZl9wbGF0Zm9ybS5oPgorI2luY2x1ZGUgPGxp bnV4L29mX3Jlc2VydmVkX21lbS5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorCisjaW5j bHVkZSA8c291bmQvc29mLmg+CisjaW5jbHVkZSA8c291bmQvc29mL3h0ZW5zYS5oPgorI2luY2x1 ZGUgIi4uLy4uL29wcy5oIgorI2luY2x1ZGUgIi4uLy4uL3NvZi1hdWRpby5oIgorI2luY2x1ZGUg Ii4uL2Fkc3BfaGVscGVyLmgiCisjaW5jbHVkZSAiLi4vbWVkaWF0ZWstb3BzLmgiCisjaW5jbHVk ZSAibXQ4MTk1LmgiCisKK3N0YXRpYyBpbnQgcGxhdGZvcm1fcGFyc2VfcmVzb3VyY2Uoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldiwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgcmVzb3VyY2Ug Km1taW87CisJc3RydWN0IHJlc291cmNlIHJlczsKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm1lbV9y ZWdpb247CisJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKKwlzdHJ1Y3QgbXRrX2Fk c3BfY2hpcF9pbmZvICphZHNwID0gZGF0YTsKKwlpbnQgcmV0OworCisJbWVtX3JlZ2lvbiA9IG9m X3BhcnNlX3BoYW5kbGUoZGV2LT5vZl9ub2RlLCAibWVtb3J5LXJlZ2lvbiIsIDApOworCWlmICgh bWVtX3JlZ2lvbikgeworCQlkZXZfZXJyKGRldiwgIm5vIGRtYSBtZW1vcnktcmVnaW9uIHBoYW5k bGVcbiIpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwlyZXQgPSBvZl9hZGRyZXNzX3RvX3Jl c291cmNlKG1lbV9yZWdpb24sIDAsICZyZXMpOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihkZXYs ICJvZl9hZGRyZXNzX3RvX3Jlc291cmNlIGRtYSBmYWlsZWRcbiIpOworCQlyZXR1cm4gcmV0Owor CX0KKworCWRldl9kYmcoZGV2LCAiRE1BIHBiYXNlPTB4JWxseCwgc2l6ZT0weCVsbHhcbiIsCisJ CShwaHlzX2FkZHJfdClyZXMuc3RhcnQsIHJlc291cmNlX3NpemUoJnJlcykpOworCisJcmV0ID0g b2ZfcmVzZXJ2ZWRfbWVtX2RldmljZV9pbml0KGRldik7CisJaWYgKHJldCkgeworCQlkZXZfZXJy KGRldiwgIm9mX3Jlc2VydmVkX21lbV9kZXZpY2VfaW5pdCBmYWlsZWRcbiIpOworCQlyZXR1cm4g cmV0OworCX0KKworCW1lbV9yZWdpb24gPSBvZl9wYXJzZV9waGFuZGxlKGRldi0+b2Zfbm9kZSwg Im1lbW9yeS1yZWdpb24iLCAxKTsKKwlpZiAoIW1lbV9yZWdpb24pIHsKKwkJZGV2X2VycihkZXYs ICJubyBtZW1vcnktcmVnaW9uIHN5c21lbSBwaGFuZGxlXG4iKTsKKwkJcmV0dXJuIC1FTk9ERVY7 CisJfQorCisJcmV0ID0gb2ZfYWRkcmVzc190b19yZXNvdXJjZShtZW1fcmVnaW9uLCAwLCAmcmVz KTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoZGV2LCAib2ZfYWRkcmVzc190b19yZXNvdXJjZSBz eXNtZW0gZmFpbGVkXG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlhZHNwLT5wYV9kcmFtID0g KHBoeXNfYWRkcl90KXJlcy5zdGFydDsKKwlhZHNwLT5kcmFtc2l6ZSA9IHJlc291cmNlX3NpemUo JnJlcyk7CisJaWYgKGFkc3AtPnBhX2RyYW0gJiBEUkFNX1JFTUFQX01BU0spIHsKKwkJZGV2X2Vy cihkZXYsICJhZHNwIG1lbW9yeSglI3gpIGlzIG5vdCA0Sy1hbGlnbmVkXG4iLAorCQkJKHUzMilh ZHNwLT5wYV9kcmFtKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJaWYgKGFkc3AtPmRyYW1z aXplIDwgVE9UQUxfU0laRV9TSEFSRURfRFJBTV9GUk9NX1RBSUwpIHsKKwkJZGV2X2VycihkZXYs ICJhZHNwIG1lbW9yeSglI3gpIGlzIG5vdCBlbm91Z2ggZm9yIHNoYXJlXG4iLAorCQkJYWRzcC0+ ZHJhbXNpemUpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlkZXZfZGJnKGRldiwgImRyYW0g cGJhc2U9JXBhLCBkcmFtc2l6ZT0lI3hcbiIsCisJCSZhZHNwLT5wYV9kcmFtLCBhZHNwLT5kcmFt c2l6ZSk7CisKKwkvKiBQYXJzZSBDRkcgYmFzZSAqLworCW1taW8gPSBwbGF0Zm9ybV9nZXRfcmVz b3VyY2VfYnluYW1lKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAiY2ZnIik7CisJaWYgKCFtbWlvKSB7 CisJCWRldl9lcnIoZGV2LCAibm8gQURTUC1DRkcgcmVnaXN0ZXIgcmVzb3VyY2VcbiIpOworCQly ZXR1cm4gLUVOWElPOworCX0KKwkvKiByZW1hcCBmb3IgRFNQIHJlZ2lzdGVyIGFjY2Vzc2luZyAq LworCWFkc3AtPnZhX2NmZ3JlZyA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIG1taW8pOwor CWlmIChJU19FUlIoYWRzcC0+dmFfY2ZncmVnKSkKKwkJcmV0dXJuIFBUUl9FUlIoYWRzcC0+dmFf Y2ZncmVnKTsKKworCWFkc3AtPnBhX2NmZ3JlZyA9IChwaHlzX2FkZHJfdCltbWlvLT5zdGFydDsK KwlhZHNwLT5jZmdyZWdzaXplID0gcmVzb3VyY2Vfc2l6ZShtbWlvKTsKKworCWRldl9kYmcoZGV2 LCAiY2ZncmVnLXZiYXNlPSVwLCBjZmdyZWdzaXplPSUjeFxuIiwKKwkJYWRzcC0+dmFfY2ZncmVn LCBhZHNwLT5jZmdyZWdzaXplKTsKKworCS8qIFBhcnNlIFNSQU0gKi8KKwltbWlvID0gcGxhdGZv cm1fZ2V0X3Jlc291cmNlX2J5bmFtZShwZGV2LCBJT1JFU09VUkNFX01FTSwgInNyYW0iKTsKKwlp ZiAoIW1taW8pIHsKKwkJZGV2X2VycihkZXYsICJubyBTUkFNIHJlc291cmNlXG4iKTsKKwkJcmV0 dXJuIC1FTlhJTzsKKwl9CisKKwlhZHNwLT5wYV9zcmFtID0gKHBoeXNfYWRkcl90KW1taW8tPnN0 YXJ0OworCWFkc3AtPnNyYW1zaXplID0gcmVzb3VyY2Vfc2l6ZShtbWlvKTsKKwlpZiAoYWRzcC0+ c3JhbXNpemUgPCBUT1RBTF9TSVpFX1NIQVJFRF9TUkFNX0ZST01fVEFJTCkgeworCQlkZXZfZXJy KGRldiwgImFkc3AgU1JBTSglI3gpIGlzIG5vdCBlbm91Z2ggZm9yIHNoYXJlXG4iLAorCQkJYWRz cC0+c3JhbXNpemUpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlkZXZfZGJnKGRldiwgInNy YW0gcGJhc2U9JXBhLCUjeFxuIiwgJmFkc3AtPnBhX3NyYW0sIGFkc3AtPnNyYW1zaXplKTsKKwor CXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgYWRzcF9zcmFtX3Bvd2VyX29uKHN0cnVjdCBk ZXZpY2UgKmRldiwgYm9vbCBvbikKK3sKKwl2b2lkIF9faW9tZW0gKnZhX2RzcHN5c3JlZzsKKwl1 MzIgc3JhbXBvb2xfY29uOworCisJdmFfZHNwc3lzcmVnID0gaW9yZW1hcChBRFNQX1NSQU1fUE9P TF9DT04sIDB4NCk7CisJaWYgKCF2YV9kc3BzeXNyZWcpIHsKKwkJZGV2X2VycihkZXYsICJmYWls ZWQgdG8gaW9yZW1hcCBzcmFtIHBvb2wgYmFzZSAlI3hcbiIsCisJCQlBRFNQX1NSQU1fUE9PTF9D T04pOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwlzcmFtcG9vbF9jb24gPSByZWFkbCh2YV9k c3BzeXNyZWcpOworCWlmIChvbikKKwkJd3JpdGVsKHNyYW1wb29sX2NvbiAmIH5EU1BfU1JBTV9Q T09MX1BEX01BU0ssIHZhX2RzcHN5c3JlZyk7CisJZWxzZQorCQl3cml0ZWwoc3JhbXBvb2xfY29u IHwgRFNQX1NSQU1fUE9PTF9QRF9NQVNLLCB2YV9kc3BzeXNyZWcpOworCisJaW91bm1hcCh2YV9k c3BzeXNyZWcpOworCXJldHVybiAwOworfQorCisvKiAgSW5pdCB0aGUgYmFzaWMgRFNQIERSQU0g YWRkcmVzcyAqLworc3RhdGljIGludCBhZHNwX21lbW9yeV9yZW1hcF9pbml0KHN0cnVjdCBkZXZp Y2UgKmRldiwgc3RydWN0IG10a19hZHNwX2NoaXBfaW5mbyAqYWRzcCkKK3sKKwl2b2lkIF9faW9t ZW0gKnZhZGRyX2VtaV9tYXA7CisJaW50IG9mZnNldDsKKworCWlmICghYWRzcCkKKwkJcmV0dXJu IC1FTlhJTzsKKworCXZhZGRyX2VtaV9tYXAgPSBkZXZtX2lvcmVtYXAoZGV2LCBEU1BfRU1JX01B UF9BRERSLCAweDQpOworCWlmICghdmFkZHJfZW1pX21hcCkgeworCQlkZXZfZXJyKGRldiwgImZh aWxlZCB0byBpb3JlbWFwIGVtaSBtYXAgYmFzZSAlI3hcbiIsCisJCQlEU1BfRU1JX01BUF9BRERS KTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJb2Zmc2V0ID0gYWRzcC0+cGFfZHJhbSAtIERS QU1fUEhZU19CQVNFX0ZST01fRFNQX1ZJRVc7CisJYWRzcC0+ZHJhbV9vZmZzZXQgPSBvZmZzZXQ7 CisJb2Zmc2V0ID4+PSBEUkFNX1JFTUFQX1NISUZUOworCWRldl9kYmcoZGV2LCAiYWRzcC0+cGFf ZHJhbSAlbGx4LCBvZmZzZXQgJSN4XG4iLCBhZHNwLT5wYV9kcmFtLCBvZmZzZXQpOworCXdyaXRl bChvZmZzZXQsIHZhZGRyX2VtaV9tYXApOworCWlmIChvZmZzZXQgIT0gcmVhZGwodmFkZHJfZW1p X21hcCkpIHsKKwkJZGV2X2VycihkZXYsICJ3cml0ZSBlbWkgbWFwIGZhaWwgOiAlI3hcbiIsIHJl YWRsKHZhZGRyX2VtaV9tYXApKTsKKwkJcmV0dXJuIC1FSU87CisJfQorCisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBpbnQgYWRzcF9zaGFyZWRfYmFzZV9pb3JlbWFwKHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYsIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYt PmRldjsKKwlzdHJ1Y3QgbXRrX2Fkc3BfY2hpcF9pbmZvICphZHNwID0gZGF0YTsKKwl1MzIgc2hh cmVkX3NpemU7CisKKwkvKiByZW1hcCBzaGFyZWQtZHJhbSBiYXNlIHRvIGJlIG5vbi1jYWNoYWJs ZSAqLworCXNoYXJlZF9zaXplID0gVE9UQUxfU0laRV9TSEFSRURfRFJBTV9GUk9NX1RBSUw7CisJ YWRzcC0+cGFfc2hhcmVkX2RyYW0gPSBhZHNwLT5wYV9kcmFtICsgYWRzcC0+ZHJhbXNpemUgLSBz aGFyZWRfc2l6ZTsKKwlpZiAoYWRzcC0+dmFfZHJhbSkgeworCQlhZHNwLT5zaGFyZWRfZHJhbSA9 IGFkc3AtPnZhX2RyYW0gKyBEU1BfRFJBTV9TSVpFIC0gc2hhcmVkX3NpemU7CisJfSBlbHNlIHsK KwkJYWRzcC0+c2hhcmVkX2RyYW0gPSBkZXZtX2lvcmVtYXAoZGV2LCBhZHNwLT5wYV9zaGFyZWRf ZHJhbSwKKwkJCQkJCSBzaGFyZWRfc2l6ZSk7CisJCWlmICghYWRzcC0+c2hhcmVkX2RyYW0pIHsK KwkJCWRldl9lcnIoZGV2LCAiaW9yZW1hcCBmYWlsZWQgZm9yIHNoYXJlZCBEUkFNXG4iKTsKKwkJ CXJldHVybiAtRU5PTUVNOworCQl9CisJfQorCWRldl9kYmcoZGV2LCAic2hhcmVkLWRyYW0gdmJh c2U9JXAsIHBoeSBhZGRyIDolbGx4LCAgc2l6ZT0lI3hcbiIsCisJCWFkc3AtPnNoYXJlZF9kcmFt LCBhZHNwLT5wYV9zaGFyZWRfZHJhbSwgc2hhcmVkX3NpemUpOworCisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyBpbnQgbXQ4MTk1X3J1bihzdHJ1Y3Qgc25kX3NvZl9kZXYgKnNkZXYpCit7CisJdTMy IGFkc3BfYm9vdHVwX2FkZHI7CisKKwlhZHNwX2Jvb3R1cF9hZGRyID0gU1JBTV9QSFlTX0JBU0Vf RlJPTV9EU1BfVklFVzsKKwlkZXZfZGJnKHNkZXYtPmRldiwgIkhJRkl4RFNQIGJvb3QgZnJvbSBi YXNlIDogMHglMDhYXG4iLCBhZHNwX2Jvb3R1cF9hZGRyKTsKKwlzb2ZfaGlmaXhkc3BfYm9vdF9z ZXF1ZW5jZShzZGV2LCBhZHNwX2Jvb3R1cF9hZGRyKTsKKworCXJldHVybiAwOworfQorCitzdGF0 aWMgaW50IG10ODE5NV9kc3BfcHJvYmUoc3RydWN0IHNuZF9zb2ZfZGV2ICpzZGV2KQoreworCXN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSBjb250YWluZXJfb2Yoc2Rldi0+ZGV2LCBzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlLCBkZXYpOworCXN0cnVjdCBhZHNwX3ByaXYgKnByaXY7CisJaW50 IHJldDsKKworCXByaXYgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCpwcml2KSwg R0ZQX0tFUk5FTCk7CisJaWYgKCFwcml2KQorCQlyZXR1cm4gLUVOT01FTTsKKworCXNkZXYtPnBk YXRhLT5od19wZGF0YSA9IHByaXY7CisJcHJpdi0+ZGV2ID0gc2Rldi0+ZGV2OworCXByaXYtPnNk ZXYgPSBzZGV2OworCisJcHJpdi0+YWRzcCA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2LCBzaXpl b2Yoc3RydWN0IG10a19hZHNwX2NoaXBfaW5mbyksIEdGUF9LRVJORUwpOworCWlmICghcHJpdi0+ YWRzcCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlyZXQgPSBwbGF0Zm9ybV9wYXJzZV9yZXNvdXJj ZShwZGV2LCBwcml2LT5hZHNwKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0g YWRzcF9zcmFtX3Bvd2VyX29uKHNkZXYtPmRldiwgdHJ1ZSk7CisJaWYgKHJldCkgeworCQlkZXZf ZXJyKHNkZXYtPmRldiwgImFkc3Bfc3JhbV9wb3dlcl9vbiBmYWlsIVxuIik7CisJCXJldHVybiBy ZXQ7CisJfQorCisJcmV0ID0gYWRzcF9tZW1vcnlfcmVtYXBfaW5pdCgmcGRldi0+ZGV2LCBwcml2 LT5hZHNwKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoc2Rldi0+ZGV2LCAiYWRzcF9tZW1vcnlf cmVtYXBfaW5pdCBmYWlsIVxuIik7CisJCWdvdG8gZXJyX2Fkc3Bfc3JhbV9wb3dlcl9vZmY7CisJ fQorCisJc2Rldi0+YmFyW1NPRl9GV19CTEtfVFlQRV9JUkFNXSA9IGRldm1faW9yZW1hcChzZGV2 LT5kZXYsCisJCQkJCQkgICAgICAgcHJpdi0+YWRzcC0+cGFfc3JhbSwKKwkJCQkJCSAgICAgICBw cml2LT5hZHNwLT5zcmFtc2l6ZSk7CisJaWYgKCFzZGV2LT5iYXJbU09GX0ZXX0JMS19UWVBFX0lS QU1dKSB7CisJCWRldl9lcnIoc2Rldi0+ZGV2LCAiZmFpbGVkIHRvIGlvcmVtYXAgYmFzZSAlcGEg c2l6ZSAlI3hcbiIsCisJCQkmcHJpdi0+YWRzcC0+cGFfc3JhbSwgcHJpdi0+YWRzcC0+c3JhbXNp emUpOworCQlyZXQgPSAtRUlOVkFMOworCQlnb3RvIGVycl9hZHNwX3NyYW1fcG93ZXJfb2ZmOwor CX0KKworCXNkZXYtPmJhcltTT0ZfRldfQkxLX1RZUEVfU1JBTV0gPSBkZXZtX2lvcmVtYXBfd2Mo c2Rldi0+ZGV2LAorCQkJCQkJCSAgcHJpdi0+YWRzcC0+cGFfZHJhbSwKKwkJCQkJCQkgIHByaXYt PmFkc3AtPmRyYW1zaXplKTsKKwlpZiAoIXNkZXYtPmJhcltTT0ZfRldfQkxLX1RZUEVfU1JBTV0p IHsKKwkJZGV2X2VycihzZGV2LT5kZXYsICJmYWlsZWQgdG8gaW9yZW1hcCBiYXNlICVwYSBzaXpl ICUjeFxuIiwKKwkJCSZwcml2LT5hZHNwLT5wYV9kcmFtLCBwcml2LT5hZHNwLT5kcmFtc2l6ZSk7 CisJCXJldCA9IC1FSU5WQUw7CisJCWdvdG8gZXJyX2Fkc3Bfc3JhbV9wb3dlcl9vZmY7CisJfQor CXByaXYtPmFkc3AtPnZhX2RyYW0gPSBzZGV2LT5iYXJbU09GX0ZXX0JMS19UWVBFX1NSQU1dOwor CisJcmV0ID0gYWRzcF9zaGFyZWRfYmFzZV9pb3JlbWFwKHBkZXYsIHByaXYtPmFkc3ApOworCWlm IChyZXQpIHsKKwkJZGV2X2VycihzZGV2LT5kZXYsICJhZHNwX3NoYXJlZF9iYXNlX2lvcmVtYXAg ZmFpbCFcbiIpOworCQlnb3RvIGVycl9hZHNwX3NyYW1fcG93ZXJfb2ZmOworCX0KKworCXNkZXYt PmJhcltEU1BfUkVHX0JBUl0gPSBwcml2LT5hZHNwLT52YV9jZmdyZWc7CisJc2Rldi0+YmFyW0RT UF9NQk9YMF9CQVJdID0gIHByaXYtPmFkc3AtPnZhX21ib3hyZWdbMF07CisJc2Rldi0+YmFyW0RT UF9NQk9YMV9CQVJdID0gIHByaXYtPmFkc3AtPnZhX21ib3hyZWdbMV07CisJc2Rldi0+YmFyW0RT UF9NQk9YMl9CQVJdID0gIHByaXYtPmFkc3AtPnZhX21ib3hyZWdbMl07CisKKwlzZGV2LT5tbWlv X2JhciA9IFNPRl9GV19CTEtfVFlQRV9TUkFNOworCXNkZXYtPm1haWxib3hfYmFyID0gU09GX0ZX X0JMS19UWVBFX1NSQU07CisKKwlyZXR1cm4gMDsKKworZXJyX2Fkc3Bfc3JhbV9wb3dlcl9vZmY6 CisJYWRzcF9zcmFtX3Bvd2VyX29uKCZwZGV2LT5kZXYsIGZhbHNlKTsKKworCXJldHVybiByZXQ7 Cit9CisKK3N0YXRpYyBpbnQgbXQ4MTk1X2RzcF9yZW1vdmUoc3RydWN0IHNuZF9zb2ZfZGV2ICpz ZGV2KQoreworCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSBjb250YWluZXJfb2Yoc2Rl di0+ZGV2LCBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlLCBkZXYpOworCisJcmV0dXJuIGFkc3Bfc3Jh bV9wb3dlcl9vbigmcGRldi0+ZGV2LCBmYWxzZSk7Cit9CisKKy8qIG9uIG10ODE5NSB0aGVyZSBp cyAxIHRvIDEgbWF0Y2ggYmV0d2VlbiB0eXBlIGFuZCBCQVIgaWR4ICovCitzdGF0aWMgaW50IG10 ODE5NV9nZXRfYmFyX2luZGV4KHN0cnVjdCBzbmRfc29mX2RldiAqc2RldiwgdTMyIHR5cGUpCit7 CisJcmV0dXJuIHR5cGU7Cit9CisKKy8qIG10ODE5NSBvcHMgKi8KK2NvbnN0IHN0cnVjdCBzbmRf c29mX2RzcF9vcHMgc29mX210ODE5NV9vcHMgPSB7CisJLyogcHJvYmUgYW5kIHJlbW92ZSAqLwor CS5wcm9iZQkJPSBtdDgxOTVfZHNwX3Byb2JlLAorCS5yZW1vdmUJCT0gbXQ4MTk1X2RzcF9yZW1v dmUsCisKKwkvKiBCbG9jayBJTyAqLworCS5ibG9ja19yZWFkCT0gc29mX2Jsb2NrX3JlYWQsCisJ LmJsb2NrX3dyaXRlCT0gc29mX2Jsb2NrX3dyaXRlLAorCisJLyogUmVnaXN0ZXIgSU8gKi8KKwku d3JpdGUJCT0gc29mX2lvX3dyaXRlLAorCS5yZWFkCQk9IHNvZl9pb19yZWFkLAorCS53cml0ZTY0 CT0gc29mX2lvX3dyaXRlNjQsCisJLnJlYWQ2NAkJPSBzb2ZfaW9fcmVhZDY0LAorCisJLyogbWlz YyAqLworCS5nZXRfYmFyX2luZGV4CT0gbXQ4MTk1X2dldF9iYXJfaW5kZXgsCisKKwkvKiBGaXJt d2FyZSBvcHMgKi8KKwkuZHNwX2FyY2hfb3BzID0gJnNvZl94dGVuc2FfYXJjaF9vcHMsCisKKwkv KiBBTFNBIEhXIGluZm8gZmxhZ3MgKi8KKwkuaHdfaW5mbyA9CVNORFJWX1BDTV9JTkZPX01NQVAg fAorCQkJU05EUlZfUENNX0lORk9fTU1BUF9WQUxJRCB8CisJCQlTTkRSVl9QQ01fSU5GT19JTlRF UkxFQVZFRCB8CisJCQlTTkRSVl9QQ01fSU5GT19QQVVTRSB8CisJCQlTTkRSVl9QQ01fSU5GT19O T19QRVJJT0RfV0FLRVVQLAorfTsKK0VYUE9SVF9TWU1CT0woc29mX210ODE5NV9vcHMpOworCitN T0RVTEVfSU1QT1JUX05TKFNORF9TT0NfU09GX1hURU5TQSk7CitNT0RVTEVfTElDRU5TRSgiRHVh bCBCU0QvR1BMIik7CmRpZmYgLS1naXQgYS9zb3VuZC9zb2Mvc29mL21lZGlhdGVrL210ODE5NS9t dDgxOTUuaCBiL3NvdW5kL3NvYy9zb2YvbWVkaWF0ZWsvbXQ4MTk1L210ODE5NS5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDhjYmJiNWFhY2I1Ci0tLSAvZGV2L251 bGwKKysrIGIvc291bmQvc29jL3NvZi9tZWRpYXRlay9tdDgxOTUvbXQ4MTk1LmgKQEAgLTAsMCAr MSwxNTUgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovCisKKy8qCisg KiBDb3B5cmlnaHQgKGMpIDIwMjEgTWVkaWFUZWsgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz ZXJ2ZWQuCisgKgorICogIEhlYWRlciBmaWxlIGZvciB0aGUgbXQ4MTk1IERTUCByZWdpc3RlciBk ZWZpbml0aW9uCisgKi8KKworI2lmbmRlZiBfX01UODE5NV9ICisjZGVmaW5lIF9fTVQ4MTk1X0gK Kworc3RydWN0IG10a19hZHNwX2NoaXBfaW5mbzsKKworI2RlZmluZSBEU1BfUkVHX0JBU0UJCQkw eDEwODAzMDAwCisjZGVmaW5lIFNDUF9DRkdSRUdfQkFTRQkJCTB4MTA3MjQwMDAKKyNkZWZpbmUg RFNQX1NZU0FPX0JBU0UJCQkweDEwODBDMDAwCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICog ICAgICAgICAgICAgICAgICBSIEUgRyBJIFMgVCBFIFIgICAgICAgVEFCTEUKKyAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KKyNkZWZpbmUgRFNQX0pUQUdNVVgJCQkweDAwMDAKKyNkZWZpbmUgRFNQX0FM VFJFU0VUVkVDCQkJMHgwMDA0CisjZGVmaW5lIERTUF9QREVCVUdEQVRBCQkJMHgwMDA4CisjZGVm aW5lIERTUF9QREVCVUdCVVMwCQkJMHgwMDBjCisjZGVmaW5lIFBERUJVR19FTkFCTEUJCQlCSVQo MCkKKyNkZWZpbmUgRFNQX1BERUJVR0JVUzEJCQkweDAwMTAKKyNkZWZpbmUgRFNQX1BERUJVR0lO U1QJCQkweDAwMTQKKyNkZWZpbmUgRFNQX1BERUJVR0xTMFNUQVQJCTB4MDAxOAorI2RlZmluZSBE U1BfUERFQlVHTFMxU1RBVAkJMHgwMDFjCisjZGVmaW5lIERTUF9QREVCVUdQQwkJCTB4MDAyMAor I2RlZmluZSBEU1BfUkVTRVRfU1cJCQkweDAwMjQgLypyZXNldCBzdyovCisjZGVmaW5lIEFEU1Bf QlJFU0VUX1NXCQkJQklUKDApCisjZGVmaW5lIEFEU1BfRFJFU0VUX1NXCQkJQklUKDEpCisjZGVm aW5lIEFEU1BfUlVOU1RBTEwJCQlCSVQoMykKKyNkZWZpbmUgU1RBVFZFQ1RPUl9TRUwJCQlCSVQo NCkKKyNkZWZpbmUgRFNQX1BGQVVMVEJVUwkJCTB4MDAyOAorI2RlZmluZSBEU1BfUEZBVUxUSU5G TwkJCTB4MDAyYworI2RlZmluZSBEU1BfR1BSMDAJCQkweDAwMzAKKyNkZWZpbmUgRFNQX0dQUjAx CQkJMHgwMDM0CisjZGVmaW5lIERTUF9HUFIwMgkJCTB4MDAzOAorI2RlZmluZSBEU1BfR1BSMDMJ CQkweDAwM2MKKyNkZWZpbmUgRFNQX0dQUjA0CQkJMHgwMDQwCisjZGVmaW5lIERTUF9HUFIwNQkJ CTB4MDA0NAorI2RlZmluZSBEU1BfR1BSMDYJCQkweDAwNDgKKyNkZWZpbmUgRFNQX0dQUjA3CQkJ MHgwMDRjCisjZGVmaW5lIERTUF9HUFIwOAkJCTB4MDA1MAorI2RlZmluZSBEU1BfR1BSMDkJCQkw eDAwNTQKKyNkZWZpbmUgRFNQX0dQUjBBCQkJMHgwMDU4CisjZGVmaW5lIERTUF9HUFIwQgkJCTB4 MDA1YworI2RlZmluZSBEU1BfR1BSMEMJCQkweDAwNjAKKyNkZWZpbmUgRFNQX0dQUjBECQkJMHgw MDY0CisjZGVmaW5lIERTUF9HUFIwRQkJCTB4MDA2OAorI2RlZmluZSBEU1BfR1BSMEYJCQkweDAw NmMKKyNkZWZpbmUgRFNQX0dQUjEwCQkJMHgwMDcwCisjZGVmaW5lIERTUF9HUFIxMQkJCTB4MDA3 NAorI2RlZmluZSBEU1BfR1BSMTIJCQkweDAwNzgKKyNkZWZpbmUgRFNQX0dQUjEzCQkJMHgwMDdj CisjZGVmaW5lIERTUF9HUFIxNAkJCTB4MDA4MAorI2RlZmluZSBEU1BfR1BSMTUJCQkweDAwODQK KyNkZWZpbmUgRFNQX0dQUjE2CQkJMHgwMDg4CisjZGVmaW5lIERTUF9HUFIxNwkJCTB4MDA4Ywor I2RlZmluZSBEU1BfR1BSMTgJCQkweDAwOTAKKyNkZWZpbmUgRFNQX0dQUjE5CQkJMHgwMDk0Cisj ZGVmaW5lIERTUF9HUFIxQQkJCTB4MDA5OAorI2RlZmluZSBEU1BfR1BSMUIJCQkweDAwOWMKKyNk ZWZpbmUgRFNQX0dQUjFDCQkJMHgwMGEwCisjZGVmaW5lIERTUF9HUFIxRAkJCTB4MDBhNAorI2Rl ZmluZSBEU1BfR1BSMUUJCQkweDAwYTgKKyNkZWZpbmUgRFNQX0dQUjFGCQkJMHgwMGFjCisjZGVm aW5lIERTUF9UQ01fT0ZGU0VUCQkJMHgwMGIwICAgIC8qIG5vdCB1c2VkICovCisjZGVmaW5lIERT UF9ERFJfT0ZGU0VUCQkJMHgwMGI0ICAgIC8qIG5vdCB1c2VkICovCisjZGVmaW5lIERTUF9JTlRG RFNQCQkJMHgwMGQwCisjZGVmaW5lIERTUF9JTlRGRFNQX0NMUgkJCTB4MDBkNAorI2RlZmluZSBE U1BfU1JBTV9QRF9TVzEJCQkweDAwZDgKKyNkZWZpbmUgRFNQX1NSQU1fUERfU1cyCQkJMHgwMGRj CisjZGVmaW5lIERTUF9PQ0QJCQkJMHgwMGUwCisjZGVmaW5lIERTUF9SR19EU1BfSVJRX1BPTAkJ MHgwMGYwICAgIC8qIG5vdCB1c2VkICovCisjZGVmaW5lIERTUF9EU1BfSVJRX0VOCQkJMHgwMGY0 ICAgIC8qIG5vdCB1c2VkICovCisjZGVmaW5lIERTUF9EU1BfSVJRX0xFVkVMCQkweDAwZjggICAg Lyogbm90IHVzZWQgKi8KKyNkZWZpbmUgRFNQX0RTUF9JUlFfU1RBVFVTCQkweDAwZmMgICAgLyog bm90IHVzZWQgKi8KKyNkZWZpbmUgRFNQX1JHX0lOVDJDSVJRCQkJMHgwMTE0CisjZGVmaW5lIERT UF9SR19JTlRfUE9MX0NUTDAJCTB4MDEyMAorI2RlZmluZSBEU1BfUkdfSU5UX0VOX0NUTDAJCTB4 MDEzMAorI2RlZmluZSBEU1BfUkdfSU5UX0xWX0NUTDAJCTB4MDE0MAorI2RlZmluZSBEU1BfUkdf SU5UX1NUQVRVUzAJCTB4MDE1MAorI2RlZmluZSBEU1BfUERFQlVHU1RBVFVTMAkJMHgwMjAwCisj ZGVmaW5lIERTUF9QREVCVUdTVEFUVVMxCQkweDAyMDQKKyNkZWZpbmUgRFNQX1BERUJVR1NUQVRV UzIJCTB4MDIwOAorI2RlZmluZSBEU1BfUERFQlVHU1RBVFVTMwkJMHgwMjBjCisjZGVmaW5lIERT UF9QREVCVUdTVEFUVVM0CQkweDAyMTAKKyNkZWZpbmUgRFNQX1BERUJVR1NUQVRVUzUJCTB4MDIx NAorI2RlZmluZSBEU1BfUERFQlVHU1RBVFVTNgkJMHgwMjE4CisjZGVmaW5lIERTUF9QREVCVUdT VEFUVVM3CQkweDAyMWMKKyNkZWZpbmUgRFNQX0RTUDJQU1JBTV9QUklPUklUWQkJMHgwMjIwICAv KiBub3QgdXNlZCAqLworI2RlZmluZSBEU1BfQVVESU9fRFNQMlNQTV9JTlQJCTB4MDIyNAorI2Rl ZmluZSBEU1BfQVVESU9fRFNQMlNQTV9JTlRfQUNLCTB4MDIyOAorI2RlZmluZSBEU1BfQVVESU9f RFNQX0RFQlVHX1NFTAkJMHgwMjJDCisjZGVmaW5lIERTUF9BVURJT19EU1BfRU1JX0JBU0VfQURE UgkweDAyRTAgIC8qIG5vdCB1c2VkICovCisjZGVmaW5lIERTUF9BVURJT19EU1BfU0hBUkVEX0lS QU0JMHgwMkU0CisjZGVmaW5lIERTUF9BVURJT19EU1BfQ0tDVFJMX1AyUF9DS19DT04JMHgwMkYw CisjZGVmaW5lIERTUF9SR19TRU1BUEhPUkUwMAkJMHgwMzAwCisjZGVmaW5lIERTUF9SR19TRU1B UEhPUkUwMQkJMHgwMzA0CisjZGVmaW5lIERTUF9SR19TRU1BUEhPUkUwMgkJMHgwMzA4CisjZGVm aW5lIERTUF9SR19TRU1BUEhPUkUwMwkJMHgwMzBDCisjZGVmaW5lIERTUF9SR19TRU1BUEhPUkUw NAkJMHgwMzEwCisjZGVmaW5lIERTUF9SR19TRU1BUEhPUkUwNQkJMHgwMzE0CisjZGVmaW5lIERT UF9SR19TRU1BUEhPUkUwNgkJMHgwMzE4CisjZGVmaW5lIERTUF9SR19TRU1BUEhPUkUwNwkJMHgw MzFDCisjZGVmaW5lIERTUF9SRVNFUlZFRF8wCQkJMHgwM0YwCisjZGVmaW5lIERTUF9SRVNFUlZF RF8xCQkJMHgwM0Y0CisKKy8qIGRzcCB3ZHQgKi8KKyNkZWZpbmUgRFNQX1dEVF9NT0RFCQkJMHgw NDAwCisKKy8qIGRzcCBtYm94ICovCisjZGVmaW5lIERTUF9NQk9YX0lOX0NNRAkJCTB4MDAKKyNk ZWZpbmUgRFNQX01CT1hfSU5fQ01EX0NMUgkJMHgwNAorI2RlZmluZSBEU1BfTUJPWF9PVVRfQ01E CQkweDFjCisjZGVmaW5lIERTUF9NQk9YX09VVF9DTURfQ0xSCQkweDIwCisjZGVmaW5lIERTUF9N Qk9YX0lOX01TRzAJCTB4MDgKKyNkZWZpbmUgRFNQX01CT1hfSU5fTVNHMQkJMHgwQworI2RlZmlu ZSBEU1BfTUJPWF9PVVRfTVNHMAkJMHgyNAorI2RlZmluZSBEU1BfTUJPWF9PVVRfTVNHMQkJMHgy OAorCisvKmRzcCBzeXMgYW8qLworI2RlZmluZSBBRFNQX1NSQU1fUE9PTF9DT04JCShEU1BfU1lT QU9fQkFTRSArIDB4MzApCisjZGVmaW5lIERTUF9TUkFNX1BPT0xfUERfTUFTSwkJMHhmCisjZGVm aW5lIERTUF9FTUlfTUFQX0FERFIJCShEU1BfU1lTQU9fQkFTRSArIDB4ODFjKQorCisvKiBEU1Ag bWVtb3JpZXMgKi8KKyNkZWZpbmUgTUJPWF9PRkZTRVQJMHg4MDAwMDAgLyogRFJBTSAqLworI2Rl ZmluZSBNQk9YX1NJWkUJMHgxMDAwIC8qIGNvbnNpc3RlbnQgd2l0aCB3aGljaCBpbiBtZW1vcnku aCBvZiBzb2YgZncgKi8KKyNkZWZpbmUgRFNQX0RSQU1fU0laRQkweDEwMDAwMDAgLyogMTZNICov CisKKyNkZWZpbmUgRFNQX1JFR19CQVIJNAorI2RlZmluZSBEU1BfTUJPWDBfQkFSCTUKKyNkZWZp bmUgRFNQX01CT1gxX0JBUgk2CisjZGVmaW5lIERTUF9NQk9YMl9CQVIJNworCisjZGVmaW5lIFRP VEFMX1NJWkVfU0hBUkVEX1NSQU1fRlJPTV9UQUlMICAweDAKKworI2RlZmluZSBTSVpFX1NIQVJF RF9EUkFNX0RMIDB4NDAwMDAgLypTaGFyZWQgYnVmZmVyIGZvciBEb3dubGluayovCisjZGVmaW5l IFNJWkVfU0hBUkVEX0RSQU1fVUwgMHg0MDAwMCAvKlNoYXJlZCBidWZmZXIgZm9yIFVwbGluayov CisKKyNkZWZpbmUgVE9UQUxfU0laRV9TSEFSRURfRFJBTV9GUk9NX1RBSUwgIFwKKwkoU0laRV9T SEFSRURfRFJBTV9ETCArIFNJWkVfU0hBUkVEX0RSQU1fVUwpCisKKyNkZWZpbmUgU1JBTV9QSFlT X0JBU0VfRlJPTV9EU1BfVklFVwkweDQwMDAwMDAwIC8qIE1UODE5NSBEU1AgdmlldyAqLworI2Rl ZmluZSBEUkFNX1BIWVNfQkFTRV9GUk9NX0RTUF9WSUVXCTB4NjAwMDAwMDAgLyogTVQ4MTk1IERT UCB2aWV3ICovCisKKy8qcmVtYXAgZHJhbSBiZXR3ZWVuIEFQIGFuZCBEU1AgdmlldywgNEtCIGFs aWduZWQqLworI2RlZmluZSBEUkFNX1JFTUFQX1NISUZUCTEyCisjZGVmaW5lIERSQU1fUkVNQVBf TUFTSwkJKEJJVChEUkFNX1JFTUFQX1NISUZUKSAtIDEpCisKKyNlbmRpZgotLSAKMi4yNy4wCgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXgtbWVk aWF0ZWsgbWFpbGluZyBsaXN0CkxpbnV4LW1lZGlhdGVrQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0 cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1tZWRpYXRlawo= 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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7E08AC433EF for ; Mon, 1 Nov 2021 08:02:41 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id A418460EB9 for ; Mon, 1 Nov 2021 08:02:40 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org A418460EB9 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=oss.nxp.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=alsa-project.org Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id D812816A0; Mon, 1 Nov 2021 09:01:48 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz D812816A0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1635753758; bh=hCX+EC8kax6QrYmBYSlOrqgIqwYgMYRg3QNVSrO1xSA=; h=From:To:Subject:Date:In-Reply-To:References:Cc:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=JjIhxV9j2m29sZM/xpyEnh6A9QYqJjYWruFNXTlCKKnwEcgUNBJTl4azzGBO/Htop t7d7+NqLoVVjj5azD3dCEh41XlFARgBEhnjUsQLhJOZlvesxoTUJFAmPBYWHzU5PsY yH6oq8crbIDLQxmlB8aRP7IczZHMCr4CvFOyNaek= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id 5A83EF804E6; Mon, 1 Nov 2021 09:01:06 +0100 (CET) Received: by alsa1.perex.cz (Postfix, from userid 50401) id DA4FEF8026A; Mon, 1 Nov 2021 09:01:00 +0100 (CET) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2076.outbound.protection.outlook.com [40.107.21.76]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id 61918F8025F for ; Mon, 1 Nov 2021 09:00:53 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz 61918F8025F Authentication-Results: alsa1.perex.cz; dkim=pass (1024-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="NvQfYI3b" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Z1e7AvgBzE1k844blub1AYAad8HBxKsWIpP++b7KMIkhycUSaF5z4HKD+OrCEVLS8Ns4eoQjhmgpgwvZp1aDQ69L5ZhvgV9UPrPG4vouDZ2j9YV1QTq6iojiPoc5o2/Obzz6sC4RH8dfgxnKRlpOl6W9NzlCuQvG/VGrONueerZjyueZlGqGvEOxr/RifAQ21FbwweP0OF40L1ICZSv4e+wG60dbucfY4aEy3FbUBcbIAGUoS/8N5Hy47jYqt77TT/BTaifXQPpd8mjC5TlfeYouhFSSKpTn0Z/7HdyI25fPpjtvNs5vZbnsPfPvOeVIj6+zjmyvQQ4EEMSPBk4sTw== 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=QK3wmLOkLI5eOaYP33H8x3DD08z4kqfJ2cGMooeGb9I=; b=Dx9MJVqJIx3xQk9bpmbrojykVClGX/Cv3TMVPACO57ODvpzi/myASwN8MrNr6M61Uetnj8PQB44iog8LqtVPGCKTeAMLZo6W8iYEiAjDg1DVsMm31gLY4o2cL9yaa7EyA6Ro0qFALl4DpEWSm2YOe6I/uPMYvA//xm41nohRZkW/Hvmp/t1wHYYmAGQnXFwKS9gfAlR5E11POJawxnLzeQOYVgnGfxCfAaIrTw7mZVikJ3efOQOm18wOuYaqlZeCypgz6Tr4+0G08G95+On3rt9GXqHCQZspntu/BO5+H+j5J2YCwXtRNrAToEOcW7RCkGUIn6KR5ur5+3IdWVgiOw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector2-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QK3wmLOkLI5eOaYP33H8x3DD08z4kqfJ2cGMooeGb9I=; b=NvQfYI3bnHwY+2zhcxKfxEXZxXz7Gp2M3+YYEeviSspezUBm1vrGmvifwh62yE2O85QOVVgmrFw1bKciC5lOh3KICJwR3eyMDDJ2XDsbQcfGx6RfRTtxPh455NaMjti8Ms3HjSK+VeSos2L4m2etYywDwz+uCKTabV+6V/FF+QA= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from VI1PR04MB5151.eurprd04.prod.outlook.com (2603:10a6:803:61::28) by VI1PR0402MB3664.eurprd04.prod.outlook.com (2603:10a6:803:1e::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.15; Mon, 1 Nov 2021 08:00:48 +0000 Received: from VI1PR04MB5151.eurprd04.prod.outlook.com ([fe80::85af:f8be:aa99:ba5f]) by VI1PR04MB5151.eurprd04.prod.outlook.com ([fe80::85af:f8be:aa99:ba5f%3]) with mapi id 15.20.4649.019; Mon, 1 Nov 2021 08:00:48 +0000 From: Daniel Baluta To: broonie@kernel.org, alsa-devel@alsa-project.org Subject: [PATCH 1/6] ASoC: SOF: mediatek: Add mt8195 hardware support Date: Mon, 1 Nov 2021 10:00:21 +0200 Message-Id: <20211101080026.297360-2-daniel.baluta@oss.nxp.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20211101080026.297360-1-daniel.baluta@oss.nxp.com> References: <20211101080026.297360-1-daniel.baluta@oss.nxp.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: AM3PR07CA0070.eurprd07.prod.outlook.com (2603:10a6:207:4::28) To VI1PR04MB5151.eurprd04.prod.outlook.com (2603:10a6:803:61::28) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (2a02:2f08:5719:1500:cdb2:376b:257c:429a) by AM3PR07CA0070.eurprd07.prod.outlook.com (2603:10a6:207:4::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.9 via Frontend Transport; Mon, 1 Nov 2021 08:00:47 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0cbfb0cd-ede8-4615-937a-08d99d0db711 X-MS-TrafficTypeDiagnostic: VI1PR0402MB3664: X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: A2GB3ffQBGKoaRc3ar/nMrJemXJ7Kwnx6GsddxR5QC4hueVhfR5spV/tAX2AIQD+yT28D13PTSA42K8ETqVkWeACc351BDzb5lzsYuvnuj9a2SdzYPj+w2hIRtr8iJeGVDcUOORdq+utaLO1UenQavW0jnnV2QGa+mtWiMyo6T2cD8NmmDGn0wxfkcEjh2zStHXS2At/jZu9EwQ7XqGUYVQuZbWeq+3IxEAvvElwiNyEzdizeYM2wXLN/Yf7s6UBN0oJ1UD1wqzcVl7P9SOMG2FV8j4nnv7wkfNwD7pYo+r3TlIfi9mFlm+cYMgO9mPdm27sIol3sfpcrhOWTL+nS2d9XbbPj/RH0fCSfgzsGEG4VEzrlP/cr4omSpkE5YgVbvn9+rKJJyNuOxqYTr7ERimgRRUUsslQrv1cXaM4B6p2nk1ZK4SitafinzAJYX/2mALaZS2Yg1SDWcX0G6D0R/Yj+KSb8afyqTHrfylEpT2DCmqa1cDSW/49gL7kQn69gTH1EkZN5kgzmM9KycmaGEHwVLO3w3n+X5Bq32mxiwRMuYRkegHty+Zukoe7+0tsOGl7Tv3+YWJlWuzWvPWbQBaUy0HnrazSPqv8qw4SMvW3p4CtTQtBi0GFaPI0+wASyeFewpgHF+yjrELHAq/3Sw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR04MB5151.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(86362001)(54906003)(6666004)(66574015)(7416002)(6512007)(316002)(186003)(52116002)(508600001)(30864003)(5660300002)(4326008)(2616005)(1076003)(66946007)(66476007)(66556008)(6486002)(6506007)(8676002)(8936002)(38100700002)(2906002)(83380400001)(44832011); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ODVnZXc5SHJKNkdPaUprRjlwQ0pPVDBFMzlUcnJUNXF5TVBkNWZlKzA4Q1pH?= =?utf-8?B?VGlNSlpFOFFGM2pZb0VzWVpRSlRlNXJ1WDR2WFNjNTVIa0FVYUsrVVpIYUIz?= =?utf-8?B?cFFpcE1OQXg1M2t1OUtFRTB2MVF1dFBDUjk4ZDdBS1p5cU9DdnFDU282RjI2?= =?utf-8?B?ajI5aWJrS3VxbE94YnNRSjEwVUtVZUhIeDhJSDZEaFRJck5IV09VOHlTSFNY?= =?utf-8?B?SGh0OHM0OEo3UjlYU29hRFFqcU4vTDlyY2ZMR0xHcWZlVjRVVmJMbytGbE5H?= =?utf-8?B?R2xicG5ieGRQYWJvU1dUTmJ3Zzdac1JONENqSTdmQUtVZEFldkpFZjdQK3JU?= =?utf-8?B?dlJ4YlgzMk8rODhNY2VIU3JDS3llZ3poOTE3TGRScTZsSUtJODBSUm9FMENU?= =?utf-8?B?MkE3VzVvZXhIY2k5N0d2UFp0Ri8vUlNQbWJFV21jZ081WDMwWFBzbnVheXJR?= =?utf-8?B?UEYvQWI5SHk2M1p6N1BJWExUdnRPVlJMMllDWmM2aTNzeUVpOGdGMFJ0SEd6?= =?utf-8?B?VksvanM1bC9hcG84M25CRUdYLzhrK2tPQklhTllETUh2R2R0VDNYck5TVUtC?= =?utf-8?B?RnFGdHNCd0VVYzdlMWFydHJlNnBrcHM0cC9kTVcxUEp1NC80ME1vRVQwbCtC?= =?utf-8?B?NTdoM2RacDdzUC9wMGR3dkoraWxocGtoWlJ6bTVPWUxsZmZmd0ZRb1hZTmI4?= =?utf-8?B?c0Vrd29kMWhOdENzOGJNdW1MWUIzOFQvRGFlakY3TjExZjVDcWpWeVM1Z2tF?= =?utf-8?B?WWJLMDg4c0FlMlNGYkpkRjIzcGRHbElvVk8yMEY1aFAvblA0Zkx0d2luVm0x?= =?utf-8?B?T0pwYllrZTIxelQ2YmRWSTlhOVgyaE9ncS9tb2p4Nkx4Vmw3ajlweGZ2YWVy?= =?utf-8?B?WkdGMi9hbE1MbWlidEtoaElEMGN0TStobEpmbUJmZGV0OUhxVVFiMDBNRFJ0?= =?utf-8?B?VUhZZFQ3STZTLytDcENpZjZ1MEwxZUx2VlpPV0JKRlVvU1hHUEgrSVUyelVw?= =?utf-8?B?cjNKRHRWSFBZb1hXMFNBdXk5TnpJQk5kREZBaUU0WlNXOFlpeFArOTRoRzNs?= =?utf-8?B?WlZqK0VZKzVlRXE3S29aRTA3dUhhQ0ZLc1Q0Q2hlY3RGcHNaUXRpM0I5dGVj?= =?utf-8?B?U1U5aElPVjZueFc2OGJEaEl4eVdXc3RLMlBzbUozaEE1Z2JlaVlZRXdXcStx?= =?utf-8?B?Y0tKWURjald2MUZ4RmlsNG5LYWpNODNOUjN4aVVsVk1aeU82aUxEZ0prZGxV?= =?utf-8?B?UGxWbWF2R1pBSHFSUThMV0l1ZDNoNUZYUHpBUzNENVVsVG9LN1lwaGo2d01a?= =?utf-8?B?THJ2MzRndkxKYW04VEU5aFg3L1hDdGQzT3dnTDgwam1DSUE4TXRTZENuelNl?= =?utf-8?B?a2Z4aFNzOU1CZDRlbTR1WDQ0TWZzaEJBUUVvWFVsUWlGL3dEbHc0Zk1wallQ?= =?utf-8?B?M1NZTzRBdzRBUFZFMXMybWVpamtVNUROYzVqcjNjMEZ2c1A3c3ZkeGZNMktq?= =?utf-8?B?NlhzWDRxMkw5SDJRWUJkZ2NzaWVqQ0VDNjNJWVlZWWpKS2s2ZFlSbUxjSURz?= =?utf-8?B?eG4vZWVCSi94VVJHM0NYaGc5bFRuTjJWUVhIRldWTHNOcUV4cXdGV3dWUFps?= =?utf-8?B?TW1td0lDdUFiejB0c0dyMGg1bityQlBJZnVqRlh4NWdGbjlqNnVWbm4xUTRL?= =?utf-8?B?bmRka0VhSDNyTFdWOTcwS3YwblZ6WGdrcEdtWmtnbnZ6TW9KZmFWTGdSWVR5?= =?utf-8?B?OXpsL2traDh6SjJqcVViMWV2ejR3b3kvRlFnaFlNL0dLbHlqa3ZtY1FpWitk?= =?utf-8?B?R0kySE9JMCtlVG5zY040UEg2TnRFbTI1TEdwMjFoZGZJZzc5bkYwQi81enAx?= =?utf-8?B?eUJEOHh2aFFVNkxZUGl3RWI4OFBubGp1YjN6SzBCcGFUcnNpZm9ndFBZRTI3?= =?utf-8?B?Qm5ydm9ZNGdxY3h4T0FKR0k0M0xKTDdORmlQOWJXUVBjRG95a3BqdkZxUFFI?= =?utf-8?B?NDdYdUhOWUd1bXExOGpHYUNLbmgwY282SFMybVR6NTJXbE1jZW5uNTdXMUdn?= =?utf-8?B?dDFkdGEwUXBzc0ZuMlpNY0pNVXZGeGc2TS9WSTZKNVp4VUlvaFB1OWN6QWs1?= =?utf-8?B?UHBabm5pLzR5Ukt3TXphWE1hWFdPUmRtMENiaG5MSzQxYjdOb3NwcU5EWUFL?= =?utf-8?B?QnFxeGNBUW9ILzd4Zk9vZURjcGtKbm9pUmxoNXBTQ0gwTkRoVFVvVXRLamhi?= =?utf-8?Q?I7Wy6DTCXy4DvqHTwmQA3x0XD297lcCvr5p+puaOUE=3D?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0cbfb0cd-ede8-4615-937a-08d99d0db711 X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5151.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Nov 2021 08:00:48.3752 (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: f1O+RrTUwG3Iv98kze995WYFuPA0RxkmPnuBecPa00vrA/nyL1FKCsY6kBryVSzr3nVPMkXG1Q7dBT9twSvUTw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0402MB3664 Cc: guennadi.liakhovetski@linux.intel.com, daniel.baluta@gmail.com, kai.vehmanen@linux.intel.com, Daniel Baluta , ranjani.sridharan@linux.intel.com, lgirdwood@gmail.com, linux-mediatek@lists.infradead.org, YC Hung , pierre-louis.bossart@linux.intel.com, peter.ujfalusi@linux.intel.com X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: "Alsa-devel" From: YC Hung This patch initialize to support SOF on Mediatek mt8195 platform. MT8195 has four Cortex A78 cores paired with four Cortex A55 cores. It also has Cadence HiFi-4 DSP single core. There are shared DRAM and mailbox interrupt between AP and DSP to use for IPC communication. Signed-off-by: YC Hung Reviewed-by: Péter Ujfalusi Reviewed-by: Pierre-Louis Bossart Reviewed-by: Ranjani Sridharan Reviewed-by: Kai Vehmanen Reviewed-by: Guennadi Liakhovetski Signed-off-by: Daniel Baluta --- sound/soc/sof/Kconfig | 1 + sound/soc/sof/Makefile | 1 + sound/soc/sof/mediatek/Kconfig | 33 +++ sound/soc/sof/mediatek/Makefile | 2 + sound/soc/sof/mediatek/adsp_helper.h | 49 ++++ sound/soc/sof/mediatek/mediatek-ops.h | 8 + sound/soc/sof/mediatek/mt8195/Makefile | 4 + sound/soc/sof/mediatek/mt8195/mt8195.c | 334 +++++++++++++++++++++++++ sound/soc/sof/mediatek/mt8195/mt8195.h | 155 ++++++++++++ 9 files changed, 587 insertions(+) create mode 100644 sound/soc/sof/mediatek/Kconfig create mode 100644 sound/soc/sof/mediatek/Makefile create mode 100644 sound/soc/sof/mediatek/adsp_helper.h create mode 100644 sound/soc/sof/mediatek/mediatek-ops.h create mode 100644 sound/soc/sof/mediatek/mt8195/Makefile create mode 100644 sound/soc/sof/mediatek/mt8195/mt8195.c create mode 100644 sound/soc/sof/mediatek/mt8195/mt8195.h diff --git a/sound/soc/sof/Kconfig b/sound/soc/sof/Kconfig index 89fba4fa671a..fd6ae0629a1c 100644 --- a/sound/soc/sof/Kconfig +++ b/sound/soc/sof/Kconfig @@ -236,6 +236,7 @@ config SND_SOC_SOF_PROBE_WORK_QUEUE source "sound/soc/sof/amd/Kconfig" source "sound/soc/sof/imx/Kconfig" source "sound/soc/sof/intel/Kconfig" +source "sound/soc/sof/mediatek/Kconfig" source "sound/soc/sof/xtensa/Kconfig" endif diff --git a/sound/soc/sof/Makefile b/sound/soc/sof/Makefile index 32a5f6370c5b..6f76927e0a1c 100644 --- a/sound/soc/sof/Makefile +++ b/sound/soc/sof/Makefile @@ -24,3 +24,4 @@ obj-$(CONFIG_SND_SOC_SOF_INTEL_TOPLEVEL) += intel/ obj-$(CONFIG_SND_SOC_SOF_IMX_TOPLEVEL) += imx/ obj-$(CONFIG_SND_SOC_SOF_AMD_TOPLEVEL) += amd/ obj-$(CONFIG_SND_SOC_SOF_XTENSA) += xtensa/ +obj-$(CONFIG_SND_SOC_SOF_MTK_TOPLEVEL) += mediatek/ diff --git a/sound/soc/sof/mediatek/Kconfig b/sound/soc/sof/mediatek/Kconfig new file mode 100644 index 000000000000..aeacf0e5bfbb --- /dev/null +++ b/sound/soc/sof/mediatek/Kconfig @@ -0,0 +1,33 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) + +config SND_SOC_SOF_MTK_TOPLEVEL + bool "SOF support for MTK audio DSPs" + depends on ARM64 || COMPILE_TEST + depends on SND_SOC_SOF_OF + help + This adds support for Sound Open Firmware for Mediatek platforms. + It is top level for all mediatek platforms. + Say Y if you have such a device. + If unsure select "N". + +if SND_SOC_SOF_MTK_TOPLEVEL +config SND_SOC_SOF_MTK_COMMON + tristate + select SND_SOC_SOF_OF_DEV + select SND_SOC_SOF + select SND_SOC_SOF_XTENSA + select SND_SOC_SOF_COMPRESS + help + This option is not user-selectable but automagically handled by + 'select' statements at a higher level + +config SND_SOC_SOF_MT8195 + tristate "SOF support for MT8195 audio DSP" + select SND_SOC_SOF_MTK_COMMON + help + This adds support for Sound Open Firmware for Mediatek platforms + using the mt8195 processors. + Say Y if you have such a device. + If unsure select "N". + +endif ## SND_SOC_SOF_MTK_TOPLEVEL diff --git a/sound/soc/sof/mediatek/Makefile b/sound/soc/sof/mediatek/Makefile new file mode 100644 index 000000000000..e8ec6da981de --- /dev/null +++ b/sound/soc/sof/mediatek/Makefile @@ -0,0 +1,2 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) +obj-$(CONFIG_SND_SOC_SOF_MT8195) += mt8195/ diff --git a/sound/soc/sof/mediatek/adsp_helper.h b/sound/soc/sof/mediatek/adsp_helper.h new file mode 100644 index 000000000000..346953dd22db --- /dev/null +++ b/sound/soc/sof/mediatek/adsp_helper.h @@ -0,0 +1,49 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +/* + * Copyright (c) 2021 MediaTek Corporation. All rights reserved. + */ + +#ifndef __MTK_ADSP_HELPER_H__ +#define __MTK_ADSP_HELPER_H__ + +/* + * Global important adsp data structure. + */ +#define DSP_MBOX_NUM 3 + +struct mtk_adsp_chip_info { + phys_addr_t pa_sram; + phys_addr_t pa_dram; /* adsp dram physical base */ + phys_addr_t pa_shared_dram; /* adsp dram physical base */ + phys_addr_t pa_cfgreg; + phys_addr_t pa_mboxreg[DSP_MBOX_NUM]; + u32 sramsize; + u32 dramsize; + u32 cfgregsize; + void __iomem *va_sram; /* corresponding to pa_sram */ + void __iomem *va_dram; /* corresponding to pa_dram */ + void __iomem *va_cfgreg; + void __iomem *va_mboxreg[DSP_MBOX_NUM]; + void __iomem *shared_sram; /* part of va_sram */ + void __iomem *shared_dram; /* part of va_dram */ + phys_addr_t adsp_bootup_addr; + int dram_offset; /*dram offset between system and dsp view*/ +}; + +struct adsp_priv { + struct device *dev; + struct snd_sof_dev *sdev; + + /* DSP IPC handler */ + struct mbox_controller *adsp_mbox; + + struct mtk_adsp_chip_info *adsp; + + u32 (*ap2adsp_addr)(u32 addr, void *data); + u32 (*adsp2ap_addr)(u32 addr, void *data); + + void *private_data; +}; + +#endif diff --git a/sound/soc/sof/mediatek/mediatek-ops.h b/sound/soc/sof/mediatek/mediatek-ops.h new file mode 100644 index 000000000000..e0ffa69ecb0c --- /dev/null +++ b/sound/soc/sof/mediatek/mediatek-ops.h @@ -0,0 +1,8 @@ +/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */ + +#ifndef __MEDIATEK_OPS_H__ +#define __MEDIATEK_OPS_H__ + +extern const struct snd_sof_dsp_ops sof_mt8195_ops; + +#endif diff --git a/sound/soc/sof/mediatek/mt8195/Makefile b/sound/soc/sof/mediatek/mt8195/Makefile new file mode 100644 index 000000000000..bf23d88db828 --- /dev/null +++ b/sound/soc/sof/mediatek/mt8195/Makefile @@ -0,0 +1,4 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) +snd-sof-mt8195-objs := mt8195.o +obj-$(CONFIG_SND_SOC_SOF_MT8195) += snd-sof-mt8195.o + diff --git a/sound/soc/sof/mediatek/mt8195/mt8195.c b/sound/soc/sof/mediatek/mt8195/mt8195.c new file mode 100644 index 000000000000..945601a0dc37 --- /dev/null +++ b/sound/soc/sof/mediatek/mt8195/mt8195.c @@ -0,0 +1,334 @@ +// SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) +// +// Copyright(c) 2021 Mediatek Inc. All rights reserved. +// +// Author: YC Hung +// + +/* + * Hardware interface for audio DSP on mt8195 + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include "../../ops.h" +#include "../../sof-audio.h" +#include "../adsp_helper.h" +#include "../mediatek-ops.h" +#include "mt8195.h" + +static int platform_parse_resource(struct platform_device *pdev, void *data) +{ + struct resource *mmio; + struct resource res; + struct device_node *mem_region; + struct device *dev = &pdev->dev; + struct mtk_adsp_chip_info *adsp = data; + int ret; + + mem_region = of_parse_phandle(dev->of_node, "memory-region", 0); + if (!mem_region) { + dev_err(dev, "no dma memory-region phandle\n"); + return -ENODEV; + } + + ret = of_address_to_resource(mem_region, 0, &res); + if (ret) { + dev_err(dev, "of_address_to_resource dma failed\n"); + return ret; + } + + dev_dbg(dev, "DMA pbase=0x%llx, size=0x%llx\n", + (phys_addr_t)res.start, resource_size(&res)); + + ret = of_reserved_mem_device_init(dev); + if (ret) { + dev_err(dev, "of_reserved_mem_device_init failed\n"); + return ret; + } + + mem_region = of_parse_phandle(dev->of_node, "memory-region", 1); + if (!mem_region) { + dev_err(dev, "no memory-region sysmem phandle\n"); + return -ENODEV; + } + + ret = of_address_to_resource(mem_region, 0, &res); + if (ret) { + dev_err(dev, "of_address_to_resource sysmem failed\n"); + return ret; + } + + adsp->pa_dram = (phys_addr_t)res.start; + adsp->dramsize = resource_size(&res); + if (adsp->pa_dram & DRAM_REMAP_MASK) { + dev_err(dev, "adsp memory(%#x) is not 4K-aligned\n", + (u32)adsp->pa_dram); + return -EINVAL; + } + + if (adsp->dramsize < TOTAL_SIZE_SHARED_DRAM_FROM_TAIL) { + dev_err(dev, "adsp memory(%#x) is not enough for share\n", + adsp->dramsize); + return -EINVAL; + } + + dev_dbg(dev, "dram pbase=%pa, dramsize=%#x\n", + &adsp->pa_dram, adsp->dramsize); + + /* Parse CFG base */ + mmio = platform_get_resource_byname(pdev, IORESOURCE_MEM, "cfg"); + if (!mmio) { + dev_err(dev, "no ADSP-CFG register resource\n"); + return -ENXIO; + } + /* remap for DSP register accessing */ + adsp->va_cfgreg = devm_ioremap_resource(dev, mmio); + if (IS_ERR(adsp->va_cfgreg)) + return PTR_ERR(adsp->va_cfgreg); + + adsp->pa_cfgreg = (phys_addr_t)mmio->start; + adsp->cfgregsize = resource_size(mmio); + + dev_dbg(dev, "cfgreg-vbase=%p, cfgregsize=%#x\n", + adsp->va_cfgreg, adsp->cfgregsize); + + /* Parse SRAM */ + mmio = platform_get_resource_byname(pdev, IORESOURCE_MEM, "sram"); + if (!mmio) { + dev_err(dev, "no SRAM resource\n"); + return -ENXIO; + } + + adsp->pa_sram = (phys_addr_t)mmio->start; + adsp->sramsize = resource_size(mmio); + if (adsp->sramsize < TOTAL_SIZE_SHARED_SRAM_FROM_TAIL) { + dev_err(dev, "adsp SRAM(%#x) is not enough for share\n", + adsp->sramsize); + return -EINVAL; + } + + dev_dbg(dev, "sram pbase=%pa,%#x\n", &adsp->pa_sram, adsp->sramsize); + + return ret; +} + +static int adsp_sram_power_on(struct device *dev, bool on) +{ + void __iomem *va_dspsysreg; + u32 srampool_con; + + va_dspsysreg = ioremap(ADSP_SRAM_POOL_CON, 0x4); + if (!va_dspsysreg) { + dev_err(dev, "failed to ioremap sram pool base %#x\n", + ADSP_SRAM_POOL_CON); + return -ENOMEM; + } + + srampool_con = readl(va_dspsysreg); + if (on) + writel(srampool_con & ~DSP_SRAM_POOL_PD_MASK, va_dspsysreg); + else + writel(srampool_con | DSP_SRAM_POOL_PD_MASK, va_dspsysreg); + + iounmap(va_dspsysreg); + return 0; +} + +/* Init the basic DSP DRAM address */ +static int adsp_memory_remap_init(struct device *dev, struct mtk_adsp_chip_info *adsp) +{ + void __iomem *vaddr_emi_map; + int offset; + + if (!adsp) + return -ENXIO; + + vaddr_emi_map = devm_ioremap(dev, DSP_EMI_MAP_ADDR, 0x4); + if (!vaddr_emi_map) { + dev_err(dev, "failed to ioremap emi map base %#x\n", + DSP_EMI_MAP_ADDR); + return -ENOMEM; + } + + offset = adsp->pa_dram - DRAM_PHYS_BASE_FROM_DSP_VIEW; + adsp->dram_offset = offset; + offset >>= DRAM_REMAP_SHIFT; + dev_dbg(dev, "adsp->pa_dram %llx, offset %#x\n", adsp->pa_dram, offset); + writel(offset, vaddr_emi_map); + if (offset != readl(vaddr_emi_map)) { + dev_err(dev, "write emi map fail : %#x\n", readl(vaddr_emi_map)); + return -EIO; + } + + return 0; +} + +static int adsp_shared_base_ioremap(struct platform_device *pdev, void *data) +{ + struct device *dev = &pdev->dev; + struct mtk_adsp_chip_info *adsp = data; + u32 shared_size; + + /* remap shared-dram base to be non-cachable */ + shared_size = TOTAL_SIZE_SHARED_DRAM_FROM_TAIL; + adsp->pa_shared_dram = adsp->pa_dram + adsp->dramsize - shared_size; + if (adsp->va_dram) { + adsp->shared_dram = adsp->va_dram + DSP_DRAM_SIZE - shared_size; + } else { + adsp->shared_dram = devm_ioremap(dev, adsp->pa_shared_dram, + shared_size); + if (!adsp->shared_dram) { + dev_err(dev, "ioremap failed for shared DRAM\n"); + return -ENOMEM; + } + } + dev_dbg(dev, "shared-dram vbase=%p, phy addr :%llx, size=%#x\n", + adsp->shared_dram, adsp->pa_shared_dram, shared_size); + + return 0; +} + +static int mt8195_run(struct snd_sof_dev *sdev) +{ + u32 adsp_bootup_addr; + + adsp_bootup_addr = SRAM_PHYS_BASE_FROM_DSP_VIEW; + dev_dbg(sdev->dev, "HIFIxDSP boot from base : 0x%08X\n", adsp_bootup_addr); + sof_hifixdsp_boot_sequence(sdev, adsp_bootup_addr); + + return 0; +} + +static int mt8195_dsp_probe(struct snd_sof_dev *sdev) +{ + struct platform_device *pdev = container_of(sdev->dev, struct platform_device, dev); + struct adsp_priv *priv; + int ret; + + priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); + if (!priv) + return -ENOMEM; + + sdev->pdata->hw_pdata = priv; + priv->dev = sdev->dev; + priv->sdev = sdev; + + priv->adsp = devm_kzalloc(&pdev->dev, sizeof(struct mtk_adsp_chip_info), GFP_KERNEL); + if (!priv->adsp) + return -ENOMEM; + + ret = platform_parse_resource(pdev, priv->adsp); + if (ret) + return ret; + + ret = adsp_sram_power_on(sdev->dev, true); + if (ret) { + dev_err(sdev->dev, "adsp_sram_power_on fail!\n"); + return ret; + } + + ret = adsp_memory_remap_init(&pdev->dev, priv->adsp); + if (ret) { + dev_err(sdev->dev, "adsp_memory_remap_init fail!\n"); + goto err_adsp_sram_power_off; + } + + sdev->bar[SOF_FW_BLK_TYPE_IRAM] = devm_ioremap(sdev->dev, + priv->adsp->pa_sram, + priv->adsp->sramsize); + if (!sdev->bar[SOF_FW_BLK_TYPE_IRAM]) { + dev_err(sdev->dev, "failed to ioremap base %pa size %#x\n", + &priv->adsp->pa_sram, priv->adsp->sramsize); + ret = -EINVAL; + goto err_adsp_sram_power_off; + } + + sdev->bar[SOF_FW_BLK_TYPE_SRAM] = devm_ioremap_wc(sdev->dev, + priv->adsp->pa_dram, + priv->adsp->dramsize); + if (!sdev->bar[SOF_FW_BLK_TYPE_SRAM]) { + dev_err(sdev->dev, "failed to ioremap base %pa size %#x\n", + &priv->adsp->pa_dram, priv->adsp->dramsize); + ret = -EINVAL; + goto err_adsp_sram_power_off; + } + priv->adsp->va_dram = sdev->bar[SOF_FW_BLK_TYPE_SRAM]; + + ret = adsp_shared_base_ioremap(pdev, priv->adsp); + if (ret) { + dev_err(sdev->dev, "adsp_shared_base_ioremap fail!\n"); + goto err_adsp_sram_power_off; + } + + sdev->bar[DSP_REG_BAR] = priv->adsp->va_cfgreg; + sdev->bar[DSP_MBOX0_BAR] = priv->adsp->va_mboxreg[0]; + sdev->bar[DSP_MBOX1_BAR] = priv->adsp->va_mboxreg[1]; + sdev->bar[DSP_MBOX2_BAR] = priv->adsp->va_mboxreg[2]; + + sdev->mmio_bar = SOF_FW_BLK_TYPE_SRAM; + sdev->mailbox_bar = SOF_FW_BLK_TYPE_SRAM; + + return 0; + +err_adsp_sram_power_off: + adsp_sram_power_on(&pdev->dev, false); + + return ret; +} + +static int mt8195_dsp_remove(struct snd_sof_dev *sdev) +{ + struct platform_device *pdev = container_of(sdev->dev, struct platform_device, dev); + + return adsp_sram_power_on(&pdev->dev, false); +} + +/* on mt8195 there is 1 to 1 match between type and BAR idx */ +static int mt8195_get_bar_index(struct snd_sof_dev *sdev, u32 type) +{ + return type; +} + +/* mt8195 ops */ +const struct snd_sof_dsp_ops sof_mt8195_ops = { + /* probe and remove */ + .probe = mt8195_dsp_probe, + .remove = mt8195_dsp_remove, + + /* Block IO */ + .block_read = sof_block_read, + .block_write = sof_block_write, + + /* Register IO */ + .write = sof_io_write, + .read = sof_io_read, + .write64 = sof_io_write64, + .read64 = sof_io_read64, + + /* misc */ + .get_bar_index = mt8195_get_bar_index, + + /* Firmware ops */ + .dsp_arch_ops = &sof_xtensa_arch_ops, + + /* ALSA HW info flags */ + .hw_info = SNDRV_PCM_INFO_MMAP | + SNDRV_PCM_INFO_MMAP_VALID | + SNDRV_PCM_INFO_INTERLEAVED | + SNDRV_PCM_INFO_PAUSE | + SNDRV_PCM_INFO_NO_PERIOD_WAKEUP, +}; +EXPORT_SYMBOL(sof_mt8195_ops); + +MODULE_IMPORT_NS(SND_SOC_SOF_XTENSA); +MODULE_LICENSE("Dual BSD/GPL"); diff --git a/sound/soc/sof/mediatek/mt8195/mt8195.h b/sound/soc/sof/mediatek/mt8195/mt8195.h new file mode 100644 index 000000000000..48cbbb5aacb5 --- /dev/null +++ b/sound/soc/sof/mediatek/mt8195/mt8195.h @@ -0,0 +1,155 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +/* + * Copyright (c) 2021 MediaTek Corporation. All rights reserved. + * + * Header file for the mt8195 DSP register definition + */ + +#ifndef __MT8195_H +#define __MT8195_H + +struct mtk_adsp_chip_info; + +#define DSP_REG_BASE 0x10803000 +#define SCP_CFGREG_BASE 0x10724000 +#define DSP_SYSAO_BASE 0x1080C000 + +/***************************************************************************** + * R E G I S T E R TABLE + *****************************************************************************/ +#define DSP_JTAGMUX 0x0000 +#define DSP_ALTRESETVEC 0x0004 +#define DSP_PDEBUGDATA 0x0008 +#define DSP_PDEBUGBUS0 0x000c +#define PDEBUG_ENABLE BIT(0) +#define DSP_PDEBUGBUS1 0x0010 +#define DSP_PDEBUGINST 0x0014 +#define DSP_PDEBUGLS0STAT 0x0018 +#define DSP_PDEBUGLS1STAT 0x001c +#define DSP_PDEBUGPC 0x0020 +#define DSP_RESET_SW 0x0024 /*reset sw*/ +#define ADSP_BRESET_SW BIT(0) +#define ADSP_DRESET_SW BIT(1) +#define ADSP_RUNSTALL BIT(3) +#define STATVECTOR_SEL BIT(4) +#define DSP_PFAULTBUS 0x0028 +#define DSP_PFAULTINFO 0x002c +#define DSP_GPR00 0x0030 +#define DSP_GPR01 0x0034 +#define DSP_GPR02 0x0038 +#define DSP_GPR03 0x003c +#define DSP_GPR04 0x0040 +#define DSP_GPR05 0x0044 +#define DSP_GPR06 0x0048 +#define DSP_GPR07 0x004c +#define DSP_GPR08 0x0050 +#define DSP_GPR09 0x0054 +#define DSP_GPR0A 0x0058 +#define DSP_GPR0B 0x005c +#define DSP_GPR0C 0x0060 +#define DSP_GPR0D 0x0064 +#define DSP_GPR0E 0x0068 +#define DSP_GPR0F 0x006c +#define DSP_GPR10 0x0070 +#define DSP_GPR11 0x0074 +#define DSP_GPR12 0x0078 +#define DSP_GPR13 0x007c +#define DSP_GPR14 0x0080 +#define DSP_GPR15 0x0084 +#define DSP_GPR16 0x0088 +#define DSP_GPR17 0x008c +#define DSP_GPR18 0x0090 +#define DSP_GPR19 0x0094 +#define DSP_GPR1A 0x0098 +#define DSP_GPR1B 0x009c +#define DSP_GPR1C 0x00a0 +#define DSP_GPR1D 0x00a4 +#define DSP_GPR1E 0x00a8 +#define DSP_GPR1F 0x00ac +#define DSP_TCM_OFFSET 0x00b0 /* not used */ +#define DSP_DDR_OFFSET 0x00b4 /* not used */ +#define DSP_INTFDSP 0x00d0 +#define DSP_INTFDSP_CLR 0x00d4 +#define DSP_SRAM_PD_SW1 0x00d8 +#define DSP_SRAM_PD_SW2 0x00dc +#define DSP_OCD 0x00e0 +#define DSP_RG_DSP_IRQ_POL 0x00f0 /* not used */ +#define DSP_DSP_IRQ_EN 0x00f4 /* not used */ +#define DSP_DSP_IRQ_LEVEL 0x00f8 /* not used */ +#define DSP_DSP_IRQ_STATUS 0x00fc /* not used */ +#define DSP_RG_INT2CIRQ 0x0114 +#define DSP_RG_INT_POL_CTL0 0x0120 +#define DSP_RG_INT_EN_CTL0 0x0130 +#define DSP_RG_INT_LV_CTL0 0x0140 +#define DSP_RG_INT_STATUS0 0x0150 +#define DSP_PDEBUGSTATUS0 0x0200 +#define DSP_PDEBUGSTATUS1 0x0204 +#define DSP_PDEBUGSTATUS2 0x0208 +#define DSP_PDEBUGSTATUS3 0x020c +#define DSP_PDEBUGSTATUS4 0x0210 +#define DSP_PDEBUGSTATUS5 0x0214 +#define DSP_PDEBUGSTATUS6 0x0218 +#define DSP_PDEBUGSTATUS7 0x021c +#define DSP_DSP2PSRAM_PRIORITY 0x0220 /* not used */ +#define DSP_AUDIO_DSP2SPM_INT 0x0224 +#define DSP_AUDIO_DSP2SPM_INT_ACK 0x0228 +#define DSP_AUDIO_DSP_DEBUG_SEL 0x022C +#define DSP_AUDIO_DSP_EMI_BASE_ADDR 0x02E0 /* not used */ +#define DSP_AUDIO_DSP_SHARED_IRAM 0x02E4 +#define DSP_AUDIO_DSP_CKCTRL_P2P_CK_CON 0x02F0 +#define DSP_RG_SEMAPHORE00 0x0300 +#define DSP_RG_SEMAPHORE01 0x0304 +#define DSP_RG_SEMAPHORE02 0x0308 +#define DSP_RG_SEMAPHORE03 0x030C +#define DSP_RG_SEMAPHORE04 0x0310 +#define DSP_RG_SEMAPHORE05 0x0314 +#define DSP_RG_SEMAPHORE06 0x0318 +#define DSP_RG_SEMAPHORE07 0x031C +#define DSP_RESERVED_0 0x03F0 +#define DSP_RESERVED_1 0x03F4 + +/* dsp wdt */ +#define DSP_WDT_MODE 0x0400 + +/* dsp mbox */ +#define DSP_MBOX_IN_CMD 0x00 +#define DSP_MBOX_IN_CMD_CLR 0x04 +#define DSP_MBOX_OUT_CMD 0x1c +#define DSP_MBOX_OUT_CMD_CLR 0x20 +#define DSP_MBOX_IN_MSG0 0x08 +#define DSP_MBOX_IN_MSG1 0x0C +#define DSP_MBOX_OUT_MSG0 0x24 +#define DSP_MBOX_OUT_MSG1 0x28 + +/*dsp sys ao*/ +#define ADSP_SRAM_POOL_CON (DSP_SYSAO_BASE + 0x30) +#define DSP_SRAM_POOL_PD_MASK 0xf +#define DSP_EMI_MAP_ADDR (DSP_SYSAO_BASE + 0x81c) + +/* DSP memories */ +#define MBOX_OFFSET 0x800000 /* DRAM */ +#define MBOX_SIZE 0x1000 /* consistent with which in memory.h of sof fw */ +#define DSP_DRAM_SIZE 0x1000000 /* 16M */ + +#define DSP_REG_BAR 4 +#define DSP_MBOX0_BAR 5 +#define DSP_MBOX1_BAR 6 +#define DSP_MBOX2_BAR 7 + +#define TOTAL_SIZE_SHARED_SRAM_FROM_TAIL 0x0 + +#define SIZE_SHARED_DRAM_DL 0x40000 /*Shared buffer for Downlink*/ +#define SIZE_SHARED_DRAM_UL 0x40000 /*Shared buffer for Uplink*/ + +#define TOTAL_SIZE_SHARED_DRAM_FROM_TAIL \ + (SIZE_SHARED_DRAM_DL + SIZE_SHARED_DRAM_UL) + +#define SRAM_PHYS_BASE_FROM_DSP_VIEW 0x40000000 /* MT8195 DSP view */ +#define DRAM_PHYS_BASE_FROM_DSP_VIEW 0x60000000 /* MT8195 DSP view */ + +/*remap dram between AP and DSP view, 4KB aligned*/ +#define DRAM_REMAP_SHIFT 12 +#define DRAM_REMAP_MASK (BIT(DRAM_REMAP_SHIFT) - 1) + +#endif -- 2.27.0