From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754077AbbCEIg0 (ORCPT ); Thu, 5 Mar 2015 03:36:26 -0500 Received: from cpsmtpb-ews06.kpnxchange.com ([213.75.39.9]:65004 "EHLO cpsmtpb-ews06.kpnxchange.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751390AbbCEIgY (ORCPT ); Thu, 5 Mar 2015 03:36:24 -0500 Message-ID: <1425544581.24292.194.camel@x220> Subject: Re: [PATCH v5 6/8] pinctrl: cygnus: add gpio/pinconf driver From: Paul Bolle To: Ray Jui Cc: Linus Walleij , Alexandre Courbot , Stephen Warren , Rob Herring , Pawel Moll , Mark Rutland , Ian Campbell , Kumar Gala , Grant Likely , Christian Daudt , Matt Porter , Florian Fainelli , Russell King , Arnd Bergmann , Scott Branden , Dmitry Torokhov , Anatol Pomazau , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-gpio@vger.kernel.org, bcm-kernel-feedback-list@broadcom.com, devicetree@vger.kernel.org Date: Thu, 05 Mar 2015 09:36:21 +0100 In-Reply-To: <1425543104.24292.185.camel@x220> References: <1425515756-321-1-git-send-email-rjui@broadcom.com> <1425515756-321-7-git-send-email-rjui@broadcom.com> <1425543104.24292.185.camel@x220> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4 (3.10.4-4.fc20) Mime-Version: 1.0 Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 05 Mar 2015 08:36:22.0091 (UTC) FILETIME=[7583A9B0:01D0571F] X-RcptDomain: vger.kernel.org Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 2015-03-05 at 09:11 +0100, Paul Bolle wrote: > On Wed, 2015-03-04 at 16:35 -0800, Ray Jui wrote: > > +MODULE_AUTHOR("Ray Jui "); > > +MODULE_DESCRIPTION("Broadcom Cygnus GPIO Driver"); > > +MODULE_LICENSE("GPL v2"); > > These three macros will be preprocessed away. (There's also > MODULE_DEVICE_TABLE. I don't yet know how that is handled in a > non-modular build, sorry.) It turns out MODULE_DEVICE_TABLE is _really_ preprocessed away. See include/linux/module.h: #ifdef MODULE /* Creates an alias so file2alias.c can find device table. */ #define MODULE_DEVICE_TABLE(type, name) \ extern const typeof(name) __mod_##type##__##name##_device_table \ __attribute__ ((unused, alias(__stringify(name)))) #else /* !MODULE */ #define MODULE_DEVICE_TABLE(type, name) #endif Did I get that right? (I knew the other three MODULE_* macros are handled in slightly more complicated way, but the effect is basically that they are preprocessed away.) Paul Bolle