From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756879AbcKBSeO (ORCPT ); Wed, 2 Nov 2016 14:34:14 -0400 Received: from mail-db5eur01on0040.outbound.protection.outlook.com ([104.47.2.40]:49072 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1756575AbcKBSeM (ORCPT ); Wed, 2 Nov 2016 14:34:12 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=frank.li@nxp.com; From: Frank Li To: , CC: , , , , , , , , Frank Li Subject: [PATCH v2 1/2] ARM: imx: mmdc perf function support i.MX6QP Date: Wed, 2 Nov 2016 13:00:03 -0500 Message-ID: <1478109604-18323-1-git-send-email-Frank.Li@nxp.com> X-Mailer: git-send-email 2.5.2 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [192.88.168.49] X-ClientProxiedBy: SN1PR12CA0002.namprd12.prod.outlook.com (10.162.96.140) To DB4PR04MB265.eurprd04.prod.outlook.com (10.242.231.20) X-MS-Office365-Filtering-Correlation-Id: b6764b01-d8f3-4c98-850d-08d40341aa99 X-Microsoft-Exchange-Diagnostics: 1;DB4PR04MB265;2:ukVF8sTPXhCdtsP7hlJXJ9pFrk69QTlFVuELepYnW2gi44iCkOg453hPiiRWwRmX+ramVFCYZCrdutGWuUQt5KQ4c1j5PCai5UCQGqZ82rpTx/ize9qyRjWbebdiRoo4K2ZLnZjqrb1o3R4lC7iIiHx+kPTXhLXTnT6qlnMM1LdzedEdpf4i5G3V7Au8kw5ZJkf5KfGv4svZLxHP3Jgqdw==;3:pJRTnx7an+La0o/ELuN5h36ftlymks+Us79uVt76F8C/NBdZ79FXnMkMTo8dqu0qrFOTxF14VTW2TsaCPUyd2in7XyC03oJvck8xDUsq39/G5XtwkJpOEQ04cZlkQqmaXv8eG1yWhh4ls6MTqq0WQw== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DB4PR04MB265; X-Microsoft-Exchange-Diagnostics: 1;DB4PR04MB265;25:gyB0QTeMnLy6II5QuDlEDYbAc/qt1w0BRgXgjIN/LbFZuGHKt5CgKAkJPZmHMBjIhFLSc4VP7Xr1AH+WXoDd7paX8FKIcItotuMgEXa1cHdWTr8uRISvUafKFvSe6lDa3yppv8lYDmhPtsiyH18QLTRzIWC8JEvw/3wxPB/o/3SugupeR55KbqcRbzomk0ig9uN/QMuDC/8SQ4+Vtet0dmNI73rD+T+PDpneno7FU4N7zq5K958EmfXc3W24UObU3t7lu5ztCSFqwRwPv1iFpqgXz0Hj4IFxUZgS7j1X8PaCzrAdZyLa8/V8PxgBZJWwAOXizWFV7PNQCCUgd+kVBJyEciuVo1U/Vuz1owK7aQ1ZONsX1L8HDy2QPdFIumtr1t3E1ZV8dgFrbkjf8KhLiDFUl8xn95fFEbLW1WiYVJHidiZm95Cz4hgFrFYCtqBMLDJWM9JQhuQ/wMjuO4yn+rD9mwTNFF4TDIm3iEkx4ApW5+uo74ozF0wYQaDAmQiviniXCo6t+6d8qFvLF/MgYWzWrry8zIiddYPLE9ck55iLy3OH5CKMG7UgGyyOf+pbR9q/7ALQJhI5DS7dXvDSRBTJXx24IdLv8Tx2GG2dWRCI2++kvcBQdozcdQycNajgpJO9jfM92Dw34Llofl6J3uD1wLU2X0JY/QAdDBy9dho/XhdMoR82dpRFh4MN+LIUDHKGTOtbsX+5ngfiCFb0X2vqfEdKFp0ABV+1GcIJGEQ= X-Microsoft-Exchange-Diagnostics: 1;DB4PR04MB265;31:oOa1Elbw1VwpQeZWGj6r8c8p4ZLPvevVLXSB3xIBtIZJkFyx3bJpIbWqUhAPbWR8iHkVXPv51JAKemUrdpFquwV6bngpGGcy2OoGnLiTZDnt/OTZ45lJlcpEA2w4i8PSnxoyNzuAxDOvfRp3qPz9JAtUCX0zNURoU4M8kDncYSw3HnrW19g8PjHpT1F1f/3bcu5XHUbv78p6K3UVlGx1tPM9nuJJzhf2xH8fg1M3F5RO5FJhEclwM3ZuSvdBrz5qEmAsZhQNk5GwAbGpNiU8eA==;20:AsBJZZl09UX3H1Xwpr4RGZVWG3zx2skxdfciXB8l/W7tXr5hx6RpTXPF3nSwoKqtytQ/mDUefj2/w1pyz+8WzesP32gfiLTj28oPX+H2G4HQPXMcshXrydQQtC9kjeYPqnosyxwXHgcXjkgg7u/21i10lCqoP8VAxqmt52ybbCthdtrn7FCzALLKOM3ndzfeAv/eUq/hLAORn/c8Yrl9M7SHWHH2a+p0UsdKwFn7bylMAipBlCe5bGrM8LvDXSN2j24236rHMLAa7JWwfVlmrAKWc+ovKohbkZdKPbLuqevvOdnr/gHW0gNgbhQYuUawjbbgJ/rwlgEzbnFrpW6aI7kKBsTSVQ8OV3Z8y9gUo5vSKByrNaNH9ot1Wys/PnfBxPG3UIgTJoqOyNJAkOjOejyiJj96a/16OuNnXTwedmB+JGT0kWYGuR+omijBfEqRJc6IuduJ0m4JOLQhOULuaCXExHe5i0Z+jXtlG1CaFtke9JYoip7CMV31ji4RkWel X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(6045074)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026)(6046074)(6072074);SRVR:DB4PR04MB265;BCL:0;PCL:0;RULEID:;SRVR:DB4PR04MB265; X-Microsoft-Exchange-Diagnostics: 1;DB4PR04MB265;4:kQUnpK+ZkM2mNrka2sxmVi5kN72yKGNnhR2yyDRokssohiiiAeQ98oZ6CMjOmS6ak65aFdNWKjBsfgdgKFtMA43XvAqtvLYhqplRQkovTKKdedg8kUb6wB7FYJhyA86c3OLMWPkuj1SOliUChhsZTS9RRt81GfYtl10gtqcDSgE3vCcW9kcReKWYQzQTaTQN9uT4Z09R5CneutkifD3izcHOl/UaLvzmi0NV57syTBKSaPUd4w19upDJl9aO+CrfauH1EuzqMgPmQ8ia/d9IIxm/hyh+WWc6+lq7p2KercnQU86ys/hx2rbxwNvGbDAYvF7itJF+88DDPh7PoVAwnmiBITqJNZ8cHIm3hIfMeOf19/pUxKEWRPzjHUnNrYl2xePj10OSuoATQBfQN38LoULzMxvbzdoP/fQXn913pSWBtpq5+LGH9FcBLx4JYvDKfE0QG+uRIigyjXAScUSVunMpoNiAgQChEBwxLjeg8kQy6pG8QYpemqHIoQToJSqNIvUXL9ogrW2MsXkiTQzdkg== X-Forefront-PRVS: 0114FF88F6 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(7916002)(199003)(189002)(8676002)(50226002)(106356001)(19580395003)(4326007)(77096005)(19580405001)(5660300001)(50986999)(42186005)(2906002)(92566002)(189998001)(3846002)(5003940100001)(6116002)(5001770100001)(586003)(66066001)(47776003)(48376002)(50466002)(97736004)(101416001)(229853001)(6666003)(7846002)(86362001)(305945005)(81156014)(81166006)(7736002)(68736007)(36756003)(105586002);DIR:OUT;SFP:1101;SCL:1;SRVR:DB4PR04MB265;H:lizhi-Precision-Tower-5810.am.freescale.net;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DB4PR04MB265;23:5ZZzJUn+cRasdUEBp2dXe28vQRD+5GwJSKWH4HEJDq?= =?us-ascii?Q?lBhwzDiJRFUqVwQHXD4ZELpLuOUE7HKPNhKjy3Mdo8qHBA6+qZfVUIROP4hE?= =?us-ascii?Q?bI40R1ffgo1Eh3kHTpv3fnEfDsQzifJC7eVz00jaL1CDvFckRxXewJ7kTJyD?= =?us-ascii?Q?+FlcfW8mYt67IjOTqRNHded4KCpoJqI+6fu6bhpVNnuW2BXGsn283MLAUQD/?= =?us-ascii?Q?/cyY6V61mU3ua2JMhoW9NmN3JPpqFV/BVnluaiYQRzY9PU1eA/Mz9cedlS38?= =?us-ascii?Q?mb9M7p8zLfVsgaC1MRX8lrstd4Jd09PhxHaDHAjYGIfpm+C/sr6KU+lNS2VP?= =?us-ascii?Q?UUOyo6gw3jklJf3lUYsfYL3TJj2Zsu/B9WrxiE0gAUZCjkcSMZRm2Hmf9B+6?= =?us-ascii?Q?WCpdQ7BTc8QsCZ+r/AvkEfdJGGcxW+kQWQhMjwqGiLl/0oMYK7wIe2iz8Sat?= =?us-ascii?Q?L5XAOOvB5mUoQQXP45vzXeiREB04L0EdCwhNbSRJD/WGYessa03QdbS7Y5fT?= =?us-ascii?Q?SWexX3j5PucakPWG5F5hP7SIoia70rQ9mSVcWbM7fD3UtEWo82tVrkKyYVVO?= =?us-ascii?Q?A5+dwjFTv/mezoysUHamAR2Wnp2i0Q6OAJo9JEWOrqnjrBQnU0qkET71VYoE?= =?us-ascii?Q?OekHRYz/+z+wM93RufDDzkqL4H6PiQoaMmtlwPKDrMaJ0cVo4WzvhKcFcEUI?= =?us-ascii?Q?LgEAIVmsXPPILHvQ+Z+V5z5ImJQoV3PuGwHchUipFiIibMMicstspnq5C/Oa?= =?us-ascii?Q?H9cbiWhXfUFPdIP1p/g482camMKWOwwsAeJnDJIPG2LWABj8/dsiG2iT9jfn?= =?us-ascii?Q?2Qnn9QWSZq4c/r2/PP2UrqCuzrDphVqs+slwNar3Yuwa8aoQfIMr1fpkrghy?= =?us-ascii?Q?H9IOyZ4wLabEZm3lSlVPa/iB6l9YyzFw0s0qa72DEA6+GzcALEqmtuJNIuiH?= =?us-ascii?Q?CfCY1wTP4OH3dRO02Ag3vnZ06Rou30GC9WpzYtPBjaCRIAS/IKVRPmP7aUy4?= =?us-ascii?Q?isv067W/BStLHEJKEnnDfAiEuVgqIv1C52/d/3ycDaOQ=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;DB4PR04MB265;6:K/5jzdMnw0UBAorzfMYlV73sWwrH4DiQtMtMNkrWV2gp1RZ1aqyR3yajiEhWLjEfNxKwTjsyXP1RyfZVvpumNDaCuxc2MqZZoNU5D+SG/pJRDUhaZHhm/peoGyDKOZqgwsKEtyyKaKQI/wKoItCwk7JEMewDGXv5BAf2cOmAlZHECF3liwA/oJz98xfRI443SbFKmZfcvH2iWgl6TnOff+la/768ilT0+/+rX1rDBq9xPj+Hui8/nqqHcT6YDLwQP6FjVpi1NmudcRFs7zI18ABd3WXr8lKqPaq+eXbEb9iju8J+d6kPOb8e7lTNrp2T307OdYFKd6jInzKbCN+bLhPl6SU9XZYLklvTWZla3buDkQphoOg2HSgxLf2uTadw;5:mp1RuARhKMoIXE1qwbWmgLVAEGNUcV0nIDiLvRpQkI2UC7E2cWQAzUgopl4t+Cl/CaPbDVblPjjEHR7ByWm6cti3cuvahEXybr3o172+nXgz6Ti0BLx1zFGgxyR+T9xcKnUTVLkUJBp2RKUGRxmCcg==;24:pCKBHx4C9Ozofes5v7eabGV6VHFF420unJ7weyjmoS30auyUFdpA+HGYQLzPPibv510Pv/yVyh5DaLUjbxoAfuGyoRrTsGO8a/qQkGsKpGM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DB4PR04MB265;7:R2o+qBvnCuvW1oFQSlVplZOzGUkvCO4oDGeatUGpHUhxJBXF3Fm3adf3DP8txDUUVLE2OPEtfADMY48VtZ9NGEsKlPoonscZYhtwNZHYXuqiMw0xO7/u6MzgJLjl2jH97ZrOOFOoYmObvi8SVRczWB1zZqkOJQ6Xcnj+2kIOw5zroniQ0ERZ6RUUL/Yv9PG5a5ApgUZGm5WTGQ6aEnGgvBGaGpMeJ0cklKfmZcb7ZHrtPIhaBxxKy15r9K83MhZoFJzFPNnUZfJlyDPp4c7d0y9EVXHPo52zXqlYkHtP9xOTLderutOU7kVKUYYhHJyyVrbHlECnb+uICma1OrlXzlmAtWkQ/KxNAzETCn6olgc= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2016 16:59:46.3310 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR04MB265 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org i.MX6QP added new reigster bit PROFILE_SEL in MADPCR0. need set it at perf start. Signed-off-by: Frank Li --- V1 to V2: remove fsl_mmdc_devtype arch/arm/mach-imx/mmdc.c | 38 ++++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/arch/arm/mach-imx/mmdc.c b/arch/arm/mach-imx/mmdc.c index d82d14c..032cbe0 100644 --- a/arch/arm/mach-imx/mmdc.c +++ b/arch/arm/mach-imx/mmdc.c @@ -44,6 +44,7 @@ #define DBG_RST 0x2 #define PRF_FRZ 0x4 #define CYC_OVF 0x8 +#define PROFILE_SEL 0x10 #define MMDC_MADPCR0 0x410 #define MMDC_MADPSR0 0x418 @@ -55,10 +56,29 @@ #define MMDC_NUM_COUNTERS 6 +#define FSL_MMDC_QUIRK_PROFILE_SEL 0x1 + #define to_mmdc_pmu(p) container_of(p, struct mmdc_pmu, pmu) static int ddr_type; +struct fsl_mmdc_devtype_data { + int driver_data; +}; + +static struct fsl_mmdc_devtype_data imx6q_data = { +}; + +static struct fsl_mmdc_devtype_data imx6qp_data = { + .driver_data = FSL_MMDC_QUIRK_PROFILE_SEL, +}; + +static const struct of_device_id imx_mmdc_dt_ids[] = { + { .compatible = "fsl,imx6q-mmdc", .data = (void *)&imx6q_data}, + { .compatible = "fsl,imx6qp-mmdc", .data = (void *)&imx6qp_data}, + { /* sentinel */ } +}; + #ifdef CONFIG_PERF_EVENTS static DEFINE_IDA(mmdc_ida); @@ -83,6 +103,7 @@ struct mmdc_pmu { struct device *dev; struct perf_event *mmdc_events[MMDC_NUM_COUNTERS]; struct hlist_node node; + struct fsl_mmdc_devtype_data *devtype_data; }; /* @@ -307,6 +328,7 @@ static void mmdc_pmu_event_start(struct perf_event *event, int flags) struct mmdc_pmu *pmu_mmdc = to_mmdc_pmu(event->pmu); struct hw_perf_event *hwc = &event->hw; void __iomem *mmdc_base, *reg; + int val; mmdc_base = pmu_mmdc->mmdc_base; reg = mmdc_base + MMDC_MADPCR0; @@ -321,7 +343,12 @@ static void mmdc_pmu_event_start(struct perf_event *event, int flags) local64_set(&hwc->prev_count, 0); writel(DBG_RST, reg); - writel(DBG_EN, reg); + + val = DBG_EN; + if (pmu_mmdc->devtype_data->driver_data & FSL_MMDC_QUIRK_PROFILE_SEL) + val |= PROFILE_SEL; + + writel(val, reg); } static int mmdc_pmu_event_add(struct perf_event *event, int flags) @@ -436,6 +463,8 @@ static int imx_mmdc_perf_init(struct platform_device *pdev, void __iomem *mmdc_b char *name; int mmdc_num; int ret; + const struct of_device_id *of_id = + of_match_device(imx_mmdc_dt_ids, &pdev->dev); pmu_mmdc = kzalloc(sizeof(*pmu_mmdc), GFP_KERNEL); if (!pmu_mmdc) { @@ -450,6 +479,8 @@ static int imx_mmdc_perf_init(struct platform_device *pdev, void __iomem *mmdc_b name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "mmdc%d", mmdc_num); + pmu_mmdc->devtype_data = (struct fsl_mmdc_devtype_data *)of_id->data; + hrtimer_init(&pmu_mmdc->hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); pmu_mmdc->hrtimer.function = mmdc_pmu_timer_handler; @@ -524,11 +555,6 @@ int imx_mmdc_get_ddr_type(void) return ddr_type; } -static const struct of_device_id imx_mmdc_dt_ids[] = { - { .compatible = "fsl,imx6q-mmdc", }, - { /* sentinel */ } -}; - static struct platform_driver imx_mmdc_driver = { .driver = { .name = "imx-mmdc", -- 2.5.2