From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752323AbdHGHk0 (ORCPT ); Mon, 7 Aug 2017 03:40:26 -0400 Received: from mail-cys01nam02on0080.outbound.protection.outlook.com ([104.47.37.80]:65314 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752270AbdHGHkP (ORCPT ); Mon, 7 Aug 2017 03:40:15 -0400 Authentication-Results: spf=pass (sender IP is 149.199.60.100) smtp.mailfrom=xilinx.com; alien8.de; dkim=none (message not signed) header.d=none;alien8.de; dmarc=bestguesspass action=none header.from=xilinx.com; Subject: Re: [PATCH 1/5] edac: synopsys: Add platform specific structures ddrc controller To: Borislav Petkov , Michal Simek , Naga Sureshkumar Relli CC: , , =?UTF-8?Q?S=c3=b6ren_Brinkmann?= , Mauro Carvalho Chehab , , References: <60ff19f90adfd252cf296fe8988c614c4c3e43fd.1501848023.git.michal.simek@xilinx.com> <20170806051830.GC28006@nazgul.tnic> From: Michal Simek Message-ID: Date: Mon, 7 Aug 2017 09:39:57 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 MIME-Version: 1.0 In-Reply-To: <20170806051830.GC28006@nazgul.tnic> Content-Type: text/plain; charset="utf-8" Content-Language: en-US Content-Transfer-Encoding: 7bit X-RCIS-Action: ALLOW X-TM-AS-Product-Ver: IMSS-7.1.0.1224-8.1.0.1062-23242.005 X-TM-AS-User-Approved-Sender: Yes;Yes X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:149.199.60.100;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(39400400002)(39860400002)(39840400002)(39850400002)(39450400003)(39410400002)(2980300002)(438002)(189002)(199003)(24454002)(81166006)(83506001)(626005)(6636002)(23676002)(4001350100001)(6246003)(36386004)(6666003)(50466002)(65826007)(4326008)(86362001)(31686004)(31696002)(508600001)(305945005)(64126003)(53546010)(2950100002)(189998001)(106466001)(356003)(9786002)(33646002)(77096006)(54906002)(230700001)(76176999)(81156014)(50986999)(63266004)(54356999)(5660300001)(47776003)(2906002)(65806001)(65956001)(36756003)(8936002)(38730400002)(8676002)(229853002)(107986001)(5001870100001);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR0201MB1593;H:xsj-pvapsmtpgw02;FPR:;SPF:Pass;PTR:unknown-60-100.xilinx.com,xapps1.xilinx.com;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;CY1NAM02FT061;1:qVefFgXNCNJkgX2yfBYDI07v9LQcg3k0j/NCFtfMv8KIcqD5585hM8gzs/SeZRX9s/9ad/RUu7yex0r5IPAMz74h+9w4jKAgqW7VMpF6gum1P7NMc7K0REh+/0viRtV0G2mYT8LtJGylggR4wYzq+ikoey9UzF7Nm8UvkjtNYByYD6GupwNnM6bxgxrCx6uG2OYbC2tz359zjphwjKWKv2SpCe2uF6sFHGHbxH0wUE/iP64wJ44EdIhFJ5v4hZRFUMBPAoKwm5gvWdoNhdqKfX1H8ct0im12oVnqJs04HFC3yZVn0tJR4pVbOBbz/dGOoLSsda9zD05ViohT6aQXC673mKbyOGegAzT6N+ywbfsvvfbNGaw/NpJ+MHnQH01PwJ/VDpwrjRqi7z7c/KN8QCKm1k3AGgVb82cc+9nDFgCOv3ai6MRrwxQBgpBbpUx9+2Jb26qhZ0wOZY4zAKkkzpktI0hM0dYj9VgfmkBI9fV3JLkldV0N5/RwGT4f7S+dpVJ2SosRQkBjtgauf1U3QTYPAevQ3ZC/p3onHBtpXTT+0f3249hcFlZa5kTUDTOIbMYCQ6/eA2Am5iR7pTjyhuzAT56rgbj521W2cvITNJyBPlAXvIqMGoDUhjhmdikMGF8nhwqDcZqEz+yhGy9j/QyZehhaa21WhT0mpPgadqqqgQs1fs3IBOwN8ws+ttGR1zvjtJsdNrWtPNgoqdURq3fuX6ZM047ao5oTFYp1WLne0/IXXbgb3lkJsOaSOnYXSQIRQuTgkzaxfgGkKNUAGbgD4dBha3fKZnGYMWoH7AQIKBP+jsJZrJKJ/R7aDkQKxRIsdsN0IpQjpz+lrKETeg== X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 33d70c1d-aba2-4820-5dde-08d4dd678900 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(8251501002)(300000503095)(300135400095)(2017052603031)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:CY1PR0201MB1593; X-Microsoft-Exchange-Diagnostics: 1;CY1PR0201MB1593;3:35iltQmanS+XvCZHqigp8gqiOaRYlR5dcB0eRM9vnuiyD4X1wfHmK9DC39j4wO+fI5y8qsylQpbHfhJT3qEAsMXJisRP3M1GLc5S1+XVooC5fMRP33dX53QVnSOMSufO6sUnBrISnVktBqoqVyVM6sbvr23vq2x/UwZu3Q7xyTqOnZZE06U2hT6cokKgZ32p4ZZVKEohoXV50oqv7UXP6puQMBNsPWb0PCe+go7Kls5qPVbn4pgzyBbLJMuCDpSOD8rTC8W1dS8LzSL+grVf7m9/I718CZYUg1TEuobrzjmDfPK9Y+zygYS1UY3Kw7G3e2479YoBDUw5d/v2iovcz4NLA+SHqeeUsk5G9mGXTiE=;25:YC5JMX3ZFuUwQX7uNJ8H7DLSyBPvxDT1eh5ygQ6LacLuaL8Cu5nF4kWngxbyY6xUobR3nllsUtAj1E3SCk9Bz3LpIWl8o3kycYQ8lSwXW6EcRu+MJl93F5E1tUcnSOkx7uAF6eCvLfwMIggfGsZcFeZBddzH5q6UqhyF8fQVWS4dk43ioULjOB2tvQlXf1zorN50ej7UUnKDqOBxdQ5jFwul0cQCM+ou2Nt7VeQ4DssqaDXm+DVNWNV1HheFDe29kaFNNu1Nq/D2M9E4pf0nnKE1Wvm/jiayUj0UjJvzyuF3mgEsh0N7+NbJmPFT99ZVc6rM/MLb22WhGW/862fDLQ== X-MS-TrafficTypeDiagnostic: CY1PR0201MB1593: X-LD-Processed: 657af505-d5df-48d0-8300-c31994686c5c,ExtAddr X-Microsoft-Exchange-Diagnostics: 1;CY1PR0201MB1593;31:GUMrrOsRrg7f446VeTFNQ/8fmRgGnSpl8/ziXVC2hRVqmskGg5iiAySRNIn5eFnya5l6A97rgOkXd9mXWcKcgbjBoXH82IquCLaiINQXsV+iTzd9PnVf0Ta/tis4ESMVsLNLwssuOtjxJuIavD0hNlZscySN9GDUIdI9BFToUWOKrpJ1eBteACcvzf3cQ/ALQ2aqouvRREgnwgfvmrXp3ftUobYFm/rIrlZFumed+r4=;20:9Yv3fc2iWGNBmoBYJ6UP+vp195aAZPUSeeGXmE2dvUB6+NSP4orhPUlJu3gRaAwOh7Eekl/Z5mBYB/yD/odWbRMp5ohr315VAmpLLsoRr5eNHyNErhcOeSXtU7rRYw0gbDYU7Q/VkiT7OYKPZf0M6yfJ1QCpj8pjcQ9hKXyPpOAx9R9Lr8EhQ7UFftWcAbJEofMkxai8NV7Mmw925qYdi9Sxdsx3+RnjETTi6MZ5AJ0grBXCHMSVu9pu3UqwoE9g9/vvfuA9IVVEyo8xvgApWWL7aV22ao7dXETvrxMjRetGc5+VnLvh8xZEhIYQ2XZ0ST4FFLWLc4KdPByKMJzECBLTXxizjEPPLLtBkNILZ5A+jCHQM9wW7Bnu2QprLGNGgE7O8Kqg1FcMu6qbG43D3R8GihLJxNl+wk4VQFw8yU4PReQ1a6t6vqnAwVt09b4FeFNID6XDrG/Od0krrzfSK2VVUlSAko/sL2/q1Rf/Jp/HJauIfs3WAPBQdvAMjJZG X-Exchange-Antispam-Report-Test: UriScan:(192813158149592); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(13018025)(8121501046)(13016025)(5005006)(100000703101)(100105400095)(3002001)(10201501046)(93006095)(93004095)(6055026)(6041248)(201703131423075)(201703011903075)(201702281528075)(201703061421075)(20161123555025)(20161123558100)(20161123560025)(20161123564025)(20161123562025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:CY1PR0201MB1593;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:CY1PR0201MB1593; X-Microsoft-Exchange-Diagnostics: 1;CY1PR0201MB1593;4:A6fBN2hkGvaChJlkzaXPDc8edxGaUYw5WWJ1YSn6agAfUzoeComNVbVRzLCeavT/WYk9CQ5c/izE7jRyG69mHlalzCmYEPFzojTDQnOPoftWMc5J3116dB10xdMWC5AV3NKT0ZwDkGZBTipJHZ4/QvnZybG1ZjJdYCXrVmVtQBYLh+p83rURW27ipMWfkijgoLfKkA2XbiCvrh54eNItkvy3kYdDainOb9CpasiQ2ot86i2uSLI/DKOHDmfEAZJjzVRuKK6CzLE50hsY4objll4Arz4g8D9z+5C/tL96Hs8= X-Forefront-PRVS: 0392679D18 X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTFQUjAyMDFNQjE1OTM7MjM6U01KaVBncS9oU25kNysxNWJ0TjhpY3ZW?= =?utf-8?B?TlVpL0lpcEZkd1RHZi9ZTWd4TEh6TDdjZCtjU2dVd21WV3B3Y1hkalI5VGpX?= =?utf-8?B?UUFnYjU4RFA0YWNSUUU3RmhXMW1EL3U1aW9tSFNLa29PZmFPd3htaXduV2tx?= =?utf-8?B?L0orK1FGT0xCTlVZSHZrWFp3S1V4MU95dGRURVluK3hYR3pGTTFMYVcvQzY3?= =?utf-8?B?dzU2cWhZVU4vbHRIVzdlbEQydEdwblV1OUorRDdsdW9wcHpxVWhxdUxjR3h3?= =?utf-8?B?aHozMVV3R0JzZHJielV5N2thSldOVU05MkpKSEdjLy90MnVaRlJwc2F4OUxv?= =?utf-8?B?a1VTZTJmNWsyWWVPc1lOTktmZTQyRUFBYzhFd2VIT3p6aXZ2M0ozWjBpeW5Y?= =?utf-8?B?Rm9wS0YrVS9WZ1Vib2hlOWRMUnBPQi9UcWtyOTRZWjFIZkp1ZGlTemR0c2g4?= =?utf-8?B?ZWJiSVJSaWtNWldlQW10b01kb3FpUGlUTTZhRmY2cy8wN2dySGJsRkd3czJI?= =?utf-8?B?ZklvRXEvZE12VmdTV2lOOVRDR0JJaWdadTZ2dFlkamxacjhEZUx6OVRia3k2?= =?utf-8?B?enY0dW1iT3pRU0JXbGdKR3JXMkwwSmsrZWRpOUVNSHdZWDZqVlhKRVVYL0x0?= =?utf-8?B?OHhiMlZrRDhPb3FGb1RvbFd2djlGMHpiTHFFYTVBWUNLM0ZMM3ZOU2h2cWRL?= =?utf-8?B?Z2Y1T3NndzhoUjcrZ0FodWE3VC9TUkJ1YlVHYkk3VnBWdVJ5MjF5bVBGNUZs?= =?utf-8?B?WVQ1d2xwNlJCQ3ZiU2FNSkZuZDFLRm9WQlo2RFU3eVl1dklHdzNkNkEzMXZl?= =?utf-8?B?ZnByMnlFcEVNaloxYkNsRWVFZU03WWt0SVBJaGRqcjNib1h5cnAyWEcvZ0Fh?= =?utf-8?B?RSt0S2Y5b29ZQmRGS1JZaFdDRTVzd201TC9kL0poSmF1c2QzWEtmNlNic3JD?= =?utf-8?B?UFBsTkZyRmQ5ZStEdjYvaStmOFhHT09idUpUVk9PYXl6ZCtLL0xZb0tnQjJW?= =?utf-8?B?QUNGbnBHYU9idEJzZ2ptSFd5U1pzRzRMZmpacnJEdUZLVjdudnhjanVaZTlh?= =?utf-8?B?MVpUWXNNOHNkUEtZb0hLdE9RZURrYUUrWGdhU2ZSOURMMVdybm01NHI4M29L?= =?utf-8?B?a1dQODZRTWt0TThIYjI5K29la2IzRmNkYXVka25BS0dKZ3B6MUJwVUY3Rlhr?= =?utf-8?B?YjJyZjlDKzZtdUUvSU50cHR1VHh2eDRhWHh1bUMwMERNenovTFdMZnpIbHp5?= =?utf-8?B?cTRTc201UFBuekhCdHAyNzNXQ1JTaGE5L0pBeEYxY3JQQkNaYmNFbVdlM0Fm?= =?utf-8?B?b3BoVlFmczNPQ0lhSThabTl3SXhmZW11T1g0OVpad2IwdU4wTXMzRWVzRXV6?= =?utf-8?B?WWhtbUJZWXNya3FiZWl6VWlSbmhCQ1M5NFdzRjJNNXBCOFNnN2hMamRlTHBt?= =?utf-8?B?M3pYeUxZRDcyditQMGxFLzI4M0toQ0FkVGJCN0xhUjlVdUdvV0o5enlzSVl6?= =?utf-8?B?RVJ0enQ2N2dvSWpuQXFwMEswY3lKTXBlOVFqUU1ZNlJWYTVVdm1VMjNRazcr?= =?utf-8?B?d2Q0eEh4QjE1YTNVS0NWSklreHNNUzNXSm1WN0picEE0YXJldEtSY2pqWmhJ?= =?utf-8?B?b0FLYmVqa0dUQXA3eHQ3QXdUQTEvQ05iYyt4b0YzM05kOEJBN2JpSjFOVHpk?= =?utf-8?B?ZktheWRMRFdWcE5id3pIdDhldzA1VW8xVzEwcDNUSXo0cmNZR2tTMllHOGJN?= =?utf-8?B?NVc3elQ5R1NBc2ZWdzFOTk54WlJIS3BvL2ZzS3d4NENuOTBFeVJMYWRnNGZD?= =?utf-8?B?T0pSQnNYeFhOTnkrb0JUL21iRzBFNnpPLzQvTlBPUHBodWx4OGh4WERLZ0NP?= =?utf-8?Q?CsP/LFyB5R/ks=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR0201MB1593;6:LbfUYF8L7P0ZJAbzOnO2n90yNnaICuMIIgcbHLX+yxP4t9g5ydU88kOmZ3RxWZmdYqGOMD+PphhsuRNGDfunzEVGSkFzVvzDHMFDUuZY3ZGN7VyMnnM8Om8OI+giJoRicWYtSQpUPT2zM9iUFVmpmiYJ2/K31jpPKredJmZGDrDxkP9mYVZgNwJhFevNI90hPSwAvqIOcC35xJkOGFjF9Ybw3twiAbMlKHBnmJKo+XhRxIZnoLmQamFjabPNJuRRwiaPtQW4bmn5OSSGEAxGYJs+e1wKu6l2Dr4Acxaa58PQt14N42BhzkEzb+bLnG3C9x4unTys88bFnQvEwq9x6A==;5:+tIQYSFObzJTsqugIpUZojcuBaugYe72V1wycHw0ay5Q1ULkgRqeB3o72/DYV08P3sH1onh7N8OqCn+utjD+X1oKf+2PoalrI/edvFu0IdQ6JAnHTyHf8Y9FDWl61n6Z1Y6IdCx7rXXlSRcrPb8D0Q==;24:HGwrzIzmidosoZfEXd+2CZ9VWEsblNd61uOwJhl8Mnb7zeQge86vTxUCYAlz2o05+NaMKZB42otoFp9PI2vy8bHU/nju+8JzKzwjnPG0tfI=;7:qDChhxbrefjJ0/VwU3zOIiuLoAuJlrG4YtkuH7hBpnTZGQFHbTjmvASZns2IaHLYsDvYjEpBMVJ7wyVeyKvJzcG/YS52BJ0LWMCPTguKjcY0i92mygiHL2YEdDOEB/SE8gqaASVgqod2V9BurjX2RbfxkdfKpkdaczrRzoW1fwX6pw823w3Zwg+3cGemH6OrmH3f6KjoU1XuTf1Yaa50faVJQjSwxq6/EH3SCx2NWuA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Aug 2017 07:40:11.1580 (UTC) X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c;Ip=[149.199.60.100];Helo=[xsj-pvapsmtpgw02] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR0201MB1593 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 6.8.2017 07:18, Borislav Petkov wrote: > On Fri, Aug 04, 2017 at 02:00:23PM +0200, Michal Simek wrote: >> From: Naga Sureshkumar Relli > > That subject: > Subject: [PATCH 1/5] edac: synopsys: Add platform specific structures ddrc controller > > doesn't read like a proper sentence to me. Fixed in v2. > >> This patch adds platform specific structures, so that we can add > > "This patch" in a commit message is tautologically redundant. Fixed in v2. > >> different IP support later using quirks. >> >> Signed-off-by: Naga Sureshkumar Relli >> Signed-off-by: Michal Simek >> --- >> >> drivers/edac/synopsys_edac.c | 70 ++++++++++++++++++++++++++++++++++++-------- >> 1 file changed, 58 insertions(+), 12 deletions(-) >> >> diff --git a/drivers/edac/synopsys_edac.c b/drivers/edac/synopsys_edac.c >> index 1c01dec78ec3..65f3b04d5a87 100644 >> --- a/drivers/edac/synopsys_edac.c >> +++ b/drivers/edac/synopsys_edac.c >> @@ -22,6 +22,7 @@ >> #include >> #include >> #include >> +#include >> >> #include "edac_module.h" >> >> @@ -95,6 +96,9 @@ >> #define SCRUB_MODE_MASK 0x7 >> #define SCRUB_MODE_SECDED 0x4 >> >> +/* DDR ECC Quirks */ >> +#define DDR_ECC_INTR_SUPPORT BIT(0) >> + >> /** >> * struct ecc_error_info - ECC error log information >> * @row: Row number >> @@ -130,6 +134,7 @@ struct synps_ecc_status { >> * @baseaddr: Base address of the DDR controller >> * @message: Buffer for framing the event specific info >> * @stat: ECC status information >> + * @p_data: Pointer to platform data >> * @ce_cnt: Correctable Error count >> * @ue_cnt: Uncorrectable Error count >> */ >> @@ -137,11 +142,29 @@ struct synps_edac_priv { >> void __iomem *baseaddr; >> char message[SYNPS_EDAC_MSG_SIZE]; >> struct synps_ecc_status stat; >> + const struct synps_platform_data *p_data; >> u32 ce_cnt; >> u32 ue_cnt; >> }; >> >> /** >> + * struct synps_platform_data - synps platform data structure >> + * @synps_edac_geterror_info: function pointer to synps edac error info >> + * @synps_edac_get_mtype: function pointer to synps edac mtype >> + * @synps_edac_get_dtype: function pointer to synps edac dtype >> + * @synps_edac_get_eccstate: function pointer to synps edac eccstate > > "function pointer to" and then something, doesn't look like an optimal > explanation to me. How about: > > "Function which returns the DIMM type" > > and so on. Fixed in v2 > >> + * @quirks: to differentiate IPs >> + */ >> +struct synps_platform_data { >> + int (*synps_edac_geterror_info)(void __iomem *base, >> + struct synps_ecc_status *p); >> + enum mem_type (*synps_edac_get_mtype)(const void __iomem *base); >> + enum dev_type (*synps_edac_get_dtype)(const void __iomem *base); >> + bool (*synps_edac_get_eccstate)(void __iomem *base); >> + int quirks; >> +}; >> + >> +/** >> * synps_edac_geterror_info - Get the current ecc error info >> * @base: Pointer to the base address of the ddr memory controller >> * @p: Pointer to the synopsys ecc status structure >> @@ -242,7 +265,8 @@ static void synps_edac_check(struct mem_ctl_info *mci) >> struct synps_edac_priv *priv = mci->pvt_info; >> int status; >> >> - status = synps_edac_geterror_info(priv->baseaddr, &priv->stat); >> + status = priv->p_data->synps_edac_geterror_info(priv->baseaddr, >> + &priv->stat); >> if (status) >> return; >> >> @@ -372,10 +396,12 @@ static int synps_edac_init_csrows(struct mem_ctl_info *mci) >> for (j = 0; j < csi->nr_channels; j++) { >> dimm = csi->channels[j]->dimm; >> dimm->edac_mode = EDAC_FLAG_SECDED; >> - dimm->mtype = synps_edac_get_mtype(priv->baseaddr); >> + dimm->mtype = priv->p_data->synps_edac_get_mtype( >> + priv->baseaddr); >> dimm->nr_pages = (size >> PAGE_SHIFT) / csi->nr_channels; >> dimm->grain = SYNPS_EDAC_ERR_GRAIN; >> - dimm->dtype = synps_edac_get_dtype(priv->baseaddr); >> + dimm->dtype = priv->p_data->synps_edac_get_dtype( >> + priv->baseaddr); >> } >> } >> >> @@ -424,6 +450,21 @@ static int synps_edac_mc_init(struct mem_ctl_info *mci, >> return status; >> } >> >> +static const struct synps_platform_data zynq_edac_def = { >> + .synps_edac_geterror_info = synps_edac_geterror_info, >> + .synps_edac_get_mtype = synps_edac_get_mtype, >> + .synps_edac_get_dtype = synps_edac_get_dtype, >> + .synps_edac_get_eccstate = synps_edac_get_eccstate, >> + .quirks = 0, >> +}; > > Please make the actual function names and function pointer names > different. For example, the function pointer names don't need to have > the "synpc_" prefix as they're used all locally. > Fixed in v2 and v2 sent. Thanks, Michal