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=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 D37F0C43603 for ; Wed, 11 Dec 2019 01:55:14 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 9C8A42073B for ; Wed, 11 Dec 2019 01:55:14 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="fakCLrg/" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727590AbfLKBzN (ORCPT ); Tue, 10 Dec 2019 20:55:13 -0500 Received: from Mailgw01.mediatek.com ([1.203.163.78]:39344 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1727538AbfLKBzM (ORCPT ); Tue, 10 Dec 2019 20:55:12 -0500 X-UUID: b8e983e84735409cb365ea1f78e47c10-20191211 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=2LVIlkRutdZ1YsoqtSNAMNODO/3+N41XB7AwwCF2ckQ=; b=fakCLrg/M0KrYJzZMIdo3YR7ggFWG8OznTxqyGgwxc8CKOhdp5MepHpoKgqaZwoGE+1jGLX+FdYC9y80PiIhfbwDPdXVZ6wm4z3K8mJKaBtZis2iVbaDFxQbtAuh6+BdTZWUYYAaAGovtGrJW4fJnIeB/IsKUQhjto5sjrmngBk=; X-UUID: b8e983e84735409cb365ea1f78e47c10-20191211 Received: from mtkcas32.mediatek.inc [(172.27.4.253)] by mailgw01.mediatek.com (envelope-from ) (mailgw01.mediatek.com ESMTP with TLS) with ESMTP id 1490590260; Wed, 11 Dec 2019 09:55:03 +0800 Received: from mtkcas09.mediatek.inc (172.21.101.178) by MTKMBS31DR.mediatek.inc (172.27.6.102) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Wed, 11 Dec 2019 09:54:54 +0800 Received: from localhost.localdomain (10.17.3.153) by mtkcas09.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Wed, 11 Dec 2019 09:54:53 +0800 From: To: Bin Liu , Rob Herring CC: Greg Kroah-Hartman , Mark Rutland , Matthias Brugger , Alan Stern , , , , , , , , , Min Guo Subject: [PATCH v9 5/6] usb: musb: Add musb_clearb/w() interface Date: Wed, 11 Dec 2019 09:54:45 +0800 Message-ID: <20191211015446.11477-6-min.guo@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20191211015446.11477-1-min.guo@mediatek.com> References: <20191211015446.11477-1-min.guo@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-TM-SNTS-SMTP: D11EFE24E0F8A7AEA1B750D1BF120767F9E77C1B9862F2508723C09706023F2C2000:8 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 RnJvbTogTWluIEd1byA8bWluLmd1b0BtZWRpYXRlay5jb20+DQoNCkRlbGV0ZSB0aGUgY29uc3Qg YXR0cmlidXRlIG9mIGFkZHIgcGFyYW1ldGVyIGluIHJlYWRiL3cvbCBob29rcywgdGhlc2UNCmNo YW5nZXMgYXJlIGZvciBpbXBsZW1lbnRpbmcgY2xlYXJpbmcgVzFDIHJlZ2lzdGVycy4NClJlcGxh Y2UgbXVzYl9yZWFkYi93IHdpdGggbXVzYl9jbGVhcmIvdyB0byBjbGVhciB0aGUgaW50ZXJydXB0 IHN0YXR1cy4NCg0KU2lnbmVkLW9mZi1ieTogTWluIEd1byA8bWluLmd1b0BtZWRpYXRlay5jb20+ DQotLS0NCmNoYW5nZXMgaW4gdjk6DQoxLiBubyBjaGFuZ2VzDQoNCmNoYW5nZXMgaW4gdjg6DQox LiBubyBjaGFuZ2VzDQoNCmNoYW5nZXMgaW4gdjc6DQoxLiBubyBjaGFuZ2VzDQoNCmNoYW5nZXMg aW4gdjY6DQoxLiBubyBjaGFuZ2VzDQoNCmNoYW5nZXMgaW4gdjU6DQoxLiBSZXBsYWNlIG11c2Jf cmVhZGIoKSB3aXRoIG11c2JfY2xlYXJiKCkgdG8gY2xlYXIgZG1hIHBlbmRpbmcgaW50ZXJydXB0 cw0KDQpuZXcgcGF0Y2ggYmFzZWQgb24gdjQ6DQotLS0NCiBkcml2ZXJzL3VzYi9tdXNiL211c2Jf Y29yZS5jIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0NCiBkcml2ZXJzL3Vz Yi9tdXNiL211c2JfY29yZS5oIHwgIDggKysrKysrLS0NCiBkcml2ZXJzL3VzYi9tdXNiL211c2Jf aW8uaCAgIHwgIDggKysrKystLS0NCiBkcml2ZXJzL3VzYi9tdXNiL211c2Joc2RtYS5jIHwgIDIg Ky0NCiBkcml2ZXJzL3VzYi9tdXNiL3N1bnhpLmMgICAgIHwgIDQgKystLQ0KIGRyaXZlcnMvdXNi L211c2IvdHVzYjYwMTAuYyAgfCAgMiArLQ0KIDYgZmlsZXMgY2hhbmdlZCwgMzggaW5zZXJ0aW9u cygrKSwgMTggZGVsZXRpb25zKC0pDQoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9tdXNiL211 c2JfY29yZS5jIGIvZHJpdmVycy91c2IvbXVzYi9tdXNiX2NvcmUuYw0KaW5kZXggMzJjMDA2NTJl MWEyLi44ZTNjMTRlM2FmYWIgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3VzYi9tdXNiL211c2JfY29y ZS5jDQorKysgYi9kcml2ZXJzL3VzYi9tdXNiL211c2JfY29yZS5jDQpAQCAtMjQ2LDcgKzI0Niw3 IEBAIHN0YXRpYyB1MzIgbXVzYl9kZWZhdWx0X2J1c2N0bF9vZmZzZXQodTggZXBudW0sIHUxNiBv ZmZzZXQpDQogCXJldHVybiAweDgwICsgKDB4MDggKiBlcG51bSkgKyBvZmZzZXQ7DQogfQ0KIA0K LXN0YXRpYyB1OCBtdXNiX2RlZmF1bHRfcmVhZGIoY29uc3Qgdm9pZCBfX2lvbWVtICphZGRyLCB1 bnNpZ25lZCBvZmZzZXQpDQorc3RhdGljIHU4IG11c2JfZGVmYXVsdF9yZWFkYih2b2lkIF9faW9t ZW0gKmFkZHIsIHVuc2lnbmVkIG9mZnNldCkNCiB7DQogCXU4IGRhdGEgPSAgX19yYXdfcmVhZGIo YWRkciArIG9mZnNldCk7DQogDQpAQCAtMjYwLDcgKzI2MCw3IEBAIHN0YXRpYyB2b2lkIG11c2Jf ZGVmYXVsdF93cml0ZWIodm9pZCBfX2lvbWVtICphZGRyLCB1bnNpZ25lZCBvZmZzZXQsIHU4IGRh dGEpDQogCV9fcmF3X3dyaXRlYihkYXRhLCBhZGRyICsgb2Zmc2V0KTsNCiB9DQogDQotc3RhdGlj IHUxNiBtdXNiX2RlZmF1bHRfcmVhZHcoY29uc3Qgdm9pZCBfX2lvbWVtICphZGRyLCB1bnNpZ25l ZCBvZmZzZXQpDQorc3RhdGljIHUxNiBtdXNiX2RlZmF1bHRfcmVhZHcodm9pZCBfX2lvbWVtICph ZGRyLCB1bnNpZ25lZCBvZmZzZXQpDQogew0KIAl1MTYgZGF0YSA9IF9fcmF3X3JlYWR3KGFkZHIg KyBvZmZzZXQpOw0KIA0KQEAgLTM5NiwxOSArMzk2LDI1IEBAIHN0YXRpYyB2b2lkIG11c2JfZGVm YXVsdF9yZWFkX2ZpZm8oc3RydWN0IG11c2JfaHdfZXAgKmh3X2VwLCB1MTYgbGVuLCB1OCAqZHN0 KQ0KIC8qDQogICogT2xkIHN0eWxlIElPIGZ1bmN0aW9ucw0KICAqLw0KLXU4ICgqbXVzYl9yZWFk YikoY29uc3Qgdm9pZCBfX2lvbWVtICphZGRyLCB1bnNpZ25lZCBvZmZzZXQpOw0KK3U4ICgqbXVz Yl9yZWFkYikodm9pZCBfX2lvbWVtICphZGRyLCB1bnNpZ25lZCBvZmZzZXQpOw0KIEVYUE9SVF9T WU1CT0xfR1BMKG11c2JfcmVhZGIpOw0KIA0KIHZvaWQgKCptdXNiX3dyaXRlYikodm9pZCBfX2lv bWVtICphZGRyLCB1bnNpZ25lZCBvZmZzZXQsIHU4IGRhdGEpOw0KIEVYUE9SVF9TWU1CT0xfR1BM KG11c2Jfd3JpdGViKTsNCiANCi11MTYgKCptdXNiX3JlYWR3KShjb25zdCB2b2lkIF9faW9tZW0g KmFkZHIsIHVuc2lnbmVkIG9mZnNldCk7DQordTggKCptdXNiX2NsZWFyYikodm9pZCBfX2lvbWVt ICphZGRyLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KTsNCitFWFBPUlRfU1lNQk9MX0dQTChtdXNiX2Ns ZWFyYik7DQorDQordTE2ICgqbXVzYl9yZWFkdykodm9pZCBfX2lvbWVtICphZGRyLCB1bnNpZ25l ZCBvZmZzZXQpOw0KIEVYUE9SVF9TWU1CT0xfR1BMKG11c2JfcmVhZHcpOw0KIA0KIHZvaWQgKCpt dXNiX3dyaXRldykodm9pZCBfX2lvbWVtICphZGRyLCB1bnNpZ25lZCBvZmZzZXQsIHUxNiBkYXRh KTsNCiBFWFBPUlRfU1lNQk9MX0dQTChtdXNiX3dyaXRldyk7DQogDQotdTMyIG11c2JfcmVhZGwo Y29uc3Qgdm9pZCBfX2lvbWVtICphZGRyLCB1bnNpZ25lZCBvZmZzZXQpDQordTE2ICgqbXVzYl9j bGVhcncpKHZvaWQgX19pb21lbSAqYWRkciwgdW5zaWduZWQgaW50IG9mZnNldCk7DQorRVhQT1JU X1NZTUJPTF9HUEwobXVzYl9jbGVhcncpOw0KKw0KK3UzMiBtdXNiX3JlYWRsKHZvaWQgX19pb21l bSAqYWRkciwgdW5zaWduZWQgb2Zmc2V0KQ0KIHsNCiAJdTMyIGRhdGEgPSBfX3Jhd19yZWFkbChh ZGRyICsgb2Zmc2V0KTsNCiANCkBAIC0xMDQ3LDcgKzEwNTMsNiBAQCBzdGF0aWMgaXJxcmV0dXJu X3QgbXVzYl9zdGFnZTBfaXJxKHN0cnVjdCBtdXNiICptdXNiLCB1OCBpbnRfdXNiLA0KIHN0YXRp YyB2b2lkIG11c2JfZGlzYWJsZV9pbnRlcnJ1cHRzKHN0cnVjdCBtdXNiICptdXNiKQ0KIHsNCiAJ dm9pZCBfX2lvbWVtCSptYmFzZSA9IG11c2ItPm1yZWdzOw0KLQl1MTYJdGVtcDsNCiANCiAJLyog ZGlzYWJsZSBpbnRlcnJ1cHRzICovDQogCW11c2Jfd3JpdGViKG1iYXNlLCBNVVNCX0lOVFJVU0JF LCAwKTsNCkBAIC0xMDU3LDkgKzEwNjIsOSBAQCBzdGF0aWMgdm9pZCBtdXNiX2Rpc2FibGVfaW50 ZXJydXB0cyhzdHJ1Y3QgbXVzYiAqbXVzYikNCiAJbXVzYl93cml0ZXcobWJhc2UsIE1VU0JfSU5U UlJYRSwgMCk7DQogDQogCS8qICBmbHVzaCBwZW5kaW5nIGludGVycnVwdHMgKi8NCi0JdGVtcCA9 IG11c2JfcmVhZGIobWJhc2UsIE1VU0JfSU5UUlVTQik7DQotCXRlbXAgPSBtdXNiX3JlYWR3KG1i YXNlLCBNVVNCX0lOVFJUWCk7DQotCXRlbXAgPSBtdXNiX3JlYWR3KG1iYXNlLCBNVVNCX0lOVFJS WCk7DQorCW11c2JfY2xlYXJiKG1iYXNlLCBNVVNCX0lOVFJVU0IpOw0KKwltdXNiX2NsZWFydyht YmFzZSwgTVVTQl9JTlRSVFgpOw0KKwltdXNiX2NsZWFydyhtYmFzZSwgTVVTQl9JTlRSUlgpOw0K IH0NCiANCiBzdGF0aWMgdm9pZCBtdXNiX2VuYWJsZV9pbnRlcnJ1cHRzKHN0cnVjdCBtdXNiICpt dXNiKQ0KQEAgLTIyNzgsMTAgKzIyODMsMTkgQEAgbXVzYl9pbml0X2NvbnRyb2xsZXIoc3RydWN0 IGRldmljZSAqZGV2LCBpbnQgbklycSwgdm9pZCBfX2lvbWVtICpjdHJsKQ0KIAkJbXVzYl9yZWFk YiA9IG11c2ItPm9wcy0+cmVhZGI7DQogCWlmIChtdXNiLT5vcHMtPndyaXRlYikNCiAJCW11c2Jf d3JpdGViID0gbXVzYi0+b3BzLT53cml0ZWI7DQorCWlmIChtdXNiLT5vcHMtPmNsZWFyYikNCisJ CW11c2JfY2xlYXJiID0gbXVzYi0+b3BzLT5jbGVhcmI7DQorCWVsc2UNCisJCW11c2JfY2xlYXJi ID0gbXVzYl9yZWFkYjsNCisNCiAJaWYgKG11c2ItPm9wcy0+cmVhZHcpDQogCQltdXNiX3JlYWR3 ID0gbXVzYi0+b3BzLT5yZWFkdzsNCiAJaWYgKG11c2ItPm9wcy0+d3JpdGV3KQ0KIAkJbXVzYl93 cml0ZXcgPSBtdXNiLT5vcHMtPndyaXRldzsNCisJaWYgKG11c2ItPm9wcy0+Y2xlYXJ3KQ0KKwkJ bXVzYl9jbGVhcncgPSBtdXNiLT5vcHMtPmNsZWFydzsNCisJZWxzZQ0KKwkJbXVzYl9jbGVhcncg PSBtdXNiX3JlYWR3Ow0KIA0KICNpZm5kZWYgQ09ORklHX01VU0JfUElPX09OTFkNCiAJaWYgKCFt dXNiLT5vcHMtPmRtYV9pbml0IHx8ICFtdXNiLT5vcHMtPmRtYV9leGl0KSB7DQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy91c2IvbXVzYi9tdXNiX2NvcmUuaCBiL2RyaXZlcnMvdXNiL211c2IvbXVzYl9j b3JlLmgNCmluZGV4IDlmNWE2OWMyZDczYi4uMGQ5YTM1ZmU4MmQ1IDEwMDY0NA0KLS0tIGEvZHJp dmVycy91c2IvbXVzYi9tdXNiX2NvcmUuaA0KKysrIGIvZHJpdmVycy91c2IvbXVzYi9tdXNiX2Nv cmUuaA0KQEAgLTEyMCw4ICsxMjAsMTAgQEAgc3RydWN0IG11c2JfaW87DQogICogQGZpZm9fb2Zm c2V0OiByZXR1cm5zIHRoZSBmaWZvIG9mZnNldA0KICAqIEByZWFkYjoJcmVhZCA4IGJpdHMNCiAg KiBAd3JpdGViOgl3cml0ZSA4IGJpdHMNCisgKiBAY2xlYXJiOgljb3VsZCBiZSBjbGVhci1vbi1y ZWFkYiBvciBXMUMNCiAgKiBAcmVhZHc6CXJlYWQgMTYgYml0cw0KICAqIEB3cml0ZXc6CXdyaXRl IDE2IGJpdHMNCisgKiBAY2xlYXJ3Ogljb3VsZCBiZSBjbGVhci1vbi1yZWFkdyBvciBXMUMNCiAg KiBAcmVhZF9maWZvOglyZWFkcyB0aGUgZmlmbw0KICAqIEB3cml0ZV9maWZvOgl3cml0ZXMgdG8g Zmlmbw0KICAqIEBnZXRfdG9nZ2xlOglwbGF0Zm9ybSBzcGVjaWZpYyBnZXQgdG9nZ2xlIGZ1bmN0 aW9uDQpAQCAtMTY0LDEwICsxNjYsMTIgQEAgc3RydWN0IG11c2JfcGxhdGZvcm1fb3BzIHsNCiAJ dTE2CWZpZm9fbW9kZTsNCiAJdTMyCSgqZmlmb19vZmZzZXQpKHU4IGVwbnVtKTsNCiAJdTMyCSgq YnVzY3RsX29mZnNldCkodTggZXBudW0sIHUxNiBvZmZzZXQpOw0KLQl1OAkoKnJlYWRiKShjb25z dCB2b2lkIF9faW9tZW0gKmFkZHIsIHVuc2lnbmVkIG9mZnNldCk7DQorCXU4CSgqcmVhZGIpKHZv aWQgX19pb21lbSAqYWRkciwgdW5zaWduZWQgb2Zmc2V0KTsNCiAJdm9pZAkoKndyaXRlYikodm9p ZCBfX2lvbWVtICphZGRyLCB1bnNpZ25lZCBvZmZzZXQsIHU4IGRhdGEpOw0KLQl1MTYJKCpyZWFk dykoY29uc3Qgdm9pZCBfX2lvbWVtICphZGRyLCB1bnNpZ25lZCBvZmZzZXQpOw0KKwl1OAkoKmNs ZWFyYikodm9pZCBfX2lvbWVtICphZGRyLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KTsNCisJdTE2CSgq cmVhZHcpKHZvaWQgX19pb21lbSAqYWRkciwgdW5zaWduZWQgb2Zmc2V0KTsNCiAJdm9pZAkoKndy aXRldykodm9pZCBfX2lvbWVtICphZGRyLCB1bnNpZ25lZCBvZmZzZXQsIHUxNiBkYXRhKTsNCisJ dTE2CSgqY2xlYXJ3KSh2b2lkIF9faW9tZW0gKmFkZHIsIHVuc2lnbmVkIGludCBvZmZzZXQpOw0K IAl2b2lkCSgqcmVhZF9maWZvKShzdHJ1Y3QgbXVzYl9od19lcCAqaHdfZXAsIHUxNiBsZW4sIHU4 ICpidWYpOw0KIAl2b2lkCSgqd3JpdGVfZmlmbykoc3RydWN0IG11c2JfaHdfZXAgKmh3X2VwLCB1 MTYgbGVuLCBjb25zdCB1OCAqYnVmKTsNCiAJdTE2CSgqZ2V0X3RvZ2dsZSkoc3RydWN0IG11c2Jf cWggKnFoLCBpbnQgaXNfb3V0KTsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9tdXNiL211c2Jf aW8uaCBiL2RyaXZlcnMvdXNiL211c2IvbXVzYl9pby5oDQppbmRleCA4MTc5MzM0ZjQwNWIuLjcy MDA1OTZhMzg4ZiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvdXNiL211c2IvbXVzYl9pby5oDQorKysg Yi9kcml2ZXJzL3VzYi9tdXNiL211c2JfaW8uaA0KQEAgLTM3LDExICszNywxMyBAQCBzdHJ1Y3Qg bXVzYl9pbyB7DQogfTsNCiANCiAvKiBEbyBub3QgYWRkIG5ldyBlbnRyaWVzIGhlcmUsIGFkZCB0 aGVtIHRoZSBzdHJ1Y3QgbXVzYl9pbyBpbnN0ZWFkICovDQotZXh0ZXJuIHU4ICgqbXVzYl9yZWFk YikoY29uc3Qgdm9pZCBfX2lvbWVtICphZGRyLCB1bnNpZ25lZCBvZmZzZXQpOw0KK2V4dGVybiB1 OCAoKm11c2JfcmVhZGIpKHZvaWQgX19pb21lbSAqYWRkciwgdW5zaWduZWQgb2Zmc2V0KTsNCiBl eHRlcm4gdm9pZCAoKm11c2Jfd3JpdGViKSh2b2lkIF9faW9tZW0gKmFkZHIsIHVuc2lnbmVkIG9m ZnNldCwgdTggZGF0YSk7DQotZXh0ZXJuIHUxNiAoKm11c2JfcmVhZHcpKGNvbnN0IHZvaWQgX19p b21lbSAqYWRkciwgdW5zaWduZWQgb2Zmc2V0KTsNCitleHRlcm4gdTggKCptdXNiX2NsZWFyYiko dm9pZCBfX2lvbWVtICphZGRyLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KTsNCitleHRlcm4gdTE2ICgq bXVzYl9yZWFkdykodm9pZCBfX2lvbWVtICphZGRyLCB1bnNpZ25lZCBvZmZzZXQpOw0KIGV4dGVy biB2b2lkICgqbXVzYl93cml0ZXcpKHZvaWQgX19pb21lbSAqYWRkciwgdW5zaWduZWQgb2Zmc2V0 LCB1MTYgZGF0YSk7DQotZXh0ZXJuIHUzMiBtdXNiX3JlYWRsKGNvbnN0IHZvaWQgX19pb21lbSAq YWRkciwgdW5zaWduZWQgb2Zmc2V0KTsNCitleHRlcm4gdTE2ICgqbXVzYl9jbGVhcncpKHZvaWQg X19pb21lbSAqYWRkciwgdW5zaWduZWQgaW50IG9mZnNldCk7DQorZXh0ZXJuIHUzMiBtdXNiX3Jl YWRsKHZvaWQgX19pb21lbSAqYWRkciwgdW5zaWduZWQgb2Zmc2V0KTsNCiBleHRlcm4gdm9pZCBt dXNiX3dyaXRlbCh2b2lkIF9faW9tZW0gKmFkZHIsIHVuc2lnbmVkIG9mZnNldCwgdTMyIGRhdGEp Ow0KIA0KICNlbmRpZg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL211c2IvbXVzYmhzZG1hLmMg Yi9kcml2ZXJzL3VzYi9tdXNiL211c2Joc2RtYS5jDQppbmRleCBkNTQ5YzBiODMzNjYuLjk3NWM2 MWVlNGU2YSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvdXNiL211c2IvbXVzYmhzZG1hLmMNCisrKyBi L2RyaXZlcnMvdXNiL211c2IvbXVzYmhzZG1hLmMNCkBAIC0yODQsNyArMjg0LDcgQEAgaXJxcmV0 dXJuX3QgZG1hX2NvbnRyb2xsZXJfaXJxKGludCBpcnEsIHZvaWQgKnByaXZhdGVfZGF0YSkNCiAN CiAJc3Bpbl9sb2NrX2lycXNhdmUoJm11c2ItPmxvY2ssIGZsYWdzKTsNCiANCi0JaW50X2hzZG1h ID0gbXVzYl9yZWFkYihtYmFzZSwgTVVTQl9IU0RNQV9JTlRSKTsNCisJaW50X2hzZG1hID0gbXVz Yl9jbGVhcmIobWJhc2UsIE1VU0JfSFNETUFfSU5UUik7DQogDQogCWlmICghaW50X2hzZG1hKSB7 DQogCQltdXNiX2RiZyhtdXNiLCAic3B1cmlvdXMgRE1BIGlycSIpOw0KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvdXNiL211c2Ivc3VueGkuYyBiL2RyaXZlcnMvdXNiL211c2Ivc3VueGkuYw0KaW5kZXgg ODMyYTQxZjllZTdkLi4yYzFiYmFhODMyZGQgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3VzYi9tdXNi L3N1bnhpLmMNCisrKyBiL2RyaXZlcnMvdXNiL211c2Ivc3VueGkuYw0KQEAgLTQwNyw3ICs0MDcs NyBAQCBzdGF0aWMgdTMyIHN1bnhpX211c2JfYnVzY3RsX29mZnNldCh1OCBlcG51bSwgdTE2IG9m ZnNldCkNCiAJcmV0dXJuIFNVTlhJX01VU0JfVFhGVU5DQUREUiArIG9mZnNldDsNCiB9DQogDQot c3RhdGljIHU4IHN1bnhpX211c2JfcmVhZGIoY29uc3Qgdm9pZCBfX2lvbWVtICphZGRyLCB1bnNp Z25lZCBvZmZzZXQpDQorc3RhdGljIHU4IHN1bnhpX211c2JfcmVhZGIodm9pZCBfX2lvbWVtICph ZGRyLCB1bnNpZ25lZCBvZmZzZXQpDQogew0KIAlzdHJ1Y3Qgc3VueGlfZ2x1ZSAqZ2x1ZTsNCiAN CkBAIC01MjAsNyArNTIwLDcgQEAgc3RhdGljIHZvaWQgc3VueGlfbXVzYl93cml0ZWIodm9pZCBf X2lvbWVtICphZGRyLCB1bnNpZ25lZCBvZmZzZXQsIHU4IGRhdGEpDQogCQkoaW50KShhZGRyIC0g c3VueGlfbXVzYi0+bXJlZ3MpKTsNCiB9DQogDQotc3RhdGljIHUxNiBzdW54aV9tdXNiX3JlYWR3 KGNvbnN0IHZvaWQgX19pb21lbSAqYWRkciwgdW5zaWduZWQgb2Zmc2V0KQ0KK3N0YXRpYyB1MTYg c3VueGlfbXVzYl9yZWFkdyh2b2lkIF9faW9tZW0gKmFkZHIsIHVuc2lnbmVkIG9mZnNldCkNCiB7 DQogCWlmIChhZGRyID09IHN1bnhpX211c2ItPm1yZWdzKSB7DQogCQkvKiBnZW5lcmljIGNvbnRy b2wgb3IgZmlmbyBjb250cm9sIHJlZyBhY2Nlc3MgKi8NCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Vz Yi9tdXNiL3R1c2I2MDEwLmMgYi9kcml2ZXJzL3VzYi9tdXNiL3R1c2I2MDEwLmMNCmluZGV4IDM5 NDUzMjg3YjVjMy4uY2ZiOTRmOTQ2N2EzIDEwMDY0NA0KLS0tIGEvZHJpdmVycy91c2IvbXVzYi90 dXNiNjAxMC5jDQorKysgYi9kcml2ZXJzL3VzYi9tdXNiL3R1c2I2MDEwLmMNCkBAIC0xNDIsNyAr MTQyLDcgQEAgc3RhdGljIHZvaWQgdHVzYl9lcF9zZWxlY3Qodm9pZCBfX2lvbWVtICptYmFzZSwg dTggZXBudW0pDQogLyoNCiAgKiBUVVNCNjAxMCBkb2Vzbid0IGFsbG93IDgtYml0IGFjY2Vzczsg MTYtYml0IGFjY2VzcyBpcyB0aGUgbWluaW11bS4NCiAgKi8NCi1zdGF0aWMgdTggdHVzYl9yZWFk Yihjb25zdCB2b2lkIF9faW9tZW0gKmFkZHIsIHVuc2lnbmVkIG9mZnNldCkNCitzdGF0aWMgdTgg dHVzYl9yZWFkYih2b2lkIF9faW9tZW0gKmFkZHIsIHVuc2lnbmVkIG9mZnNldCkNCiB7DQogCXUx NiB0bXA7DQogCXU4IHZhbDsNCi0tIA0KMi4yNC4wDQo= 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,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 28C8DC43603 for ; Wed, 11 Dec 2019 02:06:27 +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 F0771206EC for ; Wed, 11 Dec 2019 02:06:26 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="eAJFpfJP"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="fakCLrg/" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org F0771206EC 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=T5eAPBpVfz6wrG588glHZO6D67hl/Y6vl/VT3jRebbg=; b=eAJFpfJPoqIxdR npM0WebgyUOxbAFscPMlN/8laIS7v75fv9qvtVbTIpWEAqmEaZ9rKS32ELmqWZ5ZKcTo9JLFYQ5gs e5EOokCCbWu5hozlWcTpDlxLW59/z7vwOZW1k1+q5oDjpv2ShUyNIKw2W2QLKsMRJhzDYEd/3/cBP h3bpNu4twqLJmYX3LlMW3daGf4dCYljBYZNcjMW9wkypogXKk6A7HOfV6BUiKfdlJy89uTrckpmIV Ygr3uxYDLgppeAzDV/swhEAKdL4OfXIkcNlb45hteo8ihKtSVNzVf5ccfAwZZiIUng5iKhgOVG5rB CqNIs4sfJ+PJVousFvHg==; 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 1ierOK-0003Yd-Un; Wed, 11 Dec 2019 02:06:16 +0000 Received: from mailgw02.mediatek.com ([216.200.240.185]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1ierN8-000197-5G; Wed, 11 Dec 2019 02:05:04 +0000 X-UUID: b86acd92d5b64e3ea8613310bb10939c-20191210 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=2LVIlkRutdZ1YsoqtSNAMNODO/3+N41XB7AwwCF2ckQ=; b=fakCLrg/M0KrYJzZMIdo3YR7ggFWG8OznTxqyGgwxc8CKOhdp5MepHpoKgqaZwoGE+1jGLX+FdYC9y80PiIhfbwDPdXVZ6wm4z3K8mJKaBtZis2iVbaDFxQbtAuh6+BdTZWUYYAaAGovtGrJW4fJnIeB/IsKUQhjto5sjrmngBk=; X-UUID: b86acd92d5b64e3ea8613310bb10939c-20191210 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw02.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLS) with ESMTP id 293033198; Tue, 10 Dec 2019 18:04:58 -0800 Received: from MTKMBS31DR.mediatek.inc (172.27.6.102) by MTKMBS62N1.mediatek.inc (172.29.193.41) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Tue, 10 Dec 2019 17:56:09 -0800 Received: from mtkcas09.mediatek.inc (172.21.101.178) by MTKMBS31DR.mediatek.inc (172.27.6.102) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Wed, 11 Dec 2019 09:54:54 +0800 Received: from localhost.localdomain (10.17.3.153) by mtkcas09.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Wed, 11 Dec 2019 09:54:53 +0800 From: To: Bin Liu , Rob Herring Subject: [PATCH v9 5/6] usb: musb: Add musb_clearb/w() interface Date: Wed, 11 Dec 2019 09:54:45 +0800 Message-ID: <20191211015446.11477-6-min.guo@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20191211015446.11477-1-min.guo@mediatek.com> References: <20191211015446.11477-1-min.guo@mediatek.com> MIME-Version: 1.0 X-TM-SNTS-SMTP: D11EFE24E0F8A7AEA1B750D1BF120767F9E77C1B9862F2508723C09706023F2C2000:8 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20191210_180502_243740_770D64FA X-CRM114-Status: GOOD ( 12.54 ) 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: Mark Rutland , devicetree@vger.kernel.org, hdegoede@redhat.com, tony@atomide.com, Greg Kroah-Hartman , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Matthias Brugger , Alan Stern , Min Guo , chunfeng.yun@mediatek.com, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org 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 From: Min Guo Delete the const attribute of addr parameter in readb/w/l hooks, these changes are for implementing clearing W1C registers. Replace musb_readb/w with musb_clearb/w to clear the interrupt status. Signed-off-by: Min Guo --- changes in v9: 1. no changes changes in v8: 1. no changes changes in v7: 1. no changes changes in v6: 1. no changes changes in v5: 1. Replace musb_readb() with musb_clearb() to clear dma pending interrupts new patch based on v4: --- drivers/usb/musb/musb_core.c | 32 +++++++++++++++++++++++--------- drivers/usb/musb/musb_core.h | 8 ++++++-- drivers/usb/musb/musb_io.h | 8 +++++--- drivers/usb/musb/musbhsdma.c | 2 +- drivers/usb/musb/sunxi.c | 4 ++-- drivers/usb/musb/tusb6010.c | 2 +- 6 files changed, 38 insertions(+), 18 deletions(-) diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c index 32c00652e1a2..8e3c14e3afab 100644 --- a/drivers/usb/musb/musb_core.c +++ b/drivers/usb/musb/musb_core.c @@ -246,7 +246,7 @@ static u32 musb_default_busctl_offset(u8 epnum, u16 offset) return 0x80 + (0x08 * epnum) + offset; } -static u8 musb_default_readb(const void __iomem *addr, unsigned offset) +static u8 musb_default_readb(void __iomem *addr, unsigned offset) { u8 data = __raw_readb(addr + offset); @@ -260,7 +260,7 @@ static void musb_default_writeb(void __iomem *addr, unsigned offset, u8 data) __raw_writeb(data, addr + offset); } -static u16 musb_default_readw(const void __iomem *addr, unsigned offset) +static u16 musb_default_readw(void __iomem *addr, unsigned offset) { u16 data = __raw_readw(addr + offset); @@ -396,19 +396,25 @@ static void musb_default_read_fifo(struct musb_hw_ep *hw_ep, u16 len, u8 *dst) /* * Old style IO functions */ -u8 (*musb_readb)(const void __iomem *addr, unsigned offset); +u8 (*musb_readb)(void __iomem *addr, unsigned offset); EXPORT_SYMBOL_GPL(musb_readb); void (*musb_writeb)(void __iomem *addr, unsigned offset, u8 data); EXPORT_SYMBOL_GPL(musb_writeb); -u16 (*musb_readw)(const void __iomem *addr, unsigned offset); +u8 (*musb_clearb)(void __iomem *addr, unsigned int offset); +EXPORT_SYMBOL_GPL(musb_clearb); + +u16 (*musb_readw)(void __iomem *addr, unsigned offset); EXPORT_SYMBOL_GPL(musb_readw); void (*musb_writew)(void __iomem *addr, unsigned offset, u16 data); EXPORT_SYMBOL_GPL(musb_writew); -u32 musb_readl(const void __iomem *addr, unsigned offset) +u16 (*musb_clearw)(void __iomem *addr, unsigned int offset); +EXPORT_SYMBOL_GPL(musb_clearw); + +u32 musb_readl(void __iomem *addr, unsigned offset) { u32 data = __raw_readl(addr + offset); @@ -1047,7 +1053,6 @@ static irqreturn_t musb_stage0_irq(struct musb *musb, u8 int_usb, static void musb_disable_interrupts(struct musb *musb) { void __iomem *mbase = musb->mregs; - u16 temp; /* disable interrupts */ musb_writeb(mbase, MUSB_INTRUSBE, 0); @@ -1057,9 +1062,9 @@ static void musb_disable_interrupts(struct musb *musb) musb_writew(mbase, MUSB_INTRRXE, 0); /* flush pending interrupts */ - temp = musb_readb(mbase, MUSB_INTRUSB); - temp = musb_readw(mbase, MUSB_INTRTX); - temp = musb_readw(mbase, MUSB_INTRRX); + musb_clearb(mbase, MUSB_INTRUSB); + musb_clearw(mbase, MUSB_INTRTX); + musb_clearw(mbase, MUSB_INTRRX); } static void musb_enable_interrupts(struct musb *musb) @@ -2278,10 +2283,19 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl) musb_readb = musb->ops->readb; if (musb->ops->writeb) musb_writeb = musb->ops->writeb; + if (musb->ops->clearb) + musb_clearb = musb->ops->clearb; + else + musb_clearb = musb_readb; + if (musb->ops->readw) musb_readw = musb->ops->readw; if (musb->ops->writew) musb_writew = musb->ops->writew; + if (musb->ops->clearw) + musb_clearw = musb->ops->clearw; + else + musb_clearw = musb_readw; #ifndef CONFIG_MUSB_PIO_ONLY if (!musb->ops->dma_init || !musb->ops->dma_exit) { diff --git a/drivers/usb/musb/musb_core.h b/drivers/usb/musb/musb_core.h index 9f5a69c2d73b..0d9a35fe82d5 100644 --- a/drivers/usb/musb/musb_core.h +++ b/drivers/usb/musb/musb_core.h @@ -120,8 +120,10 @@ struct musb_io; * @fifo_offset: returns the fifo offset * @readb: read 8 bits * @writeb: write 8 bits + * @clearb: could be clear-on-readb or W1C * @readw: read 16 bits * @writew: write 16 bits + * @clearw: could be clear-on-readw or W1C * @read_fifo: reads the fifo * @write_fifo: writes to fifo * @get_toggle: platform specific get toggle function @@ -164,10 +166,12 @@ struct musb_platform_ops { u16 fifo_mode; u32 (*fifo_offset)(u8 epnum); u32 (*busctl_offset)(u8 epnum, u16 offset); - u8 (*readb)(const void __iomem *addr, unsigned offset); + u8 (*readb)(void __iomem *addr, unsigned offset); void (*writeb)(void __iomem *addr, unsigned offset, u8 data); - u16 (*readw)(const void __iomem *addr, unsigned offset); + u8 (*clearb)(void __iomem *addr, unsigned int offset); + u16 (*readw)(void __iomem *addr, unsigned offset); void (*writew)(void __iomem *addr, unsigned offset, u16 data); + u16 (*clearw)(void __iomem *addr, unsigned int offset); void (*read_fifo)(struct musb_hw_ep *hw_ep, u16 len, u8 *buf); void (*write_fifo)(struct musb_hw_ep *hw_ep, u16 len, const u8 *buf); u16 (*get_toggle)(struct musb_qh *qh, int is_out); diff --git a/drivers/usb/musb/musb_io.h b/drivers/usb/musb/musb_io.h index 8179334f405b..7200596a388f 100644 --- a/drivers/usb/musb/musb_io.h +++ b/drivers/usb/musb/musb_io.h @@ -37,11 +37,13 @@ struct musb_io { }; /* Do not add new entries here, add them the struct musb_io instead */ -extern u8 (*musb_readb)(const void __iomem *addr, unsigned offset); +extern u8 (*musb_readb)(void __iomem *addr, unsigned offset); extern void (*musb_writeb)(void __iomem *addr, unsigned offset, u8 data); -extern u16 (*musb_readw)(const void __iomem *addr, unsigned offset); +extern u8 (*musb_clearb)(void __iomem *addr, unsigned int offset); +extern u16 (*musb_readw)(void __iomem *addr, unsigned offset); extern void (*musb_writew)(void __iomem *addr, unsigned offset, u16 data); -extern u32 musb_readl(const void __iomem *addr, unsigned offset); +extern u16 (*musb_clearw)(void __iomem *addr, unsigned int offset); +extern u32 musb_readl(void __iomem *addr, unsigned offset); extern void musb_writel(void __iomem *addr, unsigned offset, u32 data); #endif diff --git a/drivers/usb/musb/musbhsdma.c b/drivers/usb/musb/musbhsdma.c index d549c0b83366..975c61ee4e6a 100644 --- a/drivers/usb/musb/musbhsdma.c +++ b/drivers/usb/musb/musbhsdma.c @@ -284,7 +284,7 @@ irqreturn_t dma_controller_irq(int irq, void *private_data) spin_lock_irqsave(&musb->lock, flags); - int_hsdma = musb_readb(mbase, MUSB_HSDMA_INTR); + int_hsdma = musb_clearb(mbase, MUSB_HSDMA_INTR); if (!int_hsdma) { musb_dbg(musb, "spurious DMA irq"); diff --git a/drivers/usb/musb/sunxi.c b/drivers/usb/musb/sunxi.c index 832a41f9ee7d..2c1bbaa832dd 100644 --- a/drivers/usb/musb/sunxi.c +++ b/drivers/usb/musb/sunxi.c @@ -407,7 +407,7 @@ static u32 sunxi_musb_busctl_offset(u8 epnum, u16 offset) return SUNXI_MUSB_TXFUNCADDR + offset; } -static u8 sunxi_musb_readb(const void __iomem *addr, unsigned offset) +static u8 sunxi_musb_readb(void __iomem *addr, unsigned offset) { struct sunxi_glue *glue; @@ -520,7 +520,7 @@ static void sunxi_musb_writeb(void __iomem *addr, unsigned offset, u8 data) (int)(addr - sunxi_musb->mregs)); } -static u16 sunxi_musb_readw(const void __iomem *addr, unsigned offset) +static u16 sunxi_musb_readw(void __iomem *addr, unsigned offset) { if (addr == sunxi_musb->mregs) { /* generic control or fifo control reg access */ diff --git a/drivers/usb/musb/tusb6010.c b/drivers/usb/musb/tusb6010.c index 39453287b5c3..cfb94f9467a3 100644 --- a/drivers/usb/musb/tusb6010.c +++ b/drivers/usb/musb/tusb6010.c @@ -142,7 +142,7 @@ static void tusb_ep_select(void __iomem *mbase, u8 epnum) /* * TUSB6010 doesn't allow 8-bit access; 16-bit access is the minimum. */ -static u8 tusb_readb(const void __iomem *addr, unsigned offset) +static u8 tusb_readb(void __iomem *addr, unsigned offset) { u16 tmp; u8 val; -- 2.24.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,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 B7E31C43603 for ; Wed, 11 Dec 2019 02:05:35 +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 4335D205ED for ; Wed, 11 Dec 2019 02:05:35 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="eOwBCJS7"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="fakCLrg/" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4335D205ED 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=3Czkuaw/oMCQf3bD45fmkdF0ztd5S4sZKt5HMwhcyAc=; b=eOwBCJS7UYX2AJ 8/sBy5Tb48rN5w/dlw6+5Aiv7JEmPY5qgI6ts4JMubG4gabUMfKxlD4G0+Df01jQE/LRRNMW8KbfG eAx5/RRUJZ6QDHbQKdnTbtuaKaIW/OkwMBCOirGGvwKr8g7dRi3d+KLa/QwdjMngpvv/bxAercuR7 BUJyQA4mY/foQ8UnvFRxoRU+UTa89IRioGVYAJqeHnIu089sBHy+8lJ719pmKwKEPlbeN1rE7gVre off3LkFONYHpR4NLF0UR8trhpWc1dVCj2H3F/Po2weLbu7jijQv660taMfsEGs5yr+XsmeaXMWwYc gOGi/nF4BahaMnbRAeDQ==; 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 1ierNc-0002ov-S2; Wed, 11 Dec 2019 02:05:32 +0000 Received: from mailgw02.mediatek.com ([216.200.240.185]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1ierN8-000197-5G; Wed, 11 Dec 2019 02:05:04 +0000 X-UUID: b86acd92d5b64e3ea8613310bb10939c-20191210 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=2LVIlkRutdZ1YsoqtSNAMNODO/3+N41XB7AwwCF2ckQ=; b=fakCLrg/M0KrYJzZMIdo3YR7ggFWG8OznTxqyGgwxc8CKOhdp5MepHpoKgqaZwoGE+1jGLX+FdYC9y80PiIhfbwDPdXVZ6wm4z3K8mJKaBtZis2iVbaDFxQbtAuh6+BdTZWUYYAaAGovtGrJW4fJnIeB/IsKUQhjto5sjrmngBk=; X-UUID: b86acd92d5b64e3ea8613310bb10939c-20191210 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw02.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLS) with ESMTP id 293033198; Tue, 10 Dec 2019 18:04:58 -0800 Received: from MTKMBS31DR.mediatek.inc (172.27.6.102) by MTKMBS62N1.mediatek.inc (172.29.193.41) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Tue, 10 Dec 2019 17:56:09 -0800 Received: from mtkcas09.mediatek.inc (172.21.101.178) by MTKMBS31DR.mediatek.inc (172.27.6.102) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Wed, 11 Dec 2019 09:54:54 +0800 Received: from localhost.localdomain (10.17.3.153) by mtkcas09.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Wed, 11 Dec 2019 09:54:53 +0800 From: To: Bin Liu , Rob Herring Subject: [PATCH v9 5/6] usb: musb: Add musb_clearb/w() interface Date: Wed, 11 Dec 2019 09:54:45 +0800 Message-ID: <20191211015446.11477-6-min.guo@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20191211015446.11477-1-min.guo@mediatek.com> References: <20191211015446.11477-1-min.guo@mediatek.com> MIME-Version: 1.0 X-TM-SNTS-SMTP: D11EFE24E0F8A7AEA1B750D1BF120767F9E77C1B9862F2508723C09706023F2C2000:8 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20191210_180502_243740_770D64FA X-CRM114-Status: GOOD ( 12.54 ) 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: Mark Rutland , devicetree@vger.kernel.org, hdegoede@redhat.com, tony@atomide.com, Greg Kroah-Hartman , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Matthias Brugger , Alan Stern , Min Guo , chunfeng.yun@mediatek.com, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org 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 From: Min Guo Delete the const attribute of addr parameter in readb/w/l hooks, these changes are for implementing clearing W1C registers. Replace musb_readb/w with musb_clearb/w to clear the interrupt status. Signed-off-by: Min Guo --- changes in v9: 1. no changes changes in v8: 1. no changes changes in v7: 1. no changes changes in v6: 1. no changes changes in v5: 1. Replace musb_readb() with musb_clearb() to clear dma pending interrupts new patch based on v4: --- drivers/usb/musb/musb_core.c | 32 +++++++++++++++++++++++--------- drivers/usb/musb/musb_core.h | 8 ++++++-- drivers/usb/musb/musb_io.h | 8 +++++--- drivers/usb/musb/musbhsdma.c | 2 +- drivers/usb/musb/sunxi.c | 4 ++-- drivers/usb/musb/tusb6010.c | 2 +- 6 files changed, 38 insertions(+), 18 deletions(-) diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c index 32c00652e1a2..8e3c14e3afab 100644 --- a/drivers/usb/musb/musb_core.c +++ b/drivers/usb/musb/musb_core.c @@ -246,7 +246,7 @@ static u32 musb_default_busctl_offset(u8 epnum, u16 offset) return 0x80 + (0x08 * epnum) + offset; } -static u8 musb_default_readb(const void __iomem *addr, unsigned offset) +static u8 musb_default_readb(void __iomem *addr, unsigned offset) { u8 data = __raw_readb(addr + offset); @@ -260,7 +260,7 @@ static void musb_default_writeb(void __iomem *addr, unsigned offset, u8 data) __raw_writeb(data, addr + offset); } -static u16 musb_default_readw(const void __iomem *addr, unsigned offset) +static u16 musb_default_readw(void __iomem *addr, unsigned offset) { u16 data = __raw_readw(addr + offset); @@ -396,19 +396,25 @@ static void musb_default_read_fifo(struct musb_hw_ep *hw_ep, u16 len, u8 *dst) /* * Old style IO functions */ -u8 (*musb_readb)(const void __iomem *addr, unsigned offset); +u8 (*musb_readb)(void __iomem *addr, unsigned offset); EXPORT_SYMBOL_GPL(musb_readb); void (*musb_writeb)(void __iomem *addr, unsigned offset, u8 data); EXPORT_SYMBOL_GPL(musb_writeb); -u16 (*musb_readw)(const void __iomem *addr, unsigned offset); +u8 (*musb_clearb)(void __iomem *addr, unsigned int offset); +EXPORT_SYMBOL_GPL(musb_clearb); + +u16 (*musb_readw)(void __iomem *addr, unsigned offset); EXPORT_SYMBOL_GPL(musb_readw); void (*musb_writew)(void __iomem *addr, unsigned offset, u16 data); EXPORT_SYMBOL_GPL(musb_writew); -u32 musb_readl(const void __iomem *addr, unsigned offset) +u16 (*musb_clearw)(void __iomem *addr, unsigned int offset); +EXPORT_SYMBOL_GPL(musb_clearw); + +u32 musb_readl(void __iomem *addr, unsigned offset) { u32 data = __raw_readl(addr + offset); @@ -1047,7 +1053,6 @@ static irqreturn_t musb_stage0_irq(struct musb *musb, u8 int_usb, static void musb_disable_interrupts(struct musb *musb) { void __iomem *mbase = musb->mregs; - u16 temp; /* disable interrupts */ musb_writeb(mbase, MUSB_INTRUSBE, 0); @@ -1057,9 +1062,9 @@ static void musb_disable_interrupts(struct musb *musb) musb_writew(mbase, MUSB_INTRRXE, 0); /* flush pending interrupts */ - temp = musb_readb(mbase, MUSB_INTRUSB); - temp = musb_readw(mbase, MUSB_INTRTX); - temp = musb_readw(mbase, MUSB_INTRRX); + musb_clearb(mbase, MUSB_INTRUSB); + musb_clearw(mbase, MUSB_INTRTX); + musb_clearw(mbase, MUSB_INTRRX); } static void musb_enable_interrupts(struct musb *musb) @@ -2278,10 +2283,19 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl) musb_readb = musb->ops->readb; if (musb->ops->writeb) musb_writeb = musb->ops->writeb; + if (musb->ops->clearb) + musb_clearb = musb->ops->clearb; + else + musb_clearb = musb_readb; + if (musb->ops->readw) musb_readw = musb->ops->readw; if (musb->ops->writew) musb_writew = musb->ops->writew; + if (musb->ops->clearw) + musb_clearw = musb->ops->clearw; + else + musb_clearw = musb_readw; #ifndef CONFIG_MUSB_PIO_ONLY if (!musb->ops->dma_init || !musb->ops->dma_exit) { diff --git a/drivers/usb/musb/musb_core.h b/drivers/usb/musb/musb_core.h index 9f5a69c2d73b..0d9a35fe82d5 100644 --- a/drivers/usb/musb/musb_core.h +++ b/drivers/usb/musb/musb_core.h @@ -120,8 +120,10 @@ struct musb_io; * @fifo_offset: returns the fifo offset * @readb: read 8 bits * @writeb: write 8 bits + * @clearb: could be clear-on-readb or W1C * @readw: read 16 bits * @writew: write 16 bits + * @clearw: could be clear-on-readw or W1C * @read_fifo: reads the fifo * @write_fifo: writes to fifo * @get_toggle: platform specific get toggle function @@ -164,10 +166,12 @@ struct musb_platform_ops { u16 fifo_mode; u32 (*fifo_offset)(u8 epnum); u32 (*busctl_offset)(u8 epnum, u16 offset); - u8 (*readb)(const void __iomem *addr, unsigned offset); + u8 (*readb)(void __iomem *addr, unsigned offset); void (*writeb)(void __iomem *addr, unsigned offset, u8 data); - u16 (*readw)(const void __iomem *addr, unsigned offset); + u8 (*clearb)(void __iomem *addr, unsigned int offset); + u16 (*readw)(void __iomem *addr, unsigned offset); void (*writew)(void __iomem *addr, unsigned offset, u16 data); + u16 (*clearw)(void __iomem *addr, unsigned int offset); void (*read_fifo)(struct musb_hw_ep *hw_ep, u16 len, u8 *buf); void (*write_fifo)(struct musb_hw_ep *hw_ep, u16 len, const u8 *buf); u16 (*get_toggle)(struct musb_qh *qh, int is_out); diff --git a/drivers/usb/musb/musb_io.h b/drivers/usb/musb/musb_io.h index 8179334f405b..7200596a388f 100644 --- a/drivers/usb/musb/musb_io.h +++ b/drivers/usb/musb/musb_io.h @@ -37,11 +37,13 @@ struct musb_io { }; /* Do not add new entries here, add them the struct musb_io instead */ -extern u8 (*musb_readb)(const void __iomem *addr, unsigned offset); +extern u8 (*musb_readb)(void __iomem *addr, unsigned offset); extern void (*musb_writeb)(void __iomem *addr, unsigned offset, u8 data); -extern u16 (*musb_readw)(const void __iomem *addr, unsigned offset); +extern u8 (*musb_clearb)(void __iomem *addr, unsigned int offset); +extern u16 (*musb_readw)(void __iomem *addr, unsigned offset); extern void (*musb_writew)(void __iomem *addr, unsigned offset, u16 data); -extern u32 musb_readl(const void __iomem *addr, unsigned offset); +extern u16 (*musb_clearw)(void __iomem *addr, unsigned int offset); +extern u32 musb_readl(void __iomem *addr, unsigned offset); extern void musb_writel(void __iomem *addr, unsigned offset, u32 data); #endif diff --git a/drivers/usb/musb/musbhsdma.c b/drivers/usb/musb/musbhsdma.c index d549c0b83366..975c61ee4e6a 100644 --- a/drivers/usb/musb/musbhsdma.c +++ b/drivers/usb/musb/musbhsdma.c @@ -284,7 +284,7 @@ irqreturn_t dma_controller_irq(int irq, void *private_data) spin_lock_irqsave(&musb->lock, flags); - int_hsdma = musb_readb(mbase, MUSB_HSDMA_INTR); + int_hsdma = musb_clearb(mbase, MUSB_HSDMA_INTR); if (!int_hsdma) { musb_dbg(musb, "spurious DMA irq"); diff --git a/drivers/usb/musb/sunxi.c b/drivers/usb/musb/sunxi.c index 832a41f9ee7d..2c1bbaa832dd 100644 --- a/drivers/usb/musb/sunxi.c +++ b/drivers/usb/musb/sunxi.c @@ -407,7 +407,7 @@ static u32 sunxi_musb_busctl_offset(u8 epnum, u16 offset) return SUNXI_MUSB_TXFUNCADDR + offset; } -static u8 sunxi_musb_readb(const void __iomem *addr, unsigned offset) +static u8 sunxi_musb_readb(void __iomem *addr, unsigned offset) { struct sunxi_glue *glue; @@ -520,7 +520,7 @@ static void sunxi_musb_writeb(void __iomem *addr, unsigned offset, u8 data) (int)(addr - sunxi_musb->mregs)); } -static u16 sunxi_musb_readw(const void __iomem *addr, unsigned offset) +static u16 sunxi_musb_readw(void __iomem *addr, unsigned offset) { if (addr == sunxi_musb->mregs) { /* generic control or fifo control reg access */ diff --git a/drivers/usb/musb/tusb6010.c b/drivers/usb/musb/tusb6010.c index 39453287b5c3..cfb94f9467a3 100644 --- a/drivers/usb/musb/tusb6010.c +++ b/drivers/usb/musb/tusb6010.c @@ -142,7 +142,7 @@ static void tusb_ep_select(void __iomem *mbase, u8 epnum) /* * TUSB6010 doesn't allow 8-bit access; 16-bit access is the minimum. */ -static u8 tusb_readb(const void __iomem *addr, unsigned offset) +static u8 tusb_readb(void __iomem *addr, unsigned offset) { u16 tmp; u8 val; -- 2.24.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel