From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752167AbcKGWFR (ORCPT ); Mon, 7 Nov 2016 17:05:17 -0500 Received: from mail-db5eur01on0040.outbound.protection.outlook.com ([104.47.2.40]:10688 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751562AbcKGWFP (ORCPT ); Mon, 7 Nov 2016 17:05:15 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=frank.li@nxp.com; From: Frank Li To: , CC: , , , , , , , , Frank Li Subject: [PATCH V3 1/2] ARM: imx: mmdc perf function support i.MX6QP Date: Mon, 7 Nov 2016 11:30:48 -0600 Message-ID: <1478539849-10834-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.1] X-ClientProxiedBy: CY4PR21CA0015.namprd21.prod.outlook.com (10.172.122.153) To DB4PR04MB267.eurprd04.prod.outlook.com (10.242.231.22) X-MS-Office365-Filtering-Correlation-Id: ff609dfd-ac50-44ba-b6d5-08d4072b6eef X-Microsoft-Exchange-Diagnostics: 1;DB4PR04MB267;2:LDQ993g1xKh3IUNlWH2wjiVoY34PbV6BfQC5pz0Gtr7/HEbUIjjxGJLdDleEN3ybotJD5/eiUvVan7MIXI2eNBaSPNzT5a6gzRJKMsQAD/Q9xQmIhk7mdx/N2pIz2oSVuh02Bz81oH3UXN/Xxdibsqfzy7BGN+sBimPF64FyCGpVuphiS7vAPSTLs1Uc3RUUdSjSSxka4hLtSthTBsTAZg==;3:m6gltQ2CIU9oCxQAG/hCt9Z932dsGTTtb0CxG0hJfL6k+1wyChqe55Ju7P3BF7qzykzVL7IKj8JXSCrcqjyka4u4dwfEqu/UDnnhOYXkpSp3xee2LTHQGoQyGdrHWKXHnxx/HcZgcLRItuNTb1V2cQ== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DB4PR04MB267; X-Microsoft-Exchange-Diagnostics: 1;DB4PR04MB267;25:VDbreEvgHP094D8mpMunoKg7whyvuIb30gwwbK7OH3dhSmn/Kfg/H3COFn1gWuRD93rYc8LtHd5onGWl6iXmjzC1daJ4jHvcNUEcHc4rAlMIHyg1cVnPCV9wtFLA2Dz9iI4kc8ZFgXrVTJS5nHYJOVaVwpcQHqdgmHqXh0tfEfISbE5Qbz5KjTpj6ZX/teqyskIUTM/ILTwj0J9aOra4QrzYSLD1ue4eBeqXQtOihmrsc5XtSbh/SwRSNPUhXukGJVSy8aBffxMQXz+oTS9noD7QFo0XFL8MskVLN3pMnIg3qq7RW6gcAuLowEcURrXvLGrpq06gq4IRdiYHUibOM4RtMP2nv7TPsZjqqz4YZqmLZwFmwZeGN/9pmjmaUIuFzuMh8HAS0pHqKnHaeZe764ZgMMVvs/npoD77dIiVMxsE8HapLHTBkQsh1pGZmkhKDokAS1rMRxT6R3/Q38ZTT0q00wETOuucYfQ66csuXNJvCG25LkooXwD/HnvwJaWBxgw/YYYCtnJQo3pPTlaIiEduA1JKjPhsdsICKval8BTfijR0G9+JHQuHqz2D7DzCQ3KtzF+KduqsZN4W2cSFzFnN57FdSXt4y95nBos0Lhgrc9Bw7x93nUxq49suu+l8N4HgVMQAXZreMzvb/gtppxCqBCmpDnVjv6v1nCwL0+UAK9y7V0MdqYZCSnp/Eq6fErGqSTLPgQnTW/zh3Bwab3wHZxBOb65QZtXZrcb4Plc= X-Microsoft-Exchange-Diagnostics: 1;DB4PR04MB267;31:EoxdYYeP0pbsd+IqWJsGvXgRO5ZAYUHfZR8F1G85x9xIaL8J+JsfTckf7vBLAyCuvKuFf0MjQlTb3PulJEsPfgCWWhrjgt01X9vsY0I5srFusBn5xmmHKTil64eGX4eJGRwTqJVuebuyNHxaJEDop4IQSz106zYqrh6d4Kw5pkspzuBLqVCfCNUQjljT3yBt/TjgeckWX4qnIt+l6m4VsfsPVFDCMsuP3smE3+Qq37iukS+1wC1SxjDK/DsSgm5i;20:v3DVWc5OR4qgnGUKUe8IXg8TkgPxhcU7XyzGZf3j4cgAGWBOtCPbLukRucXGmpI4ma8W4jLqIfSdwVqFEOOWHpXsrxIypMX38iWbK54z6UlhMkL4rjRM6/BYesamn4IJz87LCA4VPMEejV+MkpDY8TuYfcnk8r5kqIc2mJe58taAB5EFGMDM4ONlfHQV8NPWdu/O+CSoFlSMIEr9EYDlIyt0uSOjzBn/GI9/O5xs+i9+OCm4CtS9arxeAe2riJhWPujFd4Vja4q1IpsA9rkOY66AqNvVGjMtVCKmFfZ21og2nEqQuzU2NUE2tq08KMRhfMwyNZuo3n9bHX0a/nqPIMpNKV8yg9ghZFmReOBJv2tdmiv65b9pgPPvYVlYz+qDNFfVEBuv8diZI3+oWFT5Ro6+P15LaGLmm35G7Y6+h1Qi7AcqXIpKWi31HTrFcwav0HgYLlWAeJgxPILZtKW1cohXkIm4XIcJdJdR635Fw2f9HwrwIdgkYlGJvqZ8kpfK X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6045074)(6060229)(6040176)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026)(6061226)(6046074);SRVR:DB4PR04MB267;BCL:0;PCL:0;RULEID:;SRVR:DB4PR04MB267; X-Microsoft-Exchange-Diagnostics: 1;DB4PR04MB267;4:yjBR+JQ8/6b6tA/tEMtW4lUtYZ85ZDM04ftAPiXrmcsYWO3oDh11iyK3cHEZp/FaDpgrtQg6D6E2OIzpoFWWhuYE2Rkn8ZZ9lnaueWneur/adYxqrtAjpG79mQZIArLHjuCb/tp74VfXLtvskFkWy+TPOirpJClFlp15V5gjlg/U5gBp1ZX3qLPrAalcjijcf8bHY+Rp1hW0nqxtoa6aX23fAhpZL062bTXHcG5cD6xaNVAywYAL8rlD8dYS1Ux/4yDTmqxKRcTCOeMZ3qyR8Ed9EeNezh/Ox0nADGTgaprJcCF7KPtBg7nL6Nnq+4M7vxKWaS/LqDRfCRy5L9xuPTIftdw2K4okvmVFDCgHyJm+O8oJJ/3iMytb5HIXCbo2hwCIFUucPsDfTX98QIcXEcTuQJ9SHAps9l7joJcKeqBBtjzVcX4ScBkqHa60czH17cWg8AGgs77M2xetUqYkwyaQkCaQvVtURzS5FVme6jEUiIdBobYMqQ+qTmtqXLW51XhnMJQEKXOFDjSb0XzEy1EO5J/N5ZV3u5pISJGhfdg= X-Forefront-PRVS: 0119DC3B5E X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(7916002)(189002)(199003)(8676002)(68736007)(305945005)(5660300001)(6116002)(586003)(3846002)(50226002)(50466002)(36756003)(77096005)(5001770100001)(7736002)(97736004)(81156014)(81166006)(92566002)(189998001)(48376002)(66066001)(101416001)(47776003)(5003940100001)(7846002)(50986999)(19580395003)(4326007)(2906002)(86362001)(105586002)(229853001)(19580405001)(42186005)(106356001);DIR:OUT;SFP:1101;SCL:1;SRVR:DB4PR04MB267;H:lizhi-Precision-Tower-5810.am.freescale.net;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DB4PR04MB267;23:EOCTZc778DQhOZMKIFkgWBzX2NOUkXLI7edFN+z7P8?= =?us-ascii?Q?fGf93stmgd2qB+gp+UOAR7Z2ZXeUWzN27TgZkipZ+2w9EfpHHY6mjkI0AcHn?= =?us-ascii?Q?Cpsq+ksJDapL/DYwZsNi313z2Qy720r0OsTIjJOJ90z72QA6qSPXjnMRsYQr?= =?us-ascii?Q?VNEU+5P9r6+p4syciCrv1aFyvRqGldlmkuDC+vB/WigZ1Lwm+ygA4fkBo/3t?= =?us-ascii?Q?TjvRnEYqq3YDPZTFba9gSqGqHIVU693xCSyxA1ha8yo5LwjkPJEdYI9YYVPZ?= =?us-ascii?Q?ghd9xqeXxoUYQFIT+sakoX5rsTsTF8smYfnEOC8yhfyGcMLncI7p0xs1m1kr?= =?us-ascii?Q?zuz6a+K7TtNWYukamNHc86hTBKVQ9z2gp/73IyiVNG/AoqBus7HDMpgqsEbA?= =?us-ascii?Q?3SUC4Oosq3XIaEujjt05UnBeH/8UpaT6Bhv247hPbdzUTLnA2MunKGgbx4Kb?= =?us-ascii?Q?+hMVCnLzk9sZP9vVl6JRwJjQ//Ih6zoTBKtM/WfJY8XoOEop1nMf2iypC794?= =?us-ascii?Q?Qe8AE3MHr+Lmw3NIuuobM5jyJvRjX/0dKgoko600S/JCCxETh4TaFLWZbkGS?= =?us-ascii?Q?RsnBvDsvPbSD1w9lpR67dOV1bqvOUaX+8XabZOwsK4fgMKJNYZQb9BAcld/h?= =?us-ascii?Q?Cs0cR3PLqnbIcbik9+k9zzlrFkEu4BG/GSOvQYhqwbl5Ma2v7svDv5QHnL0/?= =?us-ascii?Q?ZI93P15ymy7ib6JCqGdd37bkvHQS4ZN782/Pc5nZUBTmMafHqWJASYLvxvsj?= =?us-ascii?Q?wh0PlwxQzCWpJhrgaKX9QuGFSDITE24KO4rbPtOqYabCtf+nSrzJrDq+90Nu?= =?us-ascii?Q?mgsWyb41NBYI81XlKsrRXElRQ+AS9hFe2ag0nYHHuiMyCeIA7kPSxTaLeilc?= =?us-ascii?Q?clOwU6TEoZTFjH3CFRjm2kWiG/AqFC5zwKxO26oEKkaAGcYHLK6dq1j0xrpi?= =?us-ascii?Q?Gr1pAWFLlBYQTW2FB1wfcIQUTpa5L6s1y+q1VcupgS+Pct/nOEYtTpDAcsg3?= =?us-ascii?Q?K5rYBfjtwzHwk3LR/UzQhM?= X-Microsoft-Exchange-Diagnostics: 1;DB4PR04MB267;6:LSQo+dTKCxZ6HzRXomlVDUBk78A/2pQ17D71XGtxElMJoyLVAXc8gneYGM9ITyLUjJyPlMta8YHnhSdsRPX/LXaTZPYj2K+1DuZRF2toY16F97DPMYrr03HOU+spM7WEksUKYPQB7yQ8Bov7JWplBPo6w8jd7QZC2aze8ltvr1Y5mZeDGWUjx7ESUOM5JGmvRqO2E/LDcJ0mJ9iLREE2Juf95n6FE2xO5KzU/m/iHjTL4pKphBLDqdBmPNz97xvNonlSX/+pMW1OJVds9O/gsiEg9PbOpgMVgem7jIpu4bUoGX0yJHN72JE1QcjjgS54QdJ/HtB3ivH7mw48RJxH1tqqhhANdCiYhhAu+ISt6/YK0jSLFIaGvnxKmelMwIZA;5:WnZOskSiuuguFbD3AMXgwEKg/sutVOYhRhGQ7ZWcT3r2fKPaWYSiQZ+kjDqQELb2ZknxlXtXH85WO91m7IDIqiA8xwmdGT0K9tKyFAttfzyB/RX4rBv1oEyFHwN5hFdgN2H3QEG0z9zwx4/Fdp+mDg==;24:tEZvNonmQPBho89q7FAPt79P51I0vTX5kNv0zhDOBFyy/xkcJHf8jUkzIOXPJhV1ouZ1X73bbd3CosBMKr/VJNEQDEiC4kvj1x3nN/yJjQE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DB4PR04MB267;7:PJOB/WkaPuYm6nN6aoep8tgW0Zb3O2AC4p8i9h+1ftKYXh2eAGj5ZjO9I+oJePyEM30uwUgHJ55QS1FA6z5HVQW8+ltfI821oVOgyTZNZm6Eqv4anbwkv43ZwDhdjrNmUhAOGl1YI/3QIBgW3KXwlZ7xPgVpnvtRES/rE1l19WqCheOZrnDbRGL2do8zB4UgI6kp3lsnjESWBqV2SAgnLLGI/H1qfoNh24MS5cE95ghDZOODInfVpRoqKoYWroImQRPwWX4v6iIztD82vREwtsghMyj/ZGjuAL7+iQ1uP/BkTn2iYyMDO1BXAywN2wQjT1FzSa2I6fapBIPp7acyr5fg2uJldqXnpudaMEK3PUU= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Nov 2016 16:30:42.2968 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR04MB267 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org i.MX6QP added new register bit PROFILE_SEL in MADPCR0. need set it at perf start. Signed-off-by: Frank Li --- Change from V2 - V3 - Use MMDC_FLAG_PROFILE_SEL - Use flags instead of driver_data - fix commit message typo - add const - use u32 val. Change from V1 - 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..ba96bf9 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 MMDC_FLAG_PROFILE_SEL 0x1 + #define to_mmdc_pmu(p) container_of(p, struct mmdc_pmu, pmu) static int ddr_type; +struct fsl_mmdc_devtype_data { + unsigned int flags; +}; + +static const struct fsl_mmdc_devtype_data imx6q_data = { +}; + +static const struct fsl_mmdc_devtype_data imx6qp_data = { + .flags = MMDC_FLAG_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; + u32 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->flags & MMDC_FLAG_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