Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S941984AbcJYVBF (ORCPT ); Tue, 25 Oct 2016 17:01:05 -0400 Received: from mail-db5eur01on0076.outbound.protection.outlook.com ([104.47.2.76]:28720 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S936500AbcJYVBA (ORCPT ); Tue, 25 Oct 2016 17:01:00 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=frank.li@nxp.com; From: Frank Li To: , CC: , , , , , , , , Frank Li Subject: [PATCH 1/2] ARM: imx: mmdc perf function support i.MX6QP Date: Tue, 25 Oct 2016 16:26:56 -0500 Message-ID: <1477430817-20381-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: DM5PR09CA0048.namprd09.prod.outlook.com (10.172.184.162) To AMSPR04MB263.eurprd04.prod.outlook.com (10.242.227.151) X-MS-Office365-Filtering-Correlation-Id: aa7361ae-8f9a-4e28-4941-08d3fd15438c X-Microsoft-Exchange-Diagnostics: 1;AMSPR04MB263;2:pSHQl0hBXHs4b+Wd4ppFS3+NnHfrSI7zJ0NGAgoboqDO4rX1LXS8fzAlzkmKFtaQCsUl2FIS34+7YR1PBBRdtn4Oe/L0IR49vMAOeQtZT5uh/DHdqWNWkvCDUCZo6pKyesgEXQjEG3a+BN+4gaUhnxzPaIaAvrUJFZF3fz9VmuLb54OuEN9qh6zSNS1+3aAdqexZyh4/x6JOJK6YDbr/XA==;3:lcF+9mRPSBuHrICp2jSCcVdo2aJquiwJnyJp7780nf45NoWmDHLnyX9VCdOK+MvSitVO04RfB/oieIF+bg3KP8PafFlJ9DE3sRx2u/x72fc9EY3UNr8sRSWbikneVsmQng46Qc8ICwWB9HhE+GmNAw==;25:9W2E0KLNcrbB4jajPN85PYpBIgSZ7jCXh+rfNV4srvmN4A7/P4AMrC39gOqtYex9pm97unlfd7ihGP0OgS0B8kdaJRweoW5rxJq+x4Ce4KivZaqXSxmj9qvqfwUVjsapKgPyAZVF/qnTb2km7EyG1R5bpQEw+YeIvcuAR00UybM+L00V9DJmU/2YdjReGiAfIUQmD8wq5rIGVGZlqD2ap6nQs1Rf78ldDqMsK+NRnSJFc5n3s1LJqty0Xqoqa7t+MfQnOAZfYDrMzZB4PGVzXzMbNRRp6zZchElQ/Fo7IyPVyP5MvYC+xEGxz0GbTEOtUvVxo0NtAVHiKDzDlZwY59qR+t6ns0O2GWGq6vcAyRIieXpYb9YEXPUa+B2TJB4MR3F8SNx5Q/SGKInfTqgn0k3qZxLaVtTdysKi2GIx+jhWEqMm9wQydijSgtjvUg1G X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AMSPR04MB263; X-Microsoft-Exchange-Diagnostics: 1;AMSPR04MB263;31:qK/l+mnwYviBUKiaqZWgc8St5atOB0PifpxZhmCqQPgBCNkxdwoKCl7zTJwn54QB97+LMb3Q5dkFjd0SB/QqxwKKpz94dRkKmPtM/NSKkA9YzUQ3XxFHXxE9PzRaWmUuHlRyKpOuPWVq5rewLYL0wdL7Z0G4LV1afrD9masAxWJK8tJLcr5y53ciT4IhtFu/rPv/rKhXaW7v4N6txlWx1SMxGJmqHiJUSZWiHbV2Aj6yNsdbbV+Nf/lnDi9VFChs4GKZQrW4kYtmUgJUDmVaLw==;20:oS2Jc/aeHcFLq9ZRYzYboZIz+/Cx5UqJZoBEBVkgHb96yvQeyY9k8G5wBTOBP0Zh3dxywqkEzmrR6aNHdJWEAIoEm5QCdQJv8rU9Y9a82M0cm3kCTTN9rZpjlGHszdlTmg5VXS8aoyn/e/1pfOeLWw+DMsw5ORA7MhOOZxFrWK/LfLzkW0XvAlh0S69IV0Wx9EhZheVDE7Nb3HzSfRsXD3LvtBYnNtpu+u/uoQCOMh/l3TJmWXri7oEO62YvrKqOlOZoPOkvPWUBOaFLh7W5idFePA7C601xiOUvNamipL5SdYMqlIiPNqkEGn1ZdK9/AGzcdbGbkiX/1PYsKHmvJj2se4U35Tlo/EgGcvQSeXS4JunFdD8DgqC3PlX69zOvabCuHh3/98rMMyAU2UaWcq3GdFJBpY6lEieOw/oVzsuyEfwNLWnBBK21wQ3fxgXCswVYbyhh5tc7gINWj0tjd+XGTnbtMR1zaSYk7A5Y9CT4sWHZYSKr8f1paSKhpVJv X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6045058)(6040176)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026)(6046058)(6072064);SRVR:AMSPR04MB263;BCL:0;PCL:0;RULEID:;SRVR:AMSPR04MB263; X-Microsoft-Exchange-Diagnostics: 1;AMSPR04MB263;4:AruALJOJFCUrbOp3PcpNH3fhGFjtyHLmiIFy4wurT663au4Lt76szS86cKm9HMi8fK4oBtdvmRcGfof6kBJiCos20uhd2Loh6upTqSa12Srh0QYxf4C7AiJQEOlOqrzrkpNq4Nv+ZdQo80vSP0/Mhj2NWzwo/M1h2jC32dz1cYFI+oEFDVR627u16+Tc2FAYo1xempB6+1mfQY113xCr3tdZCdicqgv0UEsCPNh5yc+tVNecKeIeHbscf8k7LOKRZ3xpASLTLmRI7uJjALDvlsYYeJICETrwtK6rfMB6bFSefMD3SKqPzwMFBRo40A7ETsIhH0lgrp9DHYIg6TCSWeO1h4A6z9/xAbLRNulzV7RmWRjeLpVeJ+bR2erxy3lp5JqZs94NYFNL+LWLdeXXYsxHbptZqZWE0mdRNod06C1g+PQsve0/nYYWJOD+F32ONnBF5If4bLMtJyh4EJgwVE4P0Miax0XBqm93t8+xmVQOm29F6elS69pYreXJ/Ievai5Oy1Wed+s4OaPEs+7QjQ== X-Forefront-PRVS: 01068D0A20 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(7916002)(199003)(189002)(19580405001)(92566002)(105586002)(19580395003)(7736002)(97736004)(47776003)(106356001)(305945005)(229853001)(6666003)(36756003)(5001770100001)(5660300001)(189998001)(77096005)(66066001)(2906002)(50466002)(6116002)(3846002)(81156014)(81166006)(68736007)(86362001)(5003940100001)(586003)(48376002)(8676002)(4326007)(50226002)(50986999)(7846002)(42186005)(101416001);DIR:OUT;SFP:1101;SCL:1;SRVR:AMSPR04MB263;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;AMSPR04MB263;23:X1wFgdkx+r2Q+cEJASqpcsa88/CHnQtwKs7j5NHjmX?= =?us-ascii?Q?O/dgfCjahq3GAJ84XrHZK3bmplpG0cF2TKP0ASP98Qpek+fefDpyampEVCLb?= =?us-ascii?Q?h0zGaI8HOL2iSDoSQXzc3ynptWxoCoVPSYTvrRY282ALfx9JYHMUl40fdJQS?= =?us-ascii?Q?G4bzCrG8WMeIHu6v5Gv8e1uRF9jZqsY3BLbqZ8zv7mgz9cNDoR2nf6e3SjdY?= =?us-ascii?Q?KxFuAI80+KVDi5pk2p5FcWMbqu9ydfhxpvqQOGAv1sNBwhUweyfCdiwnCeKG?= =?us-ascii?Q?9jqoFWIMUaSVrZ8negfAZK5Rj8iNXKg0/ZjCxydSOLHX9kZowIbn0ik5+1bF?= =?us-ascii?Q?tn7IQBP8KDfch89GKQOagRo2asvcOR8K07BsK5GJEVCUfBh80VGCrmsSMd+m?= =?us-ascii?Q?iEjmQ4n4TCZJleW8ofPorg33nu3xd1DwkRwmhlJEjLB/8iXbcYfJuj1UJ6Gz?= =?us-ascii?Q?StBAAPK63MVT8qvTxqTmhvep/1jlfnF99UnKN3Rfw1ME4qoS+JzayxVK81Au?= =?us-ascii?Q?nuAZdJE82am0a85EvXkr84G/jbFeeQM3Ld6821ba9WdFlCaAbLOXdFBqmKi4?= =?us-ascii?Q?lqEJolpivAMkLXGN8DESwOBsscKfayzyEiit9/rrR181yOZ+eRGr5YIHl/lm?= =?us-ascii?Q?UZm7ZPtKnm/pLCU330v7Sye9DjzsUj2qgy70T1LhfBDVt0PNNl1zd2Ydoy+J?= =?us-ascii?Q?EglYv/ykYlOJkqYOzScPSbp/v/cwVI6PMt/caNDgWpiZmHMZgoCDgb44CHvY?= =?us-ascii?Q?fwLelixFupz5sukWJAsCAA8N5DYTC1ldalM2923A7e8K1bZSwXwMIXo6LEM5?= =?us-ascii?Q?Jih5ofZes+Yu259zeEPBKyTY//SRjMWo1OH0GUaaRfRJH6zwfUZ4oZqL5ZmR?= =?us-ascii?Q?Plpqh3xND69rlc1Lfv8o2gQoTcVnW9lWaJhlaGUN5weDwltgwvY2P4aeWlYy?= =?us-ascii?Q?GENCiqW9X6irppLANkFFeKNWdaFp94psMaL9melVmUXd7FVUtdouWxnE9xgc?= =?us-ascii?Q?LVegK+n0GLPmCGQByOQtnSmHy8zba9W3Ek3y3KpSwXJQ=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;AMSPR04MB263;6:mcSu2N83ATYlrlnQz3S4kBmXNUfVI2QX9JUt1lCZ9Z6ObYtWxd8phIEXH974HRAAgGVgKlCH7OpfJ8TqYS1A2f4k1YFeHY9XvgoOdt9jc07MA0e+Tb8DV4ub5EQ+M1VUBewWpSH3kpGF92ZUecs14WH0pXXGOY+np/teCqwdKRL2sC8xvPnByxyWAQmUXqO6C5R1cCRf2VSMb4IeTnsEkU/hQmXR3s1gxqOWVYm3ChBG9uMdKJcKx/iXkHN6zi28sk6e2Jz1YSYmD6eb3amFKNvKuuz9sKUlNcd6aIQchKUkVmucmEaPlzLlBLiOjUZ5dVogQhM3M5Mj4YvnAyAsFmNT9NQQiU68XJMRQK4jusI=;5:CLKMKk2+buJQI7fJzkfleEyWhnVX5xjnzwthQ15vuUplpa9MZlK3iqwcfTcWeLXohiU/C/jeEuZPB4GGcouilIfwWankmBVG9o+/wdjkX7nPuyQo1MAVm2sw7nqCYykuWgiz6V3/j7i98yeqmcQPGg==;24:AXHJl8aV/HAuBZd9n9pObsStTdAZtJNWkGV1EeSyNcPpvwLZ1XAE84kH+nDMkh2b/g4ZzQ1yGyin8VmdWJf7m+T+0dGzLeeMOBJUfLMFsRM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;AMSPR04MB263;7:wgF39guUC5V1b8B44928eVP32xEtYcBXxF97LMjUiDCD3ixbHKOAb92xiVl5KAj5zz7gUhTPSZcbmdpeVRzfQ0MiUvgd6yMD9TVdD4flYWSgtGfICfdt+q4bxbU0Ysgtk0y0kK8LVfWOyJ+0zcekfpvpdPgQXJ+tRMke7R/zDPRlk/ztjrZ9ygiJmENiEd77y5KFg4uluUrpSsirCUVmXzO8aV0DzObZvmY8sd3waHUHUPpSBmbA9pYWX8vSf4DJH1H0D5f5kVZ8SW58PBxuYl7FdgggFaJ93AcLvjpeSAoBhE/SafNdU3LUwdYW1wAQtBuzHRK68B/U4EP2GZYnNLFmRNEcepxHZTEqW02x1Lc= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Oct 2016 20:26:49.0835 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMSPR04MB263 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3257 Lines: 119 i.MX6QP added new reigster bit PROFILE_SEL in MADPCR0. need set it at perf start. Signed-off-by: Frank Li --- arch/arm/mach-imx/mmdc.c | 45 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/arch/arm/mach-imx/mmdc.c b/arch/arm/mach-imx/mmdc.c index d82d14c..d833b87 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,36 @@ #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; +enum fsl_mmdc_devtype { + FSL_MMDC_IMX6Q, + FSL_MMDC_IMX6QP, +}; + +struct fsl_mmdc_devtype_data { + enum fsl_mmdc_devtype devtype; + int driver_data; +}; + +static struct fsl_mmdc_devtype_data imx6q_data = { + .devtype = FSL_MMDC_IMX6Q, +}; + +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 +110,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 +335,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 +350,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 +470,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 +486,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 +562,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