From patchwork Fri May 25 09:06:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andy Tang X-Patchwork-Id: 920348 X-Patchwork-Delegate: yorksun@freescale.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=nxp.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=freescale.onmicrosoft.com header.i=@freescale.onmicrosoft.com header.b="sDuYCwW7"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 40sgSF1zRDz9s08 for ; Fri, 25 May 2018 19:09:47 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 7CE2AC21E08; Fri, 25 May 2018 09:09:06 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=BAD_ENC_HEADER, SPF_HELO_PASS, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id AF43BC21DF3; Fri, 25 May 2018 09:08:46 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 120E1C21DB3; Fri, 25 May 2018 09:08:30 +0000 (UTC) Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0100.outbound.protection.outlook.com [104.47.33.100]) by lists.denx.de (Postfix) with ESMTPS id 73AA4C21DDC for ; Fri, 25 May 2018 09:08:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freescale.onmicrosoft.com; s=selector1-freescale-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Y4S/G21DSbBJE2Pyw+AHQpn6M8QDXpMyAhTNIiUxpkA=; b=sDuYCwW7TnhgTh0vh6xj9t3XHEtH+o2CfuOb/Hd2wT1N8ueyO3adPyS0/cq1QiaQYPKWBFWY6v1+7czwB+PBghTnrhw/ZYpyprGe+ahyUWQZpg8II9c8Cpnl5CryKcmX279NHrGZZyZit6ke68Zbg9dNVCIHOw+k7Fir/j0aDWk= Received: from BN3PR03CA0100.namprd03.prod.outlook.com (2603:10b6:400:4::18) by CY1PR03MB2188.namprd03.prod.outlook.com (2a01:111:e400:c613::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.797.11; Fri, 25 May 2018 09:08:23 +0000 Received: from BL2FFO11FD011.protection.gbl (2a01:111:f400:7c09::117) by BN3PR03CA0100.outlook.office365.com (2603:10b6:400:4::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.797.11 via Frontend Transport; Fri, 25 May 2018 09:08:23 +0000 Authentication-Results: spf=fail (sender IP is 64.157.242.222) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 64.157.242.222 as permitted sender) receiver=protection.outlook.com; client-ip=64.157.242.222; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (64.157.242.222) by BL2FFO11FD011.mail.protection.outlook.com (10.173.161.17) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.735.16 via Frontend Transport; Fri, 25 May 2018 09:08:21 +0000 Received: from az84smr01.freescale.net (az84smr01.freescale.net [10.64.34.197]) by tx30smr01.am.freescale.net (8.14.3/8.14.3) with ESMTP id w4P98LTq017748; Fri, 25 May 2018 02:08:21 -0700 Received: from titan.ap.freescale.net ([10.192.208.233]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id w4P989fX022570; Fri, 25 May 2018 02:08:19 -0700 From: To: Date: Fri, 25 May 2018 17:06:46 +0800 Message-ID: <20180525090647.45451-3-andy.tang@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180525090647.45451-2-andy.tang@nxp.com> References: <20180525090647.45451-1-andy.tang@nxp.com> <20180525090647.45451-2-andy.tang@nxp.com> X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:64.157.242.222; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10019020)(39380400002)(39860400002)(346002)(376002)(396003)(2980300002)(1109001)(1110001)(339900001)(199004)(189003)(47776003)(4326008)(26005)(77096007)(16586007)(8656006)(316002)(5660300001)(37006003)(86362001)(575784001)(54906003)(6916009)(1076002)(446003)(105606002)(336012)(50466002)(106466001)(486006)(476003)(126002)(2616005)(11346002)(48376002)(36756003)(305945005)(6636002)(6666003)(97736004)(356003)(498600001)(51416003)(8666007)(76176011)(59450400001)(53936002)(85426001)(86152003)(2351001)(2876002)(8676002)(50226002)(8936002)(2906002)(81166006)(81156014); DIR:OUT; SFP:1102; SCL:1; SRVR:CY1PR03MB2188; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; LANG:en; PTR:ErrorRetry; A:1; MX:1; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD011; 1:ABrfx6e67Jg2KxrDXEsjk+lH58tOQEKv2DqLLOuWr10IAKt9xucIWCtaJ/xclkB2jdtazBb2RRe6+mfIkum/zPouiSEHXq2e0TwEhd4t98t9ITesrg2Pu8yTpf4XTs4e MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(4627221)(201703031133081)(2017052603328); SRVR:CY1PR03MB2188; X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2188; 3:c4Nk9uatnFJgIVgRYDXRGhkY4LQ4RWUv7dy7cTtoTeMVt8ING0XENh6bWBaKHVkvONl7iusensjKyoIDaP0HZjTGFkcJuH6+SVg2RPA3ax8D93Vk9Si2wY0tPoX75gzsbje5WRROyVY5P4TBs5XQ0k4I7S7QvZ2fGIhL+nuJqn5diWwFlzHHqf9SLfEVoRv1HKF6w3HBmiQFy/1i4iIS34CTW48r+y6wAamgAFExB7IrjDA/0EKZqQi1YE+2FlvpY5aDNAN8+CxVzb2bh2gsR+5tPXxNv8K1/xxBj9pCwG25pIUBbL7pU9saviorhWCZX6Yyk70mHfYe2X+IJGUwqR37BV1WbhLRDRg/owvC2/w=; 25:dHpqbPWfaedCPpVaEGeUVKGGo1sXer94HqnOywO+WPX4Au2MfS0oqZsyrd3PHPVl27Hd2AsfOoVntLXvY9ziwNsHJ68ePcdnqk52OtneFxOrRs+0tvNX5obCo9BG8kTfkeNvZNMWjKvowX9VIaDhRh6nH0vsb6Xa1ZtsZVTrrhjABB/bzHaSnzkKcnqr0vMlvnWb4QF5ZArAhhTyPUBH2h7nJs0uyYj0jYvWbv//p/qgbuqcXinprosSyJc7QRiS02zJq4NNKnfvaFMMwE5lLcJMwHdpdnJ2XaSOj3AxmONWV/1d4rmTpGFtN4H51syiP29NlZPG5D3EhVDAUeh9vw==; 31:S7ut6FUyf6vOrTzPY3SJmwlxh5hGGKoQRIgdmbuKGN7Tl4NLKOajo1f2g3Fzfaz8eL2cVf5dqCnn3BT50wfrhDPwK8f0nxrK/kaZOR2JHg7bp/yOxScdz5EaM4CVAVAufk6gAs3U4fM+XxMzxPdMxr03Umk53nfVGbzp3Q8hnimTQf5OqI1d6wGjqB13Dk8WNh4at/i7LayWYCXdkYioVw== X-MS-TrafficTypeDiagnostic: CY1PR03MB2188: X-LD-Processed: 710a03f5-10f6-4d38-9ff4-a80b81da590d,ExtAddr X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2188; 20:OqKeonMtfcLD7oBVuouDiqxmm5nXEGmWof8LSlJ4NhEev1Mz+/MGyP4gA8rLCQU9j9AFc4d4QzNfnEcF57JYr9nP0Eww0BHmsje3yLs1QcGgfOqeR4lCsmZqQTJ7CHYj+uIihyncGfg4Eznl32U9BCCLMN4wACaOyBeKgh1yDxriRRxN+gK53DZDd2jUUHNCMrgZfdMIuSpqu9j9H0vhUII4JCNHSrsdJR4TZxBTraJ5IpxIlZb3kxAJWk7ekzAUmxeyzLu50nGGiY4I61aiilyE78WQqGaF+hm6by1/e3ET4JgQyA2d4LnLc5oicauN4lmmL53/UWKVYcky2s+NYJURFPSln5JlikplLhmXxaxV8vnX0zE8iexm0ollq733n5crWNN2rTAI5iMgAmdq3nDq2OExSyQfrJTro5+dv281DsXRBQSxvNs9jM6pT5xHwKMhdMFpM4UEZR/oYWGFiGFw+BFj3Gkn8NnosV9s5JjXaGt84lunAcOM/RNHblUkKc4iQ9t+TJhqHlLsqMfnNuBpZyt/QzJm+W5iCucwnldP2szVqG/vycuF5sCrAi9bOSc52o1iQ+UpdwUr7+yeTDFlADf41xwJw45OZ6ktVKg=; 4:zuN3IPlZoYLBS0V5tqWw/c7a+ddpXT7rSPw+9Hu14ONoaXF7WrD/k/xI+z/oqlPfRjlJA28kYBOUjFxnPCd78NcXviH4yT2gHXDfyj/bwbFUHdbplvMh+nhpIp5rnOWWNr4ZinAAL/MiEMrF3m+UygZ7WzS7yPfRgYgEzZsqwCzxjSbxIR1yibh4bVY1j1SV4E63+MIHPzHl3RaxjlQD2PfsNp0iUvuobP50RGh57Kphjnl2LPslUTeB/oX3+ud1/IhZY0TyQsX2l3dMD2kLohPYT+0trNWtvvvKmDFisNlPdPxTPPf2Mo5/4bp5fAKh X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-MS-Exchange-SenderADCheck: 0 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(5005006)(8121501046)(10201501046)(3231254)(944501410)(52105095)(3002001)(93006095)(93003095)(6055026)(149027)(6041310)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061750153)(20161123564045)(20161123560045)(20161123562045)(6072148)(201708071742011)(7699016); SRVR:CY1PR03MB2188; BCL:0; PCL:0; RULEID:; SRVR:CY1PR03MB2188; X-Forefront-PRVS: 06833C6A67 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR03MB2188; 23:BQTy0ZkOTzpqzsfnAKyJGFfVGGZ1j0WUXWNpJ53u4?= XKeEZG6c84LgBJBog+WLSlM3r51S1ylEWfuaKaLTBiLrDfTLIQJo8Ut7TnyLC4QyFsZ37W11/E4vDJ7436Wnrck+dx0WV7SX+G+fkmxgdA2KKpDp8W3u9lJRlKahOQN83/ynu11GuPOIHWaeLl4qLqJl8Vy2xGPX+J8V1mHD2iTOCx3OY8oITM258m1+ktvq1MPE80sekD/v1gTvVes1xoDocWv5xdxhtoGAMeQNKR1QZiy2xykz7poelr4Ri2FA8lTswQzoXeLpO5ekIJ5+GAG72CmhwhgI2IInK3m2ccvprlAB+POgYQwZT30N/CnJaVAua9BAClt5yxYcWGs6JZ0qlBpEiYTUeQ0FUQ7nPvMmqDGZ5eZdOTov5eQ/jCfx1s99N5cLAiAqYv2rJrPCSfq44Ey85jJ975sGE02Rq13Z9dfEiDyKCX7YV5FSBlc47vckBwi3UQt0URJW8MdQvYMiuGFbO7IRjDUzPBiP4u5wl/SD7N4vg5Vdt1T3ZGrSGupCDloMS3H+HzO8MV9ko1E2i47NqifPgPeom62ZCoqx/27Mooc84HSL8R9n1K9IQB8dlpM91YR5IbgOE8zW+WL7SV1VRHR/2oEqohPOUaAXcU5xtNVHCiNe5o26YvXt4D+cs93Ea8knKU+dpcAFf4ZDC8XS7SgZQsNZyPG/XiJ1ZNifJfPHBvVeJRi0M1N4mbkmloWrSerL3JguWjOeM16QLL0cR/puL1skfNPI69LikMsTeXdKun8UH6aWbEDkkkxFnFGTeqrRug9o04mNMtPyOUFrqTdcXqF0K+Xmq9RMlZHYmjAxkMXf8FiBE7gdQWlRHqKI0cjO3ZsgKoUQ4RPyqS8FztLUCkK8/9rGIDWkI0fMvLpqIq1mj3AHg4FDaOHzmeI/kuVgWTfu3iZXxeEkQ8/Zf68hpPloNbSCw3bIBgRuYHZdOO7up72LdDOA4+vgNhjQuG2x8WnqSIjXlAyYGzLOAj2P7qh5+GMmIUZmzDzX0G2grWGwhMDruA/fpc1G3G9KK0a0mHNtgcSQECKyoXnG7gLsWGUerQLGgkXfHGQKZL1WghdwiMj+WbyOEKqeWnwAB7esWy4lxmDmJ9b8Xv+0kU34s7IWXeyO1yAOGkApJ1fO9fgGgPPVDVkRJBiVI+ffgL3lsiJP3ao06bkxMceQ73dxhGqI1cFi1spNcEKmScMIjNFixFXVQEfpbBXf4BGqnTuERYuVVEAuzOPO3MueeIHnqXIYag3uN1z7g== X-Microsoft-Antispam-Message-Info: WM/XxSB4zcLoOxn8Ww9UeCWmVvg3zurupq9g3KjfSWgAdpn7wlmA1q6Yjls9uPdSorg4PPUOwi/19O0NEdQxKS3bTT9IRt/qTJUjUAaJEAePDmFMoiYze0ucgvQlXD4VF3BJSPo2mq8FAm6evabin+cVpOT1mWh1Oe0NCWt5PJ7+TWt4lKwa+6wceAop8mWB X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2188; 6:iaYYx/fubQAFpLnYGcAgudtiuHdDGja1cL022AQh+3M5fQt5ja3lWBD4YJP9WlGD9vBS2fY3oPzu/0R+gMZyMw9s8KPiqEBNG0a7XyTsu3DeN53tJNRVV8b0TXHjGORiwqm1xs4v8sxp0OiS+LhM8nGAKs6eh+8OHkIBI3cz/nuzoBzKFikXnQ8HcnlUKnTvWvMpzfgTbS6LKZJjEqxcku4LElON2ShFpxc/iVWgYsYj/Oo9jk3n2jW3/uSowCc+wRkIU9eY51s1F02bZCWi4M7caNYhmDwonKOWl4ONwlw7L7/F4W/Qk9grNnUm8Tb4dd+ct0jan0v4uQzI0ByrkNrIchtfunxLVOktwEhd7g19vbid5sD2X1xFYggzDB1+4CqbOFci8troZzbXxTzzINJ/hX/7Il8vd7elv5HzEoSD7qGZlipnnTDMiTEpesAuSMmoQYKK45DEoFLjv3nyFA==; 5:Iup7jU5rGBR5N1tLjrtQub9bD+zA9+KwHODOvj0IAD+f1r9TG2hsY+/G7/xe4jZ7N1uiFP3oPbIOsLHLFh1gz8ccvYMwH4ipBDJOE1EPMDy0iThSr+Co253n41CAd8k1XTEiDBU//EKN0AJ3KGd8MMmfAJkGwBIIT79mnKMjZ18=; 24:NP+PjN4iLBtHes4YrR2He971nDramdbgUqqQniOFe+HFx3UT5bT9/Vbq2lphNcRNMkqaiMD0CckWfwlVY31EMEt6pQZQeEP54aG8ESUpBKs= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2188; 7:L/3Q2NRZM0KCaGcDAz23up/l1Fke8yuXlnGcGrkuRfzNi6ZAdOzOY8zuQLHGllRvdlmnLB3jFYGhWFIBhTyAybrR6cV6V3RMpsCuqWMefH1pxmASp6bXt/HkQWIGz4zPvUXxNdiyoh7zFiF6KNN0lnoGA03LRLP3Asq7BE6YvfgtWTNeyyD5vBg+FE8YsJar6I2oUWS2WxLZPCVQ6GnRH5loNz7kw3D4FOPCeKzj6hS2VewlAs79+6kJZoKexpD+ X-MS-Office365-Filtering-Correlation-Id: 91821803-19a0-4e11-308c-08d5c21f1099 X-OriginatorOrg: freescale.onmicrosoft.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 May 2018 09:08:21.9482 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 91821803-19a0-4e11-308c-08d5c21f1099 X-MS-Exchange-CrossTenant-Id: 710a03f5-10f6-4d38-9ff4-a80b81da590d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=710a03f5-10f6-4d38-9ff4-a80b81da590d; Ip=[64.157.242.222]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR03MB2188 Cc: Yuantian Tang , michal.simek@xilinx.com, u-boot@lists.denx.de Subject: [U-Boot] [PATCH 3/4] scsi: ceva: add ls1012a soc support X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" From: Yuantian Tang Adjust the code structure more general so that more socs can be added easily. Add the ls1012a sata support as well. Signed-off-by: Tang Yuantian Reviewed-by: Michal Simek Tested-by: Michal Simek Reviewed-by: Michal Simek Tested-by: Michal Simek (with and without CONFIG_OF_LIVE on zynqmp zcu102) --- drivers/ata/sata_ceva.c | 87 +++++++++++++++++++++++++++++----------------- 1 files changed, 55 insertions(+), 32 deletions(-) diff --git a/drivers/ata/sata_ceva.c b/drivers/ata/sata_ceva.c index a7d45e8..4c9ebe4 100644 --- a/drivers/ata/sata_ceva.c +++ b/drivers/ata/sata_ceva.c @@ -18,6 +18,7 @@ #define AHCI_VEND_PP3C 0xB0 #define AHCI_VEND_PP4C 0xB4 #define AHCI_VEND_PP5C 0xB8 +#define AHCI_VEND_AXICC 0xBc #define AHCI_VEND_PAXIC 0xC0 #define AHCI_VEND_PTC 0xC8 @@ -72,45 +73,57 @@ #define DRV_NAME "ahci-ceva" #define CEVA_FLAG_BROKEN_GEN2 1 +/* flag bit definition */ +#define FLAG_COHERENT 1 + +/* register config value */ +#define CEVA_PHY1_CFG 0xa003fffe +#define CEVA_PHY2_CFG 0x28184d1f +#define CEVA_PHY3_CFG 0x0e081509 +#define CEVA_TRANS_CFG 0x08000029 +#define CEVA_AXICC_CFG 0x3fffffff + +/* ecc addr-val pair */ +#define ECC_DIS_ADDR_CH2 0x80000000 +#define ECC_DIS_VAL_CH2 0x20140520 + +enum ceva_soc { + CEVA_1V84, + CEVA_LS1012A, +}; + struct ceva_sata_priv { ulong base; + enum ceva_soc soc; + ulong flag; }; -static int ceva_init_sata(ulong mmio) +static int ceva_init_sata(struct ceva_sata_priv *priv) { + ulong base = priv->base; ulong tmp; - int i; - - /* - * AXI Data bus width to 64 - * Set Mem Addr Read, Write ID for data transfers - * Transfer limit to 72 DWord - */ - tmp = PAXIC_ADBW_BW64 | PAXIC_MAWIDD | PAXIC_MARIDD | PAXIC_OTL; - writel(tmp, mmio + AHCI_VEND_PAXIC); - - /* Set AHCI Enable */ - tmp = readl(mmio + HOST_CTL); - tmp |= HOST_AHCI_EN; - writel(tmp, mmio + HOST_CTL); - - for (i = 0; i < NR_PORTS; i++) { - /* TPSS TPRS scalars, CISE and Port Addr */ - tmp = PCFG_TPSS_VAL | PCFG_TPRS_VAL | (PCFG_PAD_VAL + i); - writel(tmp, mmio + AHCI_VEND_PCFG); - - /* Port Phy Cfg register enables */ - tmp = PPCFG_TTA | PPCFG_PSS_EN | PPCFG_ESDF_EN; - writel(tmp, mmio + AHCI_VEND_PPCFG); - /* Rx Watermark setting */ + switch (priv->soc) { + case CEVA_1V84: + tmp = PAXIC_ADBW_BW64 | PAXIC_MAWIDD | PAXIC_MARIDD | PAXIC_OTL; + writel(tmp, base + AHCI_VEND_PAXIC); + tmp = PCFG_TPSS_VAL | PCFG_TPRS_VAL | PCFG_PAD_VAL; + writel(tmp, base + AHCI_VEND_PCFG); + tmp = PPCFG_TTA | PPCFG_PSS_EN | PPCFG_ESDF_EN; + writel(tmp, base + AHCI_VEND_PPCFG); tmp = PTC_RX_WM_VAL | PTC_RSVD; - writel(tmp, mmio + AHCI_VEND_PTC); - - /* Default to Gen 2 Speed and Gen 1 if Gen2 is broken */ - tmp = PORT_SCTL_SPD_GEN3 | PORT_SCTL_IPM; - writel(tmp, mmio + PORT_SCR_CTL + PORT_BASE + PORT_OFFSET * i); + writel(tmp, base + AHCI_VEND_PTC); + break; + + case CEVA_LS1012A: + writel(ECC_DIS_ADDR_CH2, ECC_DIS_VAL_CH2); + writel(CEVA_PHY1_CFG, base + AHCI_VEND_PPCFG); + writel(CEVA_TRANS_CFG, base + AHCI_VEND_PTC); + if (priv->flag & FLAG_COHERENT) + writel(CEVA_AXICC_CFG, base + AHCI_VEND_AXICC); + break; } + return 0; } @@ -125,24 +138,34 @@ static int sata_ceva_probe(struct udevice *dev) { struct ceva_sata_priv *priv = dev_get_priv(dev); - ceva_init_sata(priv->base); + ceva_init_sata(priv); return ahci_probe_scsi(dev, priv->base); } static const struct udevice_id sata_ceva_ids[] = { - { .compatible = "ceva,ahci-1v84" }, + { .compatible = "ceva,ahci-1v84", .data = CEVA_1V84 }, + { .compatible = "fsl,ls1012a-ahci", .data = CEVA_LS1012A }, { } }; static int sata_ceva_ofdata_to_platdata(struct udevice *dev) { struct ceva_sata_priv *priv = dev_get_priv(dev); + ofnode node = dev_ofnode(dev); + + if (!ofnode_valid(node)) + return -EINVAL; + + if (ofnode_read_bool(node, "dma-coherent")) + priv->flag |= FLAG_COHERENT; priv->base = devfdt_get_addr(dev); if (priv->base == FDT_ADDR_T_NONE) return -EINVAL; + priv->soc = dev_get_driver_data(dev); + return 0; }