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 57C9BC4332E for ; Fri, 20 Mar 2020 07:33:16 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 228092051A for ; Fri, 20 Mar 2020 07:33:16 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="npDHTsLp" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727239AbgCTHdO (ORCPT ); Fri, 20 Mar 2020 03:33:14 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:23390 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726614AbgCTHcl (ORCPT ); Fri, 20 Mar 2020 03:32:41 -0400 X-UUID: ec5da989951e4654b6ce6b5cc8626d7d-20200320 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=9X5uWL1YgmrDZcTKHn0A/YVVUbEE9hPvqMSvyGyBAwc=; b=npDHTsLp09QKtFP8h7dJT5qeUz2rCZrCCV39Ft2OBQTp48hyXaCnSdwVl1JnRF1yyl47C0M4TFjK5B8qHXWIYdkIktNK7ebgEKxwOVnCt/7QnoWlHx+elgDne5A7mUojOmSYEdsmfIyZCECK63RbylVk/F7qazE7KSGdMomOMmM=; X-UUID: ec5da989951e4654b6ce6b5cc8626d7d-20200320 Received: from mtkcas06.mediatek.inc [(172.21.101.30)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 1222437964; Fri, 20 Mar 2020 15:32:26 +0800 Received: from MTKCAS06.mediatek.inc (172.21.101.30) by mtkmbs07n2.mediatek.inc (172.21.101.141) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Fri, 20 Mar 2020 15:31:26 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by MTKCAS06.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Fri, 20 Mar 2020 15:29:19 +0800 From: Weiyi Lu To: Matthias Brugger , Nicolas Boichat , Rob Herring , Sascha Hauer CC: James Liao , Fan Chen , , , , , Weiyi Lu Subject: [PATCH v13 06/11] soc: mediatek: Add subsys clock control for bus protection Date: Fri, 20 Mar 2020 15:32:15 +0800 Message-ID: <1584689540-5227-7-git-send-email-weiyi.lu@mediatek.com> X-Mailer: git-send-email 1.8.1.1.dirty In-Reply-To: <1584689540-5227-1-git-send-email-weiyi.lu@mediatek.com> References: <1584689540-5227-1-git-send-email-weiyi.lu@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 Rm9yIHRoZSBidXMgcHJvdGVjdGlvbiBvcGVyYXRpb25zLCBzb21lIHN1YnN5cyBjbG9ja3MgbmVl ZCB0byBiZSBlbmFibGVkDQpiZWZvcmUgcmVsZWFzaW5nIHRoZSBwcm90ZWN0aW9uLCBhbmQgdmlz ZSB2ZXJzYS4NCkJ1dCB0aG9zZSBzdWJzeXMgY2xvY2tzIGNvdWxkIG9ubHkgYmUgY29udHJvbGxl ZCBvbmNlIGl0cyBjb3JyZXNwb25kaW5nDQpwb3dlciBkb21haW4gaXMgdHVybmVkIG9uIGZpcnN0 Lg0KSW4gdGhpcyBwYXRjaCwgd2UgYWRkIHRoZSBzdWJzeXMgY2xvY2sgY29udHJvbCBpbnRvIGl0 cyByZWxhdmVudCBzdGVwcy4NCg0KU2lnbmVkLW9mZi1ieTogV2VpeWkgTHUgPHdlaXlpLmx1QG1l ZGlhdGVrLmNvbT4NCi0tLQ0KIGRyaXZlcnMvc29jL21lZGlhdGVrL210ay1zY3BzeXMuYyB8IDcx ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQ0KIDEgZmlsZSBjaGFuZ2Vk LCA2OSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQ0KDQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9zb2MvbWVkaWF0ZWsvbXRrLXNjcHN5cy5jIGIvZHJpdmVycy9zb2MvbWVkaWF0ZWsvbXRrLXNj cHN5cy5jDQppbmRleCBhNGZiMGIyMy4uMmE5NDc4ZiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvc29j L21lZGlhdGVrL210ay1zY3BzeXMuYw0KKysrIGIvZHJpdmVycy9zb2MvbWVkaWF0ZWsvbXRrLXNj cHN5cy5jDQpAQCAtODAsNiArODAsNyBAQA0KICNkZWZpbmUgUFdSX1NUQVRVU19XQgkJCUJJVCgy NykJLyogTVQ3NjIyICovDQogDQogI2RlZmluZSBNQVhfQ0xLUwkzDQorI2RlZmluZSBNQVhfU1VC U1lTX0NMS1MgMTANCiANCiAvKioNCiAgKiBzdHJ1Y3Qgc2NwX2RvbWFpbl9kYXRhIC0gc2NwIGRv bWFpbiBkYXRhIGZvciBwb3dlciBvbi9vZmYgZmxvdw0KQEAgLTg5LDYgKzkwLDggQEANCiAgKiBA c3JhbV9wZG5fYml0czogVGhlIG1hc2sgZm9yIHNyYW0gcG93ZXIgY29udHJvbCBiaXRzLg0KICAq IEBzcmFtX3Bkbl9hY2tfYml0czogVGhlIG1hc2sgZm9yIHNyYW0gcG93ZXIgY29udHJvbCBhY2tl ZCBiaXRzLg0KICAqIEBiYXNpY19jbGtfbmFtZTogVGhlIGJhc2ljIGNsb2NrcyByZXF1aXJlZCBi eSB0aGlzIHBvd2VyIGRvbWFpbi4NCisgKiBAc3Vic3lzX2Nsa19wcmVmaXg6IFRoZSBwcmVmaXgg bmFtZSBvZiB0aGUgY2xvY2tzIG5lZWQgdG8gYmUgZW5hYmxlZA0KKyAqICAgICAgICAgICAgICAg ICAgICAgYmVmb3JlIHJlbGVhc2luZyBidXMgcHJvdGVjdGlvbi4NCiAgKiBAY2FwczogVGhlIGZs YWcgZm9yIGFjdGl2ZSB3YWtlLXVwIGFjdGlvbi4NCiAgKiBAYnBfdGFibGU6IFRoZSBtYXNrIHRh YmxlIGZvciBtdWx0aXBsZSBzdGVwIGJ1cyBwcm90ZWN0aW9uLg0KICAqLw0KQEAgLTk5LDYgKzEw Miw3IEBAIHN0cnVjdCBzY3BfZG9tYWluX2RhdGEgew0KIAl1MzIgc3JhbV9wZG5fYml0czsNCiAJ dTMyIHNyYW1fcGRuX2Fja19iaXRzOw0KIAljb25zdCBjaGFyICpiYXNpY19jbGtfbmFtZVtNQVhf Q0xLU107DQorCWNvbnN0IGNoYXIgKnN1YnN5c19jbGtfcHJlZml4Ow0KIAl1OCBjYXBzOw0KIAlz dHJ1Y3QgYnVzX3Byb3QgYnBfdGFibGVbTUFYX1NURVBTXTsNCiB9Ow0KQEAgLTEwOSw2ICsxMTMs NyBAQCBzdHJ1Y3Qgc2NwX2RvbWFpbiB7DQogCXN0cnVjdCBnZW5lcmljX3BtX2RvbWFpbiBnZW5w ZDsNCiAJc3RydWN0IHNjcCAqc2NwOw0KIAlzdHJ1Y3QgY2xrICpjbGtbTUFYX0NMS1NdOw0KKwlz dHJ1Y3QgY2xrICpzdWJzeXNfY2xrW01BWF9TVUJTWVNfQ0xLU107DQogCWNvbnN0IHN0cnVjdCBz Y3BfZG9tYWluX2RhdGEgKmRhdGE7DQogCXN0cnVjdCByZWd1bGF0b3IgKnN1cHBseTsNCiB9Ow0K QEAgLTM4NCwxNiArMzg5LDIyIEBAIHN0YXRpYyBpbnQgc2Nwc3lzX3Bvd2VyX29uKHN0cnVjdCBn ZW5lcmljX3BtX2RvbWFpbiAqZ2VucGQpDQogCXZhbCB8PSBQV1JfUlNUX0JfQklUOw0KIAl3cml0 ZWwodmFsLCBjdGxfYWRkcik7DQogDQotCXJldCA9IHNjcHN5c19zcmFtX2VuYWJsZShzY3BkLCBj dGxfYWRkcik7DQorCXJldCA9IHNjcHN5c19jbGtfZW5hYmxlKHNjcGQtPnN1YnN5c19jbGssIE1B WF9TVUJTWVNfQ0xLUyk7DQogCWlmIChyZXQgPCAwKQ0KIAkJZ290byBlcnJfcHdyX2FjazsNCiAN CisJcmV0ID0gc2Nwc3lzX3NyYW1fZW5hYmxlKHNjcGQsIGN0bF9hZGRyKTsNCisJaWYgKHJldCA8 IDApDQorCQlnb3RvIGVycl9zcmFtOw0KKw0KIAlyZXQgPSBzY3BzeXNfYnVzX3Byb3RlY3RfZGlz YWJsZShzY3BkKTsNCiAJaWYgKHJldCA8IDApDQotCQlnb3RvIGVycl9wd3JfYWNrOw0KKwkJZ290 byBlcnJfc3JhbTsNCiANCiAJcmV0dXJuIDA7DQogDQorZXJyX3NyYW06DQorCXNjcHN5c19jbGtf ZGlzYWJsZShzY3BkLT5zdWJzeXNfY2xrLCBNQVhfU1VCU1lTX0NMS1MpOw0KIGVycl9wd3JfYWNr Og0KIAlzY3BzeXNfY2xrX2Rpc2FibGUoc2NwZC0+Y2xrLCBNQVhfQ0xLUyk7DQogZXJyX2NsazoN CkBAIC00MjAsNiArNDMxLDggQEAgc3RhdGljIGludCBzY3BzeXNfcG93ZXJfb2ZmKHN0cnVjdCBn ZW5lcmljX3BtX2RvbWFpbiAqZ2VucGQpDQogCWlmIChyZXQgPCAwKQ0KIAkJZ290byBvdXQ7DQog DQorCXNjcHN5c19jbGtfZGlzYWJsZShzY3BkLT5zdWJzeXNfY2xrLCBNQVhfU1VCU1lTX0NMS1Mp Ow0KKw0KIAkvKiBzdWJzeXMgcG93ZXIgb2ZmICovDQogCXZhbCA9IHJlYWRsKGN0bF9hZGRyKTsN CiAJdmFsIHw9IFBXUl9JU09fQklUOw0KQEAgLTQ1Nyw2ICs0NzAsNDggQEAgc3RhdGljIGludCBz Y3BzeXNfcG93ZXJfb2ZmKHN0cnVjdCBnZW5lcmljX3BtX2RvbWFpbiAqZ2VucGQpDQogCXJldHVy biByZXQ7DQogfQ0KIA0KK3N0YXRpYyBpbnQgaW5pdF9zdWJzeXNfY2xrcyhzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2LA0KKwkJY29uc3QgY2hhciAqcHJlZml4LCBzdHJ1Y3QgY2xrICoqY2xr KQ0KK3sNCisJc3RydWN0IGRldmljZV9ub2RlICpub2RlID0gcGRldi0+ZGV2Lm9mX25vZGU7DQor CXUzMiBwcmVmaXhfbGVuLCBzdWJfY2xrX2NudCA9IDA7DQorCXN0cnVjdCBwcm9wZXJ0eSAqcHJv cDsNCisJY29uc3QgY2hhciAqY2xrX25hbWU7DQorDQorCWlmICghbm9kZSkgew0KKwkJZGV2X2Vy cigmcGRldi0+ZGV2LCAiQ2Fubm90IGZpbmQgc2Nwc3lzIG5vZGU6ICVsZFxuIiwNCisJCQlQVFJf RVJSKG5vZGUpKTsNCisJCXJldHVybiBQVFJfRVJSKG5vZGUpOw0KKwl9DQorDQorCXByZWZpeF9s ZW4gPSBzdHJsZW4ocHJlZml4KTsNCisNCisJb2ZfcHJvcGVydHlfZm9yX2VhY2hfc3RyaW5nKG5v ZGUsICJjbG9jay1uYW1lcyIsIHByb3AsIGNsa19uYW1lKSB7DQorCQlpZiAoIXN0cm5jbXAoY2xr X25hbWUsIHByZWZpeCwgcHJlZml4X2xlbikgJiYNCisJCQkJKGNsa19uYW1lW3ByZWZpeF9sZW5d ID09ICctJykpIHsNCisJCQlpZiAoc3ViX2Nsa19jbnQgPj0gTUFYX1NVQlNZU19DTEtTKSB7DQor CQkJCWRldl9lcnIoJnBkZXYtPmRldiwNCisJCQkJCSJzdWJzeXMgY2xrIG91dCBvZiByYW5nZSAl ZFxuIiwNCisJCQkJCXN1Yl9jbGtfY250KTsNCisJCQkJcmV0dXJuIC1FSU5WQUw7DQorCQkJfQ0K Kw0KKwkJCWNsa1tzdWJfY2xrX2NudF0gPSBkZXZtX2Nsa19nZXQoJnBkZXYtPmRldiwNCisJCQkJ CQljbGtfbmFtZSk7DQorDQorCQkJaWYgKElTX0VSUihjbGtbc3ViX2Nsa19jbnRdKSkgew0KKwkJ CQlkZXZfZXJyKCZwZGV2LT5kZXYsDQorCQkJCQkiU3Vic3lzIGNsayBnZXQgZmFpbCAlbGRcbiIs DQorCQkJCQlQVFJfRVJSKGNsa1tzdWJfY2xrX2NudF0pKTsNCisJCQkJcmV0dXJuIFBUUl9FUlIo Y2xrW3N1Yl9jbGtfY250XSk7DQorCQkJfQ0KKwkJCXN1Yl9jbGtfY250Kys7DQorCQl9DQorCX0N CisNCisJcmV0dXJuIHN1Yl9jbGtfY250Ow0KK30NCisNCiBzdGF0aWMgaW50IGluaXRfYmFzaWNf Y2xrcyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3QgY2xrICoqY2xrLA0KIAkJ CWNvbnN0IGNoYXIgKiBjb25zdCAqbmFtZSkNCiB7DQpAQCAtNTU5LDYgKzYxNCwxOCBAQCBzdGF0 aWMgc3RydWN0IHNjcCAqaW5pdF9zY3Aoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwNCiAJ CWlmIChyZXQpDQogCQkJcmV0dXJuIEVSUl9QVFIocmV0KTsNCiANCisJCWlmIChkYXRhLT5zdWJz eXNfY2xrX3ByZWZpeCkgew0KKwkJCXJldCA9IGluaXRfc3Vic3lzX2Nsa3MocGRldiwNCisJCQkJ CWRhdGEtPnN1YnN5c19jbGtfcHJlZml4LA0KKwkJCQkJc2NwZC0+c3Vic3lzX2Nsayk7DQorCQkJ aWYgKHJldCA8IDApIHsNCisJCQkJZGV2X2VycigmcGRldi0+ZGV2LA0KKwkJCQkJIiVzOiBzdWJz eXMgY2xrIHVuYXZhaWxhYmxlXG4iLA0KKwkJCQkJZGF0YS0+bmFtZSk7DQorCQkJCXJldHVybiBF UlJfUFRSKHJldCk7DQorCQkJfQ0KKwkJfQ0KKw0KIAkJZ2VucGQtPm5hbWUgPSBkYXRhLT5uYW1l Ow0KIAkJZ2VucGQtPnBvd2VyX29mZiA9IHNjcHN5c19wb3dlcl9vZmY7DQogCQlnZW5wZC0+cG93 ZXJfb24gPSBzY3BzeXNfcG93ZXJfb247DQotLSANCjEuOC4xLjEuZGlydHkNCg== 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 EA00FC4332B for ; Fri, 20 Mar 2020 07:33:01 +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 BF45F20789 for ; Fri, 20 Mar 2020 07:33:01 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="EItcYKp7"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="npDHTsLp" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org BF45F20789 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=2fyhj7XySu6ApXfrIXjDHxdrIz2rz17K2or0jye7bA4=; b=EItcYKp79lNmvO X5eLV3fBaReCrGOttO5xBiCAmPwroA5Db4j/EjLLjtAxCyxP5Q8iko7FJQenIsquhWLkLdvoCbOgE Osb95OkbVCEGOU7QGA819jh7CsU6iMjgvFk7dD+9+dHpW8MRHyNEqqj6IO0OwBp47PymlDN5i6w4Y tk3tcppoMiV7DYMk9PTZaqtrQeELHcQb56EOcgOg9u+WyqfEWLPPTvEIu9o1MgveuahWmMWJWHSvz 7h2/axU66R7nxsoQItVZFSdICRjUKRBUMroODcraShMWBmTTwFpAI1Y7O7x/ACEJwJhhSP9zLOCWx c4oAdpkTVmIbtn8shJ0A==; 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 1jFC9C-0003CZ-I6; Fri, 20 Mar 2020 07:32:50 +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 1jFC8u-0002xb-M7; Fri, 20 Mar 2020 07:32:34 +0000 X-UUID: 540974b1a6944bf7a8840fbbe4439735-20200319 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=9X5uWL1YgmrDZcTKHn0A/YVVUbEE9hPvqMSvyGyBAwc=; b=npDHTsLp09QKtFP8h7dJT5qeUz2rCZrCCV39Ft2OBQTp48hyXaCnSdwVl1JnRF1yyl47C0M4TFjK5B8qHXWIYdkIktNK7ebgEKxwOVnCt/7QnoWlHx+elgDne5A7mUojOmSYEdsmfIyZCECK63RbylVk/F7qazE7KSGdMomOMmM=; X-UUID: 540974b1a6944bf7a8840fbbe4439735-20200319 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw01.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLS) with ESMTP id 722878272; Thu, 19 Mar 2020 23:32:28 -0800 Received: from MTKMBS07N2.mediatek.inc (172.21.101.141) by MTKMBS62N1.mediatek.inc (172.29.193.41) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Fri, 20 Mar 2020 00:32:52 -0700 Received: from MTKCAS06.mediatek.inc (172.21.101.30) by mtkmbs07n2.mediatek.inc (172.21.101.141) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Fri, 20 Mar 2020 15:31:26 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by MTKCAS06.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Fri, 20 Mar 2020 15:29:19 +0800 From: Weiyi Lu To: Matthias Brugger , Nicolas Boichat , Rob Herring , Sascha Hauer Subject: [PATCH v13 06/11] soc: mediatek: Add subsys clock control for bus protection Date: Fri, 20 Mar 2020 15:32:15 +0800 Message-ID: <1584689540-5227-7-git-send-email-weiyi.lu@mediatek.com> X-Mailer: git-send-email 1.8.1.1.dirty In-Reply-To: <1584689540-5227-1-git-send-email-weiyi.lu@mediatek.com> References: <1584689540-5227-1-git-send-email-weiyi.lu@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-20200320_003232_725375_710B5C17 X-CRM114-Status: GOOD ( 16.18 ) 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: James Liao , Weiyi Lu , srv_heupstream@mediatek.com, linux-kernel@vger.kernel.org, Fan Chen , 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 For the bus protection operations, some subsys clocks need to be enabled before releasing the protection, and vise versa. But those subsys clocks could only be controlled once its corresponding power domain is turned on first. In this patch, we add the subsys clock control into its relavent steps. Signed-off-by: Weiyi Lu --- drivers/soc/mediatek/mtk-scpsys.c | 71 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 69 insertions(+), 2 deletions(-) diff --git a/drivers/soc/mediatek/mtk-scpsys.c b/drivers/soc/mediatek/mtk-scpsys.c index a4fb0b23..2a9478f 100644 --- a/drivers/soc/mediatek/mtk-scpsys.c +++ b/drivers/soc/mediatek/mtk-scpsys.c @@ -80,6 +80,7 @@ #define PWR_STATUS_WB BIT(27) /* MT7622 */ #define MAX_CLKS 3 +#define MAX_SUBSYS_CLKS 10 /** * struct scp_domain_data - scp domain data for power on/off flow @@ -89,6 +90,8 @@ * @sram_pdn_bits: The mask for sram power control bits. * @sram_pdn_ack_bits: The mask for sram power control acked bits. * @basic_clk_name: The basic clocks required by this power domain. + * @subsys_clk_prefix: The prefix name of the clocks need to be enabled + * before releasing bus protection. * @caps: The flag for active wake-up action. * @bp_table: The mask table for multiple step bus protection. */ @@ -99,6 +102,7 @@ struct scp_domain_data { u32 sram_pdn_bits; u32 sram_pdn_ack_bits; const char *basic_clk_name[MAX_CLKS]; + const char *subsys_clk_prefix; u8 caps; struct bus_prot bp_table[MAX_STEPS]; }; @@ -109,6 +113,7 @@ struct scp_domain { struct generic_pm_domain genpd; struct scp *scp; struct clk *clk[MAX_CLKS]; + struct clk *subsys_clk[MAX_SUBSYS_CLKS]; const struct scp_domain_data *data; struct regulator *supply; }; @@ -384,16 +389,22 @@ static int scpsys_power_on(struct generic_pm_domain *genpd) val |= PWR_RST_B_BIT; writel(val, ctl_addr); - ret = scpsys_sram_enable(scpd, ctl_addr); + ret = scpsys_clk_enable(scpd->subsys_clk, MAX_SUBSYS_CLKS); if (ret < 0) goto err_pwr_ack; + ret = scpsys_sram_enable(scpd, ctl_addr); + if (ret < 0) + goto err_sram; + ret = scpsys_bus_protect_disable(scpd); if (ret < 0) - goto err_pwr_ack; + goto err_sram; return 0; +err_sram: + scpsys_clk_disable(scpd->subsys_clk, MAX_SUBSYS_CLKS); err_pwr_ack: scpsys_clk_disable(scpd->clk, MAX_CLKS); err_clk: @@ -420,6 +431,8 @@ static int scpsys_power_off(struct generic_pm_domain *genpd) if (ret < 0) goto out; + scpsys_clk_disable(scpd->subsys_clk, MAX_SUBSYS_CLKS); + /* subsys power off */ val = readl(ctl_addr); val |= PWR_ISO_BIT; @@ -457,6 +470,48 @@ static int scpsys_power_off(struct generic_pm_domain *genpd) return ret; } +static int init_subsys_clks(struct platform_device *pdev, + const char *prefix, struct clk **clk) +{ + struct device_node *node = pdev->dev.of_node; + u32 prefix_len, sub_clk_cnt = 0; + struct property *prop; + const char *clk_name; + + if (!node) { + dev_err(&pdev->dev, "Cannot find scpsys node: %ld\n", + PTR_ERR(node)); + return PTR_ERR(node); + } + + prefix_len = strlen(prefix); + + of_property_for_each_string(node, "clock-names", prop, clk_name) { + if (!strncmp(clk_name, prefix, prefix_len) && + (clk_name[prefix_len] == '-')) { + if (sub_clk_cnt >= MAX_SUBSYS_CLKS) { + dev_err(&pdev->dev, + "subsys clk out of range %d\n", + sub_clk_cnt); + return -EINVAL; + } + + clk[sub_clk_cnt] = devm_clk_get(&pdev->dev, + clk_name); + + if (IS_ERR(clk[sub_clk_cnt])) { + dev_err(&pdev->dev, + "Subsys clk get fail %ld\n", + PTR_ERR(clk[sub_clk_cnt])); + return PTR_ERR(clk[sub_clk_cnt]); + } + sub_clk_cnt++; + } + } + + return sub_clk_cnt; +} + static int init_basic_clks(struct platform_device *pdev, struct clk **clk, const char * const *name) { @@ -559,6 +614,18 @@ static struct scp *init_scp(struct platform_device *pdev, if (ret) return ERR_PTR(ret); + if (data->subsys_clk_prefix) { + ret = init_subsys_clks(pdev, + data->subsys_clk_prefix, + scpd->subsys_clk); + if (ret < 0) { + dev_err(&pdev->dev, + "%s: subsys clk unavailable\n", + data->name); + return ERR_PTR(ret); + } + } + genpd->name = data->name; genpd->power_off = scpsys_power_off; genpd->power_on = scpsys_power_on; -- 1.8.1.1.dirty _______________________________________________ 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 B6CD6C4332D for ; Fri, 20 Mar 2020 07:32:59 +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 879072051A for ; Fri, 20 Mar 2020 07:32:59 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="ljy3GzTl"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="npDHTsLp" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 879072051A 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=PonhIu/t1vIp+VambmakcN5A+7+vx6BSQsyT2xJ3e0I=; b=ljy3GzTl92W9ao 6P6/kGZuz3iMi5WxiNdNxXYeBpAwoyEZuhKoP/hIo2wMWziQVkCgIhmukEyrWJRd5SPk1CeMTPG4N WNoZKpIvW15pO1j6RUZeiF5A9gvka8iNGgFXUP5jMCGHXe6IqWIYwtcUf7qvYav5nL3wnF+ZpUSxU IksP4P0nadPMl/0g5ZAjeQz+qjTq8L7pBsRojD1j0iavji66ar536+Y0bOjhxEGjMUYEiH0F0aDfv Jf1xGcTkUm58RoDuzi543Wyfro27KAWmknecApjN9aartihLJC7ZdWIrZZwFT4nyjuwr0AgjYV7rv 2Tf7O7R5GdWuXarHOdCA==; 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 1jFC9K-0003Ge-RS; Fri, 20 Mar 2020 07:32:58 +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 1jFC8u-0002xb-M7; Fri, 20 Mar 2020 07:32:34 +0000 X-UUID: 540974b1a6944bf7a8840fbbe4439735-20200319 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=9X5uWL1YgmrDZcTKHn0A/YVVUbEE9hPvqMSvyGyBAwc=; b=npDHTsLp09QKtFP8h7dJT5qeUz2rCZrCCV39Ft2OBQTp48hyXaCnSdwVl1JnRF1yyl47C0M4TFjK5B8qHXWIYdkIktNK7ebgEKxwOVnCt/7QnoWlHx+elgDne5A7mUojOmSYEdsmfIyZCECK63RbylVk/F7qazE7KSGdMomOMmM=; X-UUID: 540974b1a6944bf7a8840fbbe4439735-20200319 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw01.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLS) with ESMTP id 722878272; Thu, 19 Mar 2020 23:32:28 -0800 Received: from MTKMBS07N2.mediatek.inc (172.21.101.141) by MTKMBS62N1.mediatek.inc (172.29.193.41) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Fri, 20 Mar 2020 00:32:52 -0700 Received: from MTKCAS06.mediatek.inc (172.21.101.30) by mtkmbs07n2.mediatek.inc (172.21.101.141) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Fri, 20 Mar 2020 15:31:26 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by MTKCAS06.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Fri, 20 Mar 2020 15:29:19 +0800 From: Weiyi Lu To: Matthias Brugger , Nicolas Boichat , Rob Herring , Sascha Hauer Subject: [PATCH v13 06/11] soc: mediatek: Add subsys clock control for bus protection Date: Fri, 20 Mar 2020 15:32:15 +0800 Message-ID: <1584689540-5227-7-git-send-email-weiyi.lu@mediatek.com> X-Mailer: git-send-email 1.8.1.1.dirty In-Reply-To: <1584689540-5227-1-git-send-email-weiyi.lu@mediatek.com> References: <1584689540-5227-1-git-send-email-weiyi.lu@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-20200320_003232_725375_710B5C17 X-CRM114-Status: GOOD ( 16.18 ) 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: James Liao , Weiyi Lu , srv_heupstream@mediatek.com, linux-kernel@vger.kernel.org, Fan Chen , 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 For the bus protection operations, some subsys clocks need to be enabled before releasing the protection, and vise versa. But those subsys clocks could only be controlled once its corresponding power domain is turned on first. In this patch, we add the subsys clock control into its relavent steps. Signed-off-by: Weiyi Lu --- drivers/soc/mediatek/mtk-scpsys.c | 71 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 69 insertions(+), 2 deletions(-) diff --git a/drivers/soc/mediatek/mtk-scpsys.c b/drivers/soc/mediatek/mtk-scpsys.c index a4fb0b23..2a9478f 100644 --- a/drivers/soc/mediatek/mtk-scpsys.c +++ b/drivers/soc/mediatek/mtk-scpsys.c @@ -80,6 +80,7 @@ #define PWR_STATUS_WB BIT(27) /* MT7622 */ #define MAX_CLKS 3 +#define MAX_SUBSYS_CLKS 10 /** * struct scp_domain_data - scp domain data for power on/off flow @@ -89,6 +90,8 @@ * @sram_pdn_bits: The mask for sram power control bits. * @sram_pdn_ack_bits: The mask for sram power control acked bits. * @basic_clk_name: The basic clocks required by this power domain. + * @subsys_clk_prefix: The prefix name of the clocks need to be enabled + * before releasing bus protection. * @caps: The flag for active wake-up action. * @bp_table: The mask table for multiple step bus protection. */ @@ -99,6 +102,7 @@ struct scp_domain_data { u32 sram_pdn_bits; u32 sram_pdn_ack_bits; const char *basic_clk_name[MAX_CLKS]; + const char *subsys_clk_prefix; u8 caps; struct bus_prot bp_table[MAX_STEPS]; }; @@ -109,6 +113,7 @@ struct scp_domain { struct generic_pm_domain genpd; struct scp *scp; struct clk *clk[MAX_CLKS]; + struct clk *subsys_clk[MAX_SUBSYS_CLKS]; const struct scp_domain_data *data; struct regulator *supply; }; @@ -384,16 +389,22 @@ static int scpsys_power_on(struct generic_pm_domain *genpd) val |= PWR_RST_B_BIT; writel(val, ctl_addr); - ret = scpsys_sram_enable(scpd, ctl_addr); + ret = scpsys_clk_enable(scpd->subsys_clk, MAX_SUBSYS_CLKS); if (ret < 0) goto err_pwr_ack; + ret = scpsys_sram_enable(scpd, ctl_addr); + if (ret < 0) + goto err_sram; + ret = scpsys_bus_protect_disable(scpd); if (ret < 0) - goto err_pwr_ack; + goto err_sram; return 0; +err_sram: + scpsys_clk_disable(scpd->subsys_clk, MAX_SUBSYS_CLKS); err_pwr_ack: scpsys_clk_disable(scpd->clk, MAX_CLKS); err_clk: @@ -420,6 +431,8 @@ static int scpsys_power_off(struct generic_pm_domain *genpd) if (ret < 0) goto out; + scpsys_clk_disable(scpd->subsys_clk, MAX_SUBSYS_CLKS); + /* subsys power off */ val = readl(ctl_addr); val |= PWR_ISO_BIT; @@ -457,6 +470,48 @@ static int scpsys_power_off(struct generic_pm_domain *genpd) return ret; } +static int init_subsys_clks(struct platform_device *pdev, + const char *prefix, struct clk **clk) +{ + struct device_node *node = pdev->dev.of_node; + u32 prefix_len, sub_clk_cnt = 0; + struct property *prop; + const char *clk_name; + + if (!node) { + dev_err(&pdev->dev, "Cannot find scpsys node: %ld\n", + PTR_ERR(node)); + return PTR_ERR(node); + } + + prefix_len = strlen(prefix); + + of_property_for_each_string(node, "clock-names", prop, clk_name) { + if (!strncmp(clk_name, prefix, prefix_len) && + (clk_name[prefix_len] == '-')) { + if (sub_clk_cnt >= MAX_SUBSYS_CLKS) { + dev_err(&pdev->dev, + "subsys clk out of range %d\n", + sub_clk_cnt); + return -EINVAL; + } + + clk[sub_clk_cnt] = devm_clk_get(&pdev->dev, + clk_name); + + if (IS_ERR(clk[sub_clk_cnt])) { + dev_err(&pdev->dev, + "Subsys clk get fail %ld\n", + PTR_ERR(clk[sub_clk_cnt])); + return PTR_ERR(clk[sub_clk_cnt]); + } + sub_clk_cnt++; + } + } + + return sub_clk_cnt; +} + static int init_basic_clks(struct platform_device *pdev, struct clk **clk, const char * const *name) { @@ -559,6 +614,18 @@ static struct scp *init_scp(struct platform_device *pdev, if (ret) return ERR_PTR(ret); + if (data->subsys_clk_prefix) { + ret = init_subsys_clks(pdev, + data->subsys_clk_prefix, + scpd->subsys_clk); + if (ret < 0) { + dev_err(&pdev->dev, + "%s: subsys clk unavailable\n", + data->name); + return ERR_PTR(ret); + } + } + genpd->name = data->name; genpd->power_off = scpsys_power_off; genpd->power_on = scpsys_power_on; -- 1.8.1.1.dirty _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel