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 X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MIME_BASE64_TEXT,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D9320C83004 for ; Wed, 29 Apr 2020 13:56:29 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id AFAEA2083B for ; Wed, 29 Apr 2020 13:56:29 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="EebVdqzN" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727996AbgD2N42 (ORCPT ); Wed, 29 Apr 2020 09:56:28 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:3388 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726853AbgD2N4T (ORCPT ); Wed, 29 Apr 2020 09:56:19 -0400 X-UUID: 7f81d2462fe646eba597e669601ca0d6-20200429 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=QaW8XcXetzkfH6jLg3CAPo/VEBtsUIVZ40qmlvMXy5k=; b=EebVdqzNKzmvdTiPo9JZhMQuqm1I8tY4AQ2AW5MDeIX9JTmC6uUFkebzhskBltN0kE4C8vaaQtfcyGq5AtzxLpYQjts5Af0RSQdA++RYVSlKiDiifKPF/kXh9VSU2eJrys/SsAtnM9oT3srjYRcIgz7UHdDHo5zXdzAjmcE2yuY=; X-UUID: 7f81d2462fe646eba597e669601ca0d6-20200429 Received: from mtkcas07.mediatek.inc [(172.21.101.84)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 387269323; Wed, 29 Apr 2020 21:56:13 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs02n1.mediatek.inc (172.21.101.77) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 29 Apr 2020 21:56:10 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Wed, 29 Apr 2020 21:56:09 +0800 From: Stanley Chu To: , , , , , CC: , , , , , , , , , , , Stanley Chu Subject: [PATCH v2 3/5] scsi: ufs: add LU Dedicated buffer mode support for WriteBooster Date: Wed, 29 Apr 2020 21:56:08 +0800 Message-ID: <20200429135610.23750-4-stanley.chu@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20200429135610.23750-1-stanley.chu@mediatek.com> References: <20200429135610.23750-1-stanley.chu@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org QWNjb3JkaW5nIHRvIFVGUyBzcGVjaWZpY2F0aW9uLCB0aGVyZSBhcmUgdHdvIFdyaXRlQm9vc3Rl ciBtb2RlIG9mDQpvcGVyYXRpb25zOiAiTFUgZGVkaWNhdGVkIGJ1ZmZlciIgbW9kZSBhbmQgInNo YXJlZCBidWZmZXIiIG1vZGUuDQpJbiB0aGUgIkxVIGRlZGljYXRlZCBidWZmZXIiIG1vZGUsIHRo ZSBXcml0ZUJvb3N0ZXIgQnVmZmVyIGlzDQpkZWRpY2F0ZWQgdG8gYSBsb2dpY2FsIHVuaXQuDQoN CklmIHRoZSBkZXZpY2Ugc3VwcG9ydHMgdGhlICJMVSBkZWRpY2F0ZWQgYnVmZmVyIiBtb2RlLCB0 aGlzIG1vZGUgaXMNCmNvbmZpZ3VyZWQgYnkgc2V0dGluZyBiV3JpdGVCb29zdGVyQnVmZmVyVHlw ZSB0byAwMGguIFRoZSBsb2dpY2FsDQp1bml0IFdyaXRlQm9vc3RlciBCdWZmZXIgc2l6ZSBpcyBj b25maWd1cmVkIGJ5IHNldHRpbmcgdGhlDQpkTFVOdW1Xcml0ZUJvb3N0ZXJCdWZmZXJBbGxvY1Vu aXRzIGZpZWxkIG9mIHRoZSByZWxhdGVkIFVuaXQNCkRlc2NyaXB0b3IuIE9ubHkgYSB2YWx1ZSBn cmVhdGVyIHRoYW4gemVybyBlbmFibGVzIHRoZSBXcml0ZUJvb3N0ZXINCmZlYXR1cmUgaW4gdGhl IGxvZ2ljYWwgdW5pdC4NCg0KTW9kaWZ5IHVmc2hjZF93Yl9wcm9iZSgpIGFzIGFib3ZlIGRlc2Ny aXB0aW9uIHRvIHN1cHBvcnQgTFUgRGVkaWNhdGVkDQpidWZmZXIgdHlwZS4NCg0KU2lnbmVkLW9m Zi1ieTogU3RhbmxleSBDaHUgPHN0YW5sZXkuY2h1QG1lZGlhdGVrLmNvbT4NCi0tLQ0KIGRyaXZl cnMvc2NzaS91ZnMvdWZzLmggICAgfCAgNyArKysrKw0KIGRyaXZlcnMvc2NzaS91ZnMvdWZzaGNk LmMgfCA2MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0NCiAyIGZpbGVz IGNoYW5nZWQsIDU5IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQ0KDQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9zY3NpL3Vmcy91ZnMuaCBiL2RyaXZlcnMvc2NzaS91ZnMvdWZzLmgNCmluZGV4 IGRhYWM1MDUzYjg1MC4uZWIzZDNjZWJjODdkIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9zY3NpL3Vm cy91ZnMuaA0KKysrIGIvZHJpdmVycy9zY3NpL3Vmcy91ZnMuaA0KQEAgLTMzMCw2ICszMzAsMTIg QEAgZW51bSBoZWFsdGhfZGVzY19wYXJhbSB7DQogCUhFQUxUSF9ERVNDX1BBUkFNX0xJRkVfVElN RV9FU1RfQgk9IDB4NCwNCiB9Ow0KIA0KKy8qIFdyaXRlQm9vc3RlciBidWZmZXIgbW9kZSAqLw0K K2VudW0gew0KKwlXQl9CVUZfTU9ERV9MVV9ERURJQ0FURUQJPSAweDAsDQorCVdCX0JVRl9NT0RF X1NIQVJFRAkJPSAweDEsDQorfTsNCisNCiAvKg0KICAqIExvZ2ljYWwgVW5pdCBXcml0ZSBQcm90 ZWN0DQogICogMDBoOiBMVSBub3Qgd3JpdGUgcHJvdGVjdGVkDQpAQCAtNTU5LDYgKzU2NSw3IEBA IHN0cnVjdCB1ZnNfZGV2X2luZm8gew0KIAlib29sIGlzX2x1X3Bvd2VyX29uX3dwOw0KIAkvKiBN YXhpbXVtIG51bWJlciBvZiBnZW5lcmFsIExVIHN1cHBvcnRlZCBieSB0aGUgVUZTIGRldmljZSAq Lw0KIAl1OCBtYXhfbHVfc3VwcG9ydGVkOw0KKwl1OCB3Yl9kZWRpY2F0ZWRfbHU7DQogCXUxNiB3 bWFudWZhY3R1cmVyaWQ7DQogCS8qVUZTIGRldmljZSBQcm9kdWN0IE5hbWUgKi8NCiAJdTggKm1v ZGVsOw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS91ZnMvdWZzaGNkLmMgYi9kcml2ZXJzL3Nj c2kvdWZzL3Vmc2hjZC5jDQppbmRleCA0NjVlZTAyM2VhNGIuLmI5NzBhNDIyYTVlYSAxMDA2NDQN Ci0tLSBhL2RyaXZlcnMvc2NzaS91ZnMvdWZzaGNkLmMNCisrKyBiL2RyaXZlcnMvc2NzaS91ZnMv dWZzaGNkLmMNCkBAIC01MjAyLDkgKzUyMDIsMTggQEAgc3RhdGljIGJvb2wgdWZzaGNkX3diX3N1 cChzdHJ1Y3QgdWZzX2hiYSAqaGJhKQ0KIAlyZXR1cm4gdWZzaGNkX2lzX3diX2FsbG93ZWQoaGJh KTsNCiB9DQogDQorc3RhdGljIGludCB1ZnNoY2Rfd2JfZ2V0X2luZGV4KHN0cnVjdCB1ZnNfaGJh ICpoYmEpDQorew0KKwlpZiAoaGJhLT5kZXZfaW5mby5iX3diX2J1ZmZlcl90eXBlID09IFdCX0JV Rl9NT0RFX0xVX0RFRElDQVRFRCkNCisJCXJldHVybiBoYmEtPmRldl9pbmZvLndiX2RlZGljYXRl ZF9sdTsNCisJZWxzZQ0KKwkJcmV0dXJuIDA7DQorfQ0KKw0KIHN0YXRpYyBpbnQgdWZzaGNkX3di X2N0cmwoc3RydWN0IHVmc19oYmEgKmhiYSwgYm9vbCBlbmFibGUpDQogew0KIAlpbnQgcmV0Ow0K Kwl1OCBpbmRleDsNCiAJZW51bSBxdWVyeV9vcGNvZGUgb3Bjb2RlOw0KIA0KIAlpZiAoIXVmc2hj ZF93Yl9zdXAoaGJhKSkNCkBAIC01MjE3LDggKzUyMjYsOSBAQCBzdGF0aWMgaW50IHVmc2hjZF93 Yl9jdHJsKHN0cnVjdCB1ZnNfaGJhICpoYmEsIGJvb2wgZW5hYmxlKQ0KIAllbHNlDQogCQlvcGNv ZGUgPSBVUElVX1FVRVJZX09QQ09ERV9DTEVBUl9GTEFHOw0KIA0KKwlpbmRleCA9IHVmc2hjZF93 Yl9nZXRfaW5kZXgoaGJhKTsNCiAJcmV0ID0gdWZzaGNkX3F1ZXJ5X2ZsYWdfcmV0cnkoaGJhLCBv cGNvZGUsDQotCQkJCSAgICAgIFFVRVJZX0ZMQUdfSUROX1dCX0VOLCAwLCBOVUxMKTsNCisJCQkJ ICAgICAgUVVFUllfRkxBR19JRE5fV0JfRU4sIGluZGV4LCBOVUxMKTsNCiAJaWYgKHJldCkgew0K IAkJZGV2X2VycihoYmEtPmRldiwgIiVzIHdyaXRlIGJvb3N0ZXIgJXMgZmFpbGVkICVkXG4iLA0K IAkJCV9fZnVuY19fLCBlbmFibGUgPyAiZW5hYmxlIiA6ICJkaXNhYmxlIiwgcmV0KTsNCkBAIC01 MjM1LDE1ICs1MjQ1LDE3IEBAIHN0YXRpYyBpbnQgdWZzaGNkX3diX2N0cmwoc3RydWN0IHVmc19o YmEgKmhiYSwgYm9vbCBlbmFibGUpDQogc3RhdGljIGludCB1ZnNoY2Rfd2JfdG9nZ2xlX2ZsdXNo X2R1cmluZ19oOChzdHJ1Y3QgdWZzX2hiYSAqaGJhLCBib29sIHNldCkNCiB7DQogCWludCB2YWw7 DQorCXU4IGluZGV4Ow0KIA0KIAlpZiAoc2V0KQ0KIAkJdmFsID0gIFVQSVVfUVVFUllfT1BDT0RF X1NFVF9GTEFHOw0KIAllbHNlDQogCQl2YWwgPSBVUElVX1FVRVJZX09QQ09ERV9DTEVBUl9GTEFH Ow0KIA0KKwlpbmRleCA9IHVmc2hjZF93Yl9nZXRfaW5kZXgoaGJhKTsNCiAJcmV0dXJuIHVmc2hj ZF9xdWVyeV9mbGFnX3JldHJ5KGhiYSwgdmFsLA0KLQkJCSAgICAgICBRVUVSWV9GTEFHX0lETl9X Ql9CVUZGX0ZMVVNIX0RVUklOR19ISUJFUk44LCAwLA0KLQkJCQkgICAgICAgTlVMTCk7DQorCQkJ CVFVRVJZX0ZMQUdfSUROX1dCX0JVRkZfRkxVU0hfRFVSSU5HX0hJQkVSTjgsDQorCQkJCWluZGV4 LCBOVUxMKTsNCiB9DQogDQogc3RhdGljIGlubGluZSB2b2lkIHVmc2hjZF93Yl90b2dnbGVfZmx1 c2goc3RydWN0IHVmc19oYmEgKmhiYSwgYm9vbCBlbmFibGUpDQpAQCAtNTI1OCwxMyArNTI3MCwx NSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdWZzaGNkX3diX3RvZ2dsZV9mbHVzaChzdHJ1Y3QgdWZz X2hiYSAqaGJhLCBib29sIGVuYWJsZSkNCiBzdGF0aWMgaW50IHVmc2hjZF93Yl9idWZfZmx1c2hf ZW5hYmxlKHN0cnVjdCB1ZnNfaGJhICpoYmEpDQogew0KIAlpbnQgcmV0Ow0KKwl1OCBpbmRleDsN CiANCiAJaWYgKCF1ZnNoY2Rfd2Jfc3VwKGhiYSkgfHwgaGJhLT53Yl9idWZfZmx1c2hfZW5hYmxl ZCkNCiAJCXJldHVybiAwOw0KIA0KKwlpbmRleCA9IHVmc2hjZF93Yl9nZXRfaW5kZXgoaGJhKTsN CiAJcmV0ID0gdWZzaGNkX3F1ZXJ5X2ZsYWdfcmV0cnkoaGJhLCBVUElVX1FVRVJZX09QQ09ERV9T RVRfRkxBRywNCiAJCQkJICAgICAgUVVFUllfRkxBR19JRE5fV0JfQlVGRl9GTFVTSF9FTiwNCi0J CQkJICAgICAgMCwgTlVMTCk7DQorCQkJCSAgICAgIGluZGV4LCBOVUxMKTsNCiAJaWYgKHJldCkN CiAJCWRldl9lcnIoaGJhLT5kZXYsICIlcyBXQiAtIGJ1ZiBmbHVzaCBlbmFibGUgZmFpbGVkICVk XG4iLA0KIAkJCV9fZnVuY19fLCByZXQpOw0KQEAgLTUyNzgsMTIgKzUyOTIsMTUgQEAgc3RhdGlj IGludCB1ZnNoY2Rfd2JfYnVmX2ZsdXNoX2VuYWJsZShzdHJ1Y3QgdWZzX2hiYSAqaGJhKQ0KIHN0 YXRpYyBpbnQgdWZzaGNkX3diX2J1Zl9mbHVzaF9kaXNhYmxlKHN0cnVjdCB1ZnNfaGJhICpoYmEp DQogew0KIAlpbnQgcmV0Ow0KKwl1OCBpbmRleDsNCiANCiAJaWYgKCF1ZnNoY2Rfd2Jfc3VwKGhi YSkgfHwgIWhiYS0+d2JfYnVmX2ZsdXNoX2VuYWJsZWQpDQogCQlyZXR1cm4gMDsNCiANCisJaW5k ZXggPSB1ZnNoY2Rfd2JfZ2V0X2luZGV4KGhiYSk7DQogCXJldCA9IHVmc2hjZF9xdWVyeV9mbGFn X3JldHJ5KGhiYSwgVVBJVV9RVUVSWV9PUENPREVfQ0xFQVJfRkxBRywNCi0JCQkJICAgICAgUVVF UllfRkxBR19JRE5fV0JfQlVGRl9GTFVTSF9FTiwgMCwgTlVMTCk7DQorCQkJCSAgICAgIFFVRVJZ X0ZMQUdfSUROX1dCX0JVRkZfRkxVU0hfRU4sDQorCQkJCSAgICAgIGluZGV4LCBOVUxMKTsNCiAJ aWYgKHJldCkgew0KIAkJZGV2X3dhcm4oaGJhLT5kZXYsICIlczogV0IgLSBidWYgZmx1c2ggZGlz YWJsZSBmYWlsZWQgJWRcbiIsDQogCQkJIF9fZnVuY19fLCByZXQpOw0KQEAgLTY4MDIsNiArNjgx OSwxMCBAQCBzdGF0aWMgaW50IHVmc2hjZF9zY3NpX2FkZF93bHVzKHN0cnVjdCB1ZnNfaGJhICpo YmEpDQogDQogc3RhdGljIHZvaWQgdWZzaGNkX3diX3Byb2JlKHN0cnVjdCB1ZnNfaGJhICpoYmEs IHU4ICpkZXNjX2J1ZikNCiB7DQorCWludCByZXQ7DQorCXU4IGx1bjsNCisJdTMyIGRfbHVfd2Jf YnVmX2FsbG9jID0gMDsNCisNCiAJaWYgKGhiYS0+ZGVzY19zaXplLmRldl9kZXNjIDw9IERFVklD RV9ERVNDX1BBUkFNX0VYVF9VRlNfRkVBVFVSRV9TVVApDQogCQlnb3RvIHdiX2Rpc2FibGVkOw0K IA0KQEAgLTY4MjEsMTUgKzY4NDIsMzUgQEAgc3RhdGljIHZvaWQgdWZzaGNkX3diX3Byb2JlKHN0 cnVjdCB1ZnNfaGJhICpoYmEsIHU4ICpkZXNjX2J1ZikNCiAJaGJhLT5kZXZfaW5mby5iX3diX2J1 ZmZlcl90eXBlID0NCiAJCWRlc2NfYnVmW0RFVklDRV9ERVNDX1BBUkFNX1dCX1RZUEVdOw0KIA0K LQloYmEtPmRldl9pbmZvLmRfd2JfYWxsb2NfdW5pdHMgPQ0KLQkJZ2V0X3VuYWxpZ25lZF9iZTMy KGRlc2NfYnVmICsNCi0JCQkJICAgREVWSUNFX0RFU0NfUEFSQU1fV0JfU0hBUkVEX0FMTE9DX1VO SVRTKTsNCiAJaGJhLT5kZXZfaW5mby5iX3ByZXNydl91c3BjX2VuID0NCiAJCWRlc2NfYnVmW0RF VklDRV9ERVNDX1BBUkFNX1dCX1BSRVNSVl9VU1JTUENfRU5dOw0KIA0KLQlpZiAoIShoYmEtPmRl dl9pbmZvLmJfd2JfYnVmZmVyX3R5cGUgJiYNCi0JICAgICAgaGJhLT5kZXZfaW5mby5kX3diX2Fs bG9jX3VuaXRzKSkNCi0JCWdvdG8gd2JfZGlzYWJsZWQ7DQorCWlmIChoYmEtPmRldl9pbmZvLmJf d2JfYnVmZmVyX3R5cGUgPT0gV0JfQlVGX01PREVfU0hBUkVEKSB7DQorCQloYmEtPmRldl9pbmZv LmRfd2JfYWxsb2NfdW5pdHMgPQ0KKwkJZ2V0X3VuYWxpZ25lZF9iZTMyKGRlc2NfYnVmICsNCisJ CQkJICAgREVWSUNFX0RFU0NfUEFSQU1fV0JfU0hBUkVEX0FMTE9DX1VOSVRTKTsNCisJCWlmICgh aGJhLT5kZXZfaW5mby5kX3diX2FsbG9jX3VuaXRzKQ0KKwkJCWdvdG8gd2JfZGlzYWJsZWQ7DQor CX0gZWxzZSB7DQorCQlmb3IgKGx1biA9IDA7IGx1biA8IGhiYS0+ZGV2X2luZm8ubWF4X2x1X3N1 cHBvcnRlZDsgbHVuKyspIHsNCisJCQlyZXQgPSB1ZnNoY2RfcmVhZF91bml0X2Rlc2NfcGFyYW0o aGJhLA0KKwkJCQkJbHVuLA0KKwkJCQkJVU5JVF9ERVNDX1BBUkFNX1dCX0JVRl9BTExPQ19VTklU UywNCisJCQkJCSh1OCAqKSZkX2x1X3diX2J1Zl9hbGxvYywNCisJCQkJCXNpemVvZihkX2x1X3di X2J1Zl9hbGxvYykpOw0KKwkJCWlmIChyZXQpDQorCQkJCWdvdG8gd2JfZGlzYWJsZWQ7DQorCQkJ aWYgKGRfbHVfd2JfYnVmX2FsbG9jKSB7DQorCQkJCWhiYS0+ZGV2X2luZm8ud2JfZGVkaWNhdGVk X2x1ID0gbHVuOw0KKwkJCQlicmVhazsNCisJCQl9DQorCQl9DQorDQorCQlpZiAoIWRfbHVfd2Jf YnVmX2FsbG9jKQ0KKwkJCWdvdG8gd2JfZGlzYWJsZWQ7DQorCX0NCisNCisJcmV0dXJuOw0KIA0K IHdiX2Rpc2FibGVkOg0KIAloYmEtPmNhcHMgJj0gflVGU0hDRF9DQVBfV0JfRU47DQotLSANCjIu MTguMA0K 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 X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9A479C83006 for ; Wed, 29 Apr 2020 13:57:15 +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 6D6C021707 for ; Wed, 29 Apr 2020 13:57:15 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="ZYpMuiaO"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="EebVdqzN" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6D6C021707 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=rvcROX+/XBKuU3GnBgIJBH7VZc2YJFPCpFxBRyhD0U0=; b=ZYpMuiaOTWOIIV WPc5rt+9hfPr5GPfWSJRgIbyrQt3KZacCSLXq1bqBLvOa21K8iWF3H1n7O87+8g+yi/1fcNSSIa5Q uJERdw3lx0bBl3uCwy8fzY5bQxnCC/xBdR3Gu72uBuPAW2nEBLh9l65cbqG9d9EmO+dGPogL5sZ0T iZHJdUNDf4THMY6RONoNODNP0Gi8XE/y+MsX29zB4HBtYwjC6B9T0v8UQb7tcK1eaDcGExdUVSPGC axphhpZB6e20nKLuf9MK5gYXYq4aNGvLdzoQyOEBun/i5rEkDdA2pPdrF3b8FzgUjlP4pGJwP0Dyt mzp+8DnZmHUjM67nNRTg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jTnCw-0000cm-TI; Wed, 29 Apr 2020 13:57:02 +0000 Received: from mailgw01.mediatek.com ([216.200.240.184]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jTnCD-0008NF-I8; Wed, 29 Apr 2020 13:56:19 +0000 X-UUID: fff1d9cc6f434f8a86d8c449f1276cf3-20200429 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=QaW8XcXetzkfH6jLg3CAPo/VEBtsUIVZ40qmlvMXy5k=; b=EebVdqzNKzmvdTiPo9JZhMQuqm1I8tY4AQ2AW5MDeIX9JTmC6uUFkebzhskBltN0kE4C8vaaQtfcyGq5AtzxLpYQjts5Af0RSQdA++RYVSlKiDiifKPF/kXh9VSU2eJrys/SsAtnM9oT3srjYRcIgz7UHdDHo5zXdzAjmcE2yuY=; X-UUID: fff1d9cc6f434f8a86d8c449f1276cf3-20200429 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw01.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLS) with ESMTP id 1670271659; Wed, 29 Apr 2020 05:57:14 -0800 Received: from MTKMBS02N1.mediatek.inc (172.21.101.77) by MTKMBS62N1.mediatek.inc (172.29.193.41) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 29 Apr 2020 06:56:11 -0700 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs02n1.mediatek.inc (172.21.101.77) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 29 Apr 2020 21:56:10 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Wed, 29 Apr 2020 21:56:09 +0800 From: Stanley Chu To: , , , , , Subject: [PATCH v2 3/5] scsi: ufs: add LU Dedicated buffer mode support for WriteBooster Date: Wed, 29 Apr 2020 21:56:08 +0800 Message-ID: <20200429135610.23750-4-stanley.chu@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20200429135610.23750-1-stanley.chu@mediatek.com> References: <20200429135610.23750-1-stanley.chu@mediatek.com> MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200429_065617_611060_A10ECF6A X-CRM114-Status: GOOD ( 15.35 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: bvanassche@acm.org, andy.teng@mediatek.com, chun-hung.wu@mediatek.com, kuohong.wang@mediatek.com, linux-kernel@vger.kernel.org, cang@codeaurora.org, linux-mediatek@lists.infradead.org, peter.wang@mediatek.com, matthias.bgg@gmail.com, Stanley Chu , linux-arm-kernel@lists.infradead.org, beanhuo@micron.com Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org According to UFS specification, there are two WriteBooster mode of operations: "LU dedicated buffer" mode and "shared buffer" mode. In the "LU dedicated buffer" mode, the WriteBooster Buffer is dedicated to a logical unit. If the device supports the "LU dedicated buffer" mode, this mode is configured by setting bWriteBoosterBufferType to 00h. The logical unit WriteBooster Buffer size is configured by setting the dLUNumWriteBoosterBufferAllocUnits field of the related Unit Descriptor. Only a value greater than zero enables the WriteBooster feature in the logical unit. Modify ufshcd_wb_probe() as above description to support LU Dedicated buffer type. Signed-off-by: Stanley Chu --- drivers/scsi/ufs/ufs.h | 7 +++++ drivers/scsi/ufs/ufshcd.c | 63 ++++++++++++++++++++++++++++++++------- 2 files changed, 59 insertions(+), 11 deletions(-) diff --git a/drivers/scsi/ufs/ufs.h b/drivers/scsi/ufs/ufs.h index daac5053b850..eb3d3cebc87d 100644 --- a/drivers/scsi/ufs/ufs.h +++ b/drivers/scsi/ufs/ufs.h @@ -330,6 +330,12 @@ enum health_desc_param { HEALTH_DESC_PARAM_LIFE_TIME_EST_B = 0x4, }; +/* WriteBooster buffer mode */ +enum { + WB_BUF_MODE_LU_DEDICATED = 0x0, + WB_BUF_MODE_SHARED = 0x1, +}; + /* * Logical Unit Write Protect * 00h: LU not write protected @@ -559,6 +565,7 @@ struct ufs_dev_info { bool is_lu_power_on_wp; /* Maximum number of general LU supported by the UFS device */ u8 max_lu_supported; + u8 wb_dedicated_lu; u16 wmanufacturerid; /*UFS device Product Name */ u8 *model; diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index 465ee023ea4b..b970a422a5ea 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -5202,9 +5202,18 @@ static bool ufshcd_wb_sup(struct ufs_hba *hba) return ufshcd_is_wb_allowed(hba); } +static int ufshcd_wb_get_index(struct ufs_hba *hba) +{ + if (hba->dev_info.b_wb_buffer_type == WB_BUF_MODE_LU_DEDICATED) + return hba->dev_info.wb_dedicated_lu; + else + return 0; +} + static int ufshcd_wb_ctrl(struct ufs_hba *hba, bool enable) { int ret; + u8 index; enum query_opcode opcode; if (!ufshcd_wb_sup(hba)) @@ -5217,8 +5226,9 @@ static int ufshcd_wb_ctrl(struct ufs_hba *hba, bool enable) else opcode = UPIU_QUERY_OPCODE_CLEAR_FLAG; + index = ufshcd_wb_get_index(hba); ret = ufshcd_query_flag_retry(hba, opcode, - QUERY_FLAG_IDN_WB_EN, 0, NULL); + QUERY_FLAG_IDN_WB_EN, index, NULL); if (ret) { dev_err(hba->dev, "%s write booster %s failed %d\n", __func__, enable ? "enable" : "disable", ret); @@ -5235,15 +5245,17 @@ static int ufshcd_wb_ctrl(struct ufs_hba *hba, bool enable) static int ufshcd_wb_toggle_flush_during_h8(struct ufs_hba *hba, bool set) { int val; + u8 index; if (set) val = UPIU_QUERY_OPCODE_SET_FLAG; else val = UPIU_QUERY_OPCODE_CLEAR_FLAG; + index = ufshcd_wb_get_index(hba); return ufshcd_query_flag_retry(hba, val, - QUERY_FLAG_IDN_WB_BUFF_FLUSH_DURING_HIBERN8, 0, - NULL); + QUERY_FLAG_IDN_WB_BUFF_FLUSH_DURING_HIBERN8, + index, NULL); } static inline void ufshcd_wb_toggle_flush(struct ufs_hba *hba, bool enable) @@ -5258,13 +5270,15 @@ static inline void ufshcd_wb_toggle_flush(struct ufs_hba *hba, bool enable) static int ufshcd_wb_buf_flush_enable(struct ufs_hba *hba) { int ret; + u8 index; if (!ufshcd_wb_sup(hba) || hba->wb_buf_flush_enabled) return 0; + index = ufshcd_wb_get_index(hba); ret = ufshcd_query_flag_retry(hba, UPIU_QUERY_OPCODE_SET_FLAG, QUERY_FLAG_IDN_WB_BUFF_FLUSH_EN, - 0, NULL); + index, NULL); if (ret) dev_err(hba->dev, "%s WB - buf flush enable failed %d\n", __func__, ret); @@ -5278,12 +5292,15 @@ static int ufshcd_wb_buf_flush_enable(struct ufs_hba *hba) static int ufshcd_wb_buf_flush_disable(struct ufs_hba *hba) { int ret; + u8 index; if (!ufshcd_wb_sup(hba) || !hba->wb_buf_flush_enabled) return 0; + index = ufshcd_wb_get_index(hba); ret = ufshcd_query_flag_retry(hba, UPIU_QUERY_OPCODE_CLEAR_FLAG, - QUERY_FLAG_IDN_WB_BUFF_FLUSH_EN, 0, NULL); + QUERY_FLAG_IDN_WB_BUFF_FLUSH_EN, + index, NULL); if (ret) { dev_warn(hba->dev, "%s: WB - buf flush disable failed %d\n", __func__, ret); @@ -6802,6 +6819,10 @@ static int ufshcd_scsi_add_wlus(struct ufs_hba *hba) static void ufshcd_wb_probe(struct ufs_hba *hba, u8 *desc_buf) { + int ret; + u8 lun; + u32 d_lu_wb_buf_alloc = 0; + if (hba->desc_size.dev_desc <= DEVICE_DESC_PARAM_EXT_UFS_FEATURE_SUP) goto wb_disabled; @@ -6821,15 +6842,35 @@ static void ufshcd_wb_probe(struct ufs_hba *hba, u8 *desc_buf) hba->dev_info.b_wb_buffer_type = desc_buf[DEVICE_DESC_PARAM_WB_TYPE]; - hba->dev_info.d_wb_alloc_units = - get_unaligned_be32(desc_buf + - DEVICE_DESC_PARAM_WB_SHARED_ALLOC_UNITS); hba->dev_info.b_presrv_uspc_en = desc_buf[DEVICE_DESC_PARAM_WB_PRESRV_USRSPC_EN]; - if (!(hba->dev_info.b_wb_buffer_type && - hba->dev_info.d_wb_alloc_units)) - goto wb_disabled; + if (hba->dev_info.b_wb_buffer_type == WB_BUF_MODE_SHARED) { + hba->dev_info.d_wb_alloc_units = + get_unaligned_be32(desc_buf + + DEVICE_DESC_PARAM_WB_SHARED_ALLOC_UNITS); + if (!hba->dev_info.d_wb_alloc_units) + goto wb_disabled; + } else { + for (lun = 0; lun < hba->dev_info.max_lu_supported; lun++) { + ret = ufshcd_read_unit_desc_param(hba, + lun, + UNIT_DESC_PARAM_WB_BUF_ALLOC_UNITS, + (u8 *)&d_lu_wb_buf_alloc, + sizeof(d_lu_wb_buf_alloc)); + if (ret) + goto wb_disabled; + if (d_lu_wb_buf_alloc) { + hba->dev_info.wb_dedicated_lu = lun; + break; + } + } + + if (!d_lu_wb_buf_alloc) + goto wb_disabled; + } + + return; wb_disabled: hba->caps &= ~UFSHCD_CAP_WB_EN; -- 2.18.0 _______________________________________________ Linux-mediatek mailing list Linux-mediatek@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-mediatek 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 X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7AE6EC83006 for ; Wed, 29 Apr 2020 13:56:50 +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 420C321835 for ; Wed, 29 Apr 2020 13:56:50 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="TJzvikxP"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="EebVdqzN" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 420C321835 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=yoD9ICXKI1S0tNTyU8VLxGyxYExtioyYCrv1QEmWK7M=; b=TJzvikxPh/D8B0 6Yokofhs+42cgHinzrT17AEy6nPCzRr/ntKwpF+32dKUpbyC/63CwqUaS+Q5ftTEONJM7f/PqbDjS SZV+Ur0V5CeWumCBIf+GonGQk+/NfBJi8vI05L8kn5DL4WkutEcJlwmzdlJCYMmaKHkDvbXaUOOu+ tPewKQIH7+27xWkGqtypLf4fAXKUK0pLwMXqxVFYPXV5OaBIS5+VMbjdXq40r+TFt3S0Sfkf5u4Y1 DFnSncpbWxSfqn66BNQ+ULkMWHM2LtSQcKKmwcZ0ZlR0Y/HhGB/qCfPsNEtLW7NuOwLp8q2T7zNEi 0Sz2tt7Wgaq/uFUys+Zg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jTnCg-0000Ki-2H; Wed, 29 Apr 2020 13:56:46 +0000 Received: from mailgw01.mediatek.com ([216.200.240.184]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jTnCD-0008NF-I8; Wed, 29 Apr 2020 13:56:19 +0000 X-UUID: fff1d9cc6f434f8a86d8c449f1276cf3-20200429 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=QaW8XcXetzkfH6jLg3CAPo/VEBtsUIVZ40qmlvMXy5k=; b=EebVdqzNKzmvdTiPo9JZhMQuqm1I8tY4AQ2AW5MDeIX9JTmC6uUFkebzhskBltN0kE4C8vaaQtfcyGq5AtzxLpYQjts5Af0RSQdA++RYVSlKiDiifKPF/kXh9VSU2eJrys/SsAtnM9oT3srjYRcIgz7UHdDHo5zXdzAjmcE2yuY=; X-UUID: fff1d9cc6f434f8a86d8c449f1276cf3-20200429 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw01.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLS) with ESMTP id 1670271659; Wed, 29 Apr 2020 05:57:14 -0800 Received: from MTKMBS02N1.mediatek.inc (172.21.101.77) by MTKMBS62N1.mediatek.inc (172.29.193.41) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 29 Apr 2020 06:56:11 -0700 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs02n1.mediatek.inc (172.21.101.77) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 29 Apr 2020 21:56:10 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Wed, 29 Apr 2020 21:56:09 +0800 From: Stanley Chu To: , , , , , Subject: [PATCH v2 3/5] scsi: ufs: add LU Dedicated buffer mode support for WriteBooster Date: Wed, 29 Apr 2020 21:56:08 +0800 Message-ID: <20200429135610.23750-4-stanley.chu@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20200429135610.23750-1-stanley.chu@mediatek.com> References: <20200429135610.23750-1-stanley.chu@mediatek.com> MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200429_065617_611060_A10ECF6A X-CRM114-Status: GOOD ( 15.35 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: bvanassche@acm.org, andy.teng@mediatek.com, chun-hung.wu@mediatek.com, kuohong.wang@mediatek.com, linux-kernel@vger.kernel.org, cang@codeaurora.org, linux-mediatek@lists.infradead.org, peter.wang@mediatek.com, matthias.bgg@gmail.com, Stanley Chu , linux-arm-kernel@lists.infradead.org, beanhuo@micron.com Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org According to UFS specification, there are two WriteBooster mode of operations: "LU dedicated buffer" mode and "shared buffer" mode. In the "LU dedicated buffer" mode, the WriteBooster Buffer is dedicated to a logical unit. If the device supports the "LU dedicated buffer" mode, this mode is configured by setting bWriteBoosterBufferType to 00h. The logical unit WriteBooster Buffer size is configured by setting the dLUNumWriteBoosterBufferAllocUnits field of the related Unit Descriptor. Only a value greater than zero enables the WriteBooster feature in the logical unit. Modify ufshcd_wb_probe() as above description to support LU Dedicated buffer type. Signed-off-by: Stanley Chu --- drivers/scsi/ufs/ufs.h | 7 +++++ drivers/scsi/ufs/ufshcd.c | 63 ++++++++++++++++++++++++++++++++------- 2 files changed, 59 insertions(+), 11 deletions(-) diff --git a/drivers/scsi/ufs/ufs.h b/drivers/scsi/ufs/ufs.h index daac5053b850..eb3d3cebc87d 100644 --- a/drivers/scsi/ufs/ufs.h +++ b/drivers/scsi/ufs/ufs.h @@ -330,6 +330,12 @@ enum health_desc_param { HEALTH_DESC_PARAM_LIFE_TIME_EST_B = 0x4, }; +/* WriteBooster buffer mode */ +enum { + WB_BUF_MODE_LU_DEDICATED = 0x0, + WB_BUF_MODE_SHARED = 0x1, +}; + /* * Logical Unit Write Protect * 00h: LU not write protected @@ -559,6 +565,7 @@ struct ufs_dev_info { bool is_lu_power_on_wp; /* Maximum number of general LU supported by the UFS device */ u8 max_lu_supported; + u8 wb_dedicated_lu; u16 wmanufacturerid; /*UFS device Product Name */ u8 *model; diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index 465ee023ea4b..b970a422a5ea 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -5202,9 +5202,18 @@ static bool ufshcd_wb_sup(struct ufs_hba *hba) return ufshcd_is_wb_allowed(hba); } +static int ufshcd_wb_get_index(struct ufs_hba *hba) +{ + if (hba->dev_info.b_wb_buffer_type == WB_BUF_MODE_LU_DEDICATED) + return hba->dev_info.wb_dedicated_lu; + else + return 0; +} + static int ufshcd_wb_ctrl(struct ufs_hba *hba, bool enable) { int ret; + u8 index; enum query_opcode opcode; if (!ufshcd_wb_sup(hba)) @@ -5217,8 +5226,9 @@ static int ufshcd_wb_ctrl(struct ufs_hba *hba, bool enable) else opcode = UPIU_QUERY_OPCODE_CLEAR_FLAG; + index = ufshcd_wb_get_index(hba); ret = ufshcd_query_flag_retry(hba, opcode, - QUERY_FLAG_IDN_WB_EN, 0, NULL); + QUERY_FLAG_IDN_WB_EN, index, NULL); if (ret) { dev_err(hba->dev, "%s write booster %s failed %d\n", __func__, enable ? "enable" : "disable", ret); @@ -5235,15 +5245,17 @@ static int ufshcd_wb_ctrl(struct ufs_hba *hba, bool enable) static int ufshcd_wb_toggle_flush_during_h8(struct ufs_hba *hba, bool set) { int val; + u8 index; if (set) val = UPIU_QUERY_OPCODE_SET_FLAG; else val = UPIU_QUERY_OPCODE_CLEAR_FLAG; + index = ufshcd_wb_get_index(hba); return ufshcd_query_flag_retry(hba, val, - QUERY_FLAG_IDN_WB_BUFF_FLUSH_DURING_HIBERN8, 0, - NULL); + QUERY_FLAG_IDN_WB_BUFF_FLUSH_DURING_HIBERN8, + index, NULL); } static inline void ufshcd_wb_toggle_flush(struct ufs_hba *hba, bool enable) @@ -5258,13 +5270,15 @@ static inline void ufshcd_wb_toggle_flush(struct ufs_hba *hba, bool enable) static int ufshcd_wb_buf_flush_enable(struct ufs_hba *hba) { int ret; + u8 index; if (!ufshcd_wb_sup(hba) || hba->wb_buf_flush_enabled) return 0; + index = ufshcd_wb_get_index(hba); ret = ufshcd_query_flag_retry(hba, UPIU_QUERY_OPCODE_SET_FLAG, QUERY_FLAG_IDN_WB_BUFF_FLUSH_EN, - 0, NULL); + index, NULL); if (ret) dev_err(hba->dev, "%s WB - buf flush enable failed %d\n", __func__, ret); @@ -5278,12 +5292,15 @@ static int ufshcd_wb_buf_flush_enable(struct ufs_hba *hba) static int ufshcd_wb_buf_flush_disable(struct ufs_hba *hba) { int ret; + u8 index; if (!ufshcd_wb_sup(hba) || !hba->wb_buf_flush_enabled) return 0; + index = ufshcd_wb_get_index(hba); ret = ufshcd_query_flag_retry(hba, UPIU_QUERY_OPCODE_CLEAR_FLAG, - QUERY_FLAG_IDN_WB_BUFF_FLUSH_EN, 0, NULL); + QUERY_FLAG_IDN_WB_BUFF_FLUSH_EN, + index, NULL); if (ret) { dev_warn(hba->dev, "%s: WB - buf flush disable failed %d\n", __func__, ret); @@ -6802,6 +6819,10 @@ static int ufshcd_scsi_add_wlus(struct ufs_hba *hba) static void ufshcd_wb_probe(struct ufs_hba *hba, u8 *desc_buf) { + int ret; + u8 lun; + u32 d_lu_wb_buf_alloc = 0; + if (hba->desc_size.dev_desc <= DEVICE_DESC_PARAM_EXT_UFS_FEATURE_SUP) goto wb_disabled; @@ -6821,15 +6842,35 @@ static void ufshcd_wb_probe(struct ufs_hba *hba, u8 *desc_buf) hba->dev_info.b_wb_buffer_type = desc_buf[DEVICE_DESC_PARAM_WB_TYPE]; - hba->dev_info.d_wb_alloc_units = - get_unaligned_be32(desc_buf + - DEVICE_DESC_PARAM_WB_SHARED_ALLOC_UNITS); hba->dev_info.b_presrv_uspc_en = desc_buf[DEVICE_DESC_PARAM_WB_PRESRV_USRSPC_EN]; - if (!(hba->dev_info.b_wb_buffer_type && - hba->dev_info.d_wb_alloc_units)) - goto wb_disabled; + if (hba->dev_info.b_wb_buffer_type == WB_BUF_MODE_SHARED) { + hba->dev_info.d_wb_alloc_units = + get_unaligned_be32(desc_buf + + DEVICE_DESC_PARAM_WB_SHARED_ALLOC_UNITS); + if (!hba->dev_info.d_wb_alloc_units) + goto wb_disabled; + } else { + for (lun = 0; lun < hba->dev_info.max_lu_supported; lun++) { + ret = ufshcd_read_unit_desc_param(hba, + lun, + UNIT_DESC_PARAM_WB_BUF_ALLOC_UNITS, + (u8 *)&d_lu_wb_buf_alloc, + sizeof(d_lu_wb_buf_alloc)); + if (ret) + goto wb_disabled; + if (d_lu_wb_buf_alloc) { + hba->dev_info.wb_dedicated_lu = lun; + break; + } + } + + if (!d_lu_wb_buf_alloc) + goto wb_disabled; + } + + return; wb_disabled: hba->caps &= ~UFSHCD_CAP_WB_EN; -- 2.18.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel