lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <201901081318.SlxJVtvv%fengguang.wu@intel.com>
Date:   Tue, 8 Jan 2019 13:54:02 +0800
From:   kbuild test robot <lkp@...el.com>
To:     Lubomir Rintel <lkundrak@...sk>
Cc:     kbuild-all@...org, Andy Shevchenko <andy@...radead.org>,
        Darren Hart <dvhart@...radead.org>,
        platform-driver-x86@...r.kernel.org,
        James Cameron <quozl@...top.org>,
        Mark Rutland <mark.rutland@....com>,
        Pavel Machek <pavel@....cz>, Rob Herring <robh+dt@...nel.org>,
        Sebastian Reichel <sre@...nel.org>, x86@...nel.org,
        devicetree@...r.kernel.org, linux-pm@...r.kernel.org,
        linux-kernel@...r.kernel.org, Lubomir Rintel <lkundrak@...sk>
Subject: Re: [PATCH v3 04/16] Platform: OLPC: Move OLPC config symbol out of
 x86 tree

Hi Lubomir,

I love your patch! Yet something to improve:

[auto build test ERROR on linus/master]
[also build test ERROR on v5.0-rc1 next-20190107]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Lubomir-Rintel/Add-support-for-OLPC-XO-1-75-Embedded-Controller/20190108-114514
config: i386-allmodconfig (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All error/warnings (new ones prefixed by >>):

>> sound/pci/cs5535audio/cs5535audio_olpc.c:28:6: error: redefinition of 'olpc_analog_input'
    void olpc_analog_input(struct snd_ac97 *ac97, int on)
         ^~~~~~~~~~~~~~~~~
   In file included from sound/pci/cs5535audio/cs5535audio_olpc.c:19:0:
   sound/pci/cs5535audio/cs5535audio.h:131:20: note: previous definition of 'olpc_analog_input' was here
    static inline void olpc_analog_input(struct snd_ac97 *ac97, int on) { }
                       ^~~~~~~~~~~~~~~~~
>> sound/pci/cs5535audio/cs5535audio_olpc.c:51:6: error: redefinition of 'olpc_mic_bias'
    void olpc_mic_bias(struct snd_ac97 *ac97, int on)
         ^~~~~~~~~~~~~
   In file included from sound/pci/cs5535audio/cs5535audio_olpc.c:19:0:
   sound/pci/cs5535audio/cs5535audio.h:132:20: note: previous definition of 'olpc_mic_bias' was here
    static inline void olpc_mic_bias(struct snd_ac97 *ac97, int on) { }
                       ^~~~~~~~~~~~~
>> sound/pci/cs5535audio/cs5535audio_olpc.c:137:6: error: redefinition of 'olpc_prequirks'
    void olpc_prequirks(struct snd_card *card,
         ^~~~~~~~~~~~~~
   In file included from sound/pci/cs5535audio/cs5535audio_olpc.c:19:0:
   sound/pci/cs5535audio/cs5535audio.h:124:20: note: previous definition of 'olpc_prequirks' was here
    static inline void olpc_prequirks(struct snd_card *card,
                       ^~~~~~~~~~~~~~
   sound/pci/cs5535audio/cs5535audio_olpc.c: In function 'olpc_prequirks':
>> sound/pci/cs5535audio/cs5535audio_olpc.c:144:6: error: implicit declaration of function 'olpc_board_at_least' [-Werror=implicit-function-declaration]
     if (olpc_board_at_least(olpc_board_pre(0xb3)))
         ^~~~~~~~~~~~~~~~~~~
>> sound/pci/cs5535audio/cs5535audio_olpc.c:144:26: error: implicit declaration of function 'olpc_board_pre'; did you mean 'olpc_mic_put'? [-Werror=implicit-function-declaration]
     if (olpc_board_at_least(olpc_board_pre(0xb3)))
                             ^~~~~~~~~~~~~~
                             olpc_mic_put
   sound/pci/cs5535audio/cs5535audio_olpc.c: At top level:
>> sound/pci/cs5535audio/cs5535audio_olpc.c:148:5: error: redefinition of 'olpc_quirks'
    int olpc_quirks(struct snd_card *card, struct snd_ac97 *ac97)
        ^~~~~~~~~~~
   In file included from sound/pci/cs5535audio/cs5535audio_olpc.c:19:0:
   sound/pci/cs5535audio/cs5535audio.h:126:19: note: previous definition of 'olpc_quirks' was here
    static inline int olpc_quirks(struct snd_card *card, struct snd_ac97 *ac97)
                      ^~~~~~~~~~~
>> sound/pci/cs5535audio/cs5535audio_olpc.c:189:6: error: redefinition of 'olpc_quirks_cleanup'
    void olpc_quirks_cleanup(void)
         ^~~~~~~~~~~~~~~~~~~
   In file included from sound/pci/cs5535audio/cs5535audio_olpc.c:19:0:
   sound/pci/cs5535audio/cs5535audio.h:130:20: note: previous definition of 'olpc_quirks_cleanup' was here
    static inline void olpc_quirks_cleanup(void) { }
                       ^~~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors
--
   In file included from include/linux/export.h:45:0,
                    from include/linux/linkage.h:7,
                    from include/linux/kernel.h:7,
                    from drivers/staging/olpc_dcon/olpc_dcon.c:13:
   drivers/staging/olpc_dcon/olpc_dcon.c: In function 'dcon_bus_stabilize':
>> drivers/staging/olpc_dcon/olpc_dcon.c:141:10: error: implicit declaration of function 'olpc_board_at_least' [-Werror=implicit-function-declaration]
      BUG_ON(olpc_board_at_least(olpc_board(0xc2)));
             ^
   include/linux/compiler.h:77:42: note: in definition of macro 'unlikely'
    # define unlikely(x) __builtin_expect(!!(x), 0)
                                             ^
>> drivers/staging/olpc_dcon/olpc_dcon.c:141:3: note: in expansion of macro 'BUG_ON'
      BUG_ON(olpc_board_at_least(olpc_board(0xc2)));
      ^~~~~~
>> drivers/staging/olpc_dcon/olpc_dcon.c:141:30: error: implicit declaration of function 'olpc_board'; did you mean 'olpc_ec_cmd'? [-Werror=implicit-function-declaration]
      BUG_ON(olpc_board_at_least(olpc_board(0xc2)));
                                 ^
   include/linux/compiler.h:77:42: note: in definition of macro 'unlikely'
    # define unlikely(x) __builtin_expect(!!(x), 0)
                                             ^
>> drivers/staging/olpc_dcon/olpc_dcon.c:141:3: note: in expansion of macro 'BUG_ON'
      BUG_ON(olpc_board_at_least(olpc_board(0xc2)));
      ^~~~~~
   cc1: some warnings being treated as errors
--
   arch/x86/platform/olpc/olpc-xo15-sci.c: In function 'process_sci_queue':
>> arch/x86/platform/olpc/olpc-xo15-sci.c:106:7: error: implicit declaration of function 'olpc_ec_sci_query'; did you mean 'process_sci_queue'? [-Werror=implicit-function-declaration]
      r = olpc_ec_sci_query(&data);
          ^~~~~~~~~~~~~~~~~
          process_sci_queue
   arch/x86/platform/olpc/olpc-xo15-sci.c: In function 'xo15_sci_add':
>> arch/x86/platform/olpc/olpc-xo15-sci.c:174:2: error: implicit declaration of function 'olpc_ec_mask_write'; did you mean 'olpc_ec_wakeup_set'? [-Werror=implicit-function-declaration]
     olpc_ec_mask_write(EC_SCI_SRC_ALL);
     ^~~~~~~~~~~~~~~~~~
     olpc_ec_wakeup_set
   cc1: some warnings being treated as errors
--
   arch/x86/platform/olpc/olpc.c:189:6: error: redefinition of 'olpc_ec_wakeup_set'
    void olpc_ec_wakeup_set(u16 value)
         ^~~~~~~~~~~~~~~~~~
   In file included from arch/x86/platform/olpc/olpc.c:27:0:
   arch/x86/include/asm/olpc.h:86:20: note: previous definition of 'olpc_ec_wakeup_set' was here
    static inline void olpc_ec_wakeup_set(u16 value) { }
                       ^~~~~~~~~~~~~~~~~~
   arch/x86/platform/olpc/olpc.c:195:6: error: redefinition of 'olpc_ec_wakeup_clear'
    void olpc_ec_wakeup_clear(u16 value)
         ^~~~~~~~~~~~~~~~~~~~
   In file included from arch/x86/platform/olpc/olpc.c:27:0:
   arch/x86/include/asm/olpc.h:87:20: note: previous definition of 'olpc_ec_wakeup_clear' was here
    static inline void olpc_ec_wakeup_clear(u16 value) { }
                       ^~~~~~~~~~~~~~~~~~~~
   arch/x86/platform/olpc/olpc.c:205:6: error: redefinition of 'olpc_ec_wakeup_available'
    bool olpc_ec_wakeup_available(void)
         ^~~~~~~~~~~~~~~~~~~~~~~~
   In file included from arch/x86/platform/olpc/olpc.c:27:0:
   arch/x86/include/asm/olpc.h:89:20: note: previous definition of 'olpc_ec_wakeup_available' was here
    static inline bool olpc_ec_wakeup_available(void)
                       ^~~~~~~~~~~~~~~~~~~~~~~~
   arch/x86/platform/olpc/olpc.c: In function 'olpc_ec_wakeup_available':
>> arch/x86/platform/olpc/olpc.c:224:37: error: implicit declaration of function 'olpc_board_pre' [-Werror=implicit-function-declaration]
     if (olpc_platform_info.boardrev >= olpc_board_pre(0xd0)) /* XO-1.5 */
                                        ^~~~~~~~~~~~~~
   arch/x86/platform/olpc/olpc.c: In function 'olpc_init':
>> arch/x86/platform/olpc/olpc.c:377:7: error: implicit declaration of function 'olpc_ofw_present'; did you mean 'olpc_ofw_detect'? [-Werror=implicit-function-declaration]
     if (!olpc_ofw_present() || !platform_detect())
          ^~~~~~~~~~~~~~~~
          olpc_ofw_detect
>> arch/x86/platform/olpc/olpc.c:382:3: error: implicit declaration of function 'olpc_ec_driver_register'; did you mean 'platform_driver_register'? [-Werror=implicit-function-declaration]
      olpc_ec_driver_register(&ec_xo1_driver, NULL);
      ^~~~~~~~~~~~~~~~~~~~~~~
      platform_driver_register
>> arch/x86/platform/olpc/olpc.c:388:6: error: implicit declaration of function 'olpc_board_at_least' [-Werror=implicit-function-declaration]
     if (olpc_board_at_least(olpc_board(0xb1)))
         ^~~~~~~~~~~~~~~~~~~
>> arch/x86/platform/olpc/olpc.c:388:26: error: implicit declaration of function 'olpc_board'; did you mean 'olpc_init'? [-Werror=implicit-function-declaration]
     if (olpc_board_at_least(olpc_board(0xb1)))
                             ^~~~~~~~~~
                             olpc_init
   arch/x86/platform/olpc/olpc.c: At top level:
>> arch/x86/platform/olpc/olpc.c:408:1: warning: data definition has no type or storage class
    postcore_initcall(olpc_init);
    ^~~~~~~~~~~~~~~~~
>> arch/x86/platform/olpc/olpc.c:408:1: error: type defaults to 'int' in declaration of 'postcore_initcall' [-Werror=implicit-int]
>> arch/x86/platform/olpc/olpc.c:408:1: warning: parameter names (without types) in function declaration
   arch/x86/platform/olpc/olpc.c:373:19: warning: 'olpc_init' defined but not used [-Wunused-function]
    static int __init olpc_init(void)
                      ^~~~~~~~~
   arch/x86/platform/olpc/olpc.c:42:19: warning: 'olpc_ec_timeout_set' defined but not used [-Wunused-function]
    static int __init olpc_ec_timeout_set(char *str)
                      ^~~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors
--
>> arch/x86/platform/olpc/olpc_ofw.c:23:13: error: redefinition of 'setup_olpc_ofw_pgd'
    void __init setup_olpc_ofw_pgd(void)
                ^~~~~~~~~~~~~~~~~~
   In file included from arch/x86/platform/olpc/olpc_ofw.c:11:0:
   arch/x86/include/asm/olpc_ofw.h:34:20: note: previous definition of 'setup_olpc_ofw_pgd' was here
    static inline void setup_olpc_ofw_pgd(void) { }
                       ^~~~~~~~~~~~~~~~~~
>> arch/x86/platform/olpc/olpc_ofw.c:92:13: error: redefinition of 'olpc_ofw_detect'
    void __init olpc_ofw_detect(void)
                ^~~~~~~~~~~~~~~
   In file included from arch/x86/platform/olpc/olpc_ofw.c:11:0:
   arch/x86/include/asm/olpc_ofw.h:33:20: note: previous definition of 'olpc_ofw_detect' was here
    static inline void olpc_ofw_detect(void) { }
                       ^~~~~~~~~~~~~~~
--
   arch/x86/platform/olpc/olpc_dt.c: In function 'olpc_dt_getsibling':
>> arch/x86/platform/olpc/olpc_dt.c:34:6: error: implicit declaration of function 'olpc_ofw' [-Werror=implicit-function-declaration]
     if (olpc_ofw("peer", args, res) || (s32)node == -1)
         ^~~~~~~~
   arch/x86/platform/olpc/olpc_dt.c: In function 'olpc_dt_fixup':
>> arch/x86/platform/olpc/olpc_dt.c:250:19: error: implicit declaration of function 'olpc_board_pre' [-Werror=implicit-function-declaration]
     if (board_rev >= olpc_board_pre(0xd0)) {
                      ^~~~~~~~~~~~~~
   arch/x86/platform/olpc/olpc_dt.c: At top level:
>> arch/x86/platform/olpc/olpc_dt.c:268:13: error: redefinition of 'olpc_dt_build_devicetree'
    void __init olpc_dt_build_devicetree(void)
                ^~~~~~~~~~~~~~~~~~~~~~~~
   In file included from arch/x86/platform/olpc/olpc_dt.c:24:0:
   arch/x86/include/asm/olpc_ofw.h:35:20: note: previous definition of 'olpc_dt_build_devicetree' was here
    static inline void olpc_dt_build_devicetree(void) { }
                       ^~~~~~~~~~~~~~~~~~~~~~~~
   arch/x86/platform/olpc/olpc_dt.c: In function 'olpc_dt_build_devicetree':
>> arch/x86/platform/olpc/olpc_dt.c:272:7: error: implicit declaration of function 'olpc_ofw_is_installed' [-Werror=implicit-function-declaration]
     if (!olpc_ofw_is_installed())
          ^~~~~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors
--
   drivers/input/mouse/hgpk.c: In function 'hgpk_reconnect':
>> drivers/input/mouse/hgpk.c:763:6: error: implicit declaration of function 'olpc_board_at_least' [-Werror=implicit-function-declaration]
     if (olpc_board_at_least(olpc_board(0xb2)))
         ^~~~~~~~~~~~~~~~~~~
>> drivers/input/mouse/hgpk.c:763:26: error: implicit declaration of function 'olpc_board'; did you mean 'Elf_Word'? [-Werror=implicit-function-declaration]
     if (olpc_board_at_least(olpc_board(0xb2)))
                             ^~~~~~~~~~
                             Elf_Word
   cc1: some warnings being treated as errors

vim +/olpc_analog_input +28 sound/pci/cs5535audio/cs5535audio_olpc.c

c8974be546 Jordan Crouse  2008-11-06   17  
c8974be546 Jordan Crouse  2008-11-06   18  #include <asm/olpc.h>
57d4bf6d8e Jaya Kumar     2008-11-06  @19  #include "cs5535audio.h"
57d4bf6d8e Jaya Kumar     2008-11-06   20  
3c55494670 Andres Salomon 2009-12-14   21  #define DRV_NAME "cs5535audio-olpc"
3c55494670 Andres Salomon 2009-12-14   22  
d6276b7802 Andres Salomon 2008-11-06   23  /*
d6276b7802 Andres Salomon 2008-11-06   24   * OLPC has an additional feature on top of the regular AD1888 codec features.
d6276b7802 Andres Salomon 2008-11-06   25   * It has an Analog Input mode that is switched into (after disabling the
d6276b7802 Andres Salomon 2008-11-06   26   * High Pass Filter) via GPIO.  It is supported on B2 and later models.
d6276b7802 Andres Salomon 2008-11-06   27   */
d6276b7802 Andres Salomon 2008-11-06  @28  void olpc_analog_input(struct snd_ac97 *ac97, int on)
d6276b7802 Andres Salomon 2008-11-06   29  {
d6276b7802 Andres Salomon 2008-11-06   30  	int err;
d6276b7802 Andres Salomon 2008-11-06   31  
0fb497f5b6 Andres Salomon 2008-11-06   32  	if (!machine_is_olpc())
0fb497f5b6 Andres Salomon 2008-11-06   33  		return;
0fb497f5b6 Andres Salomon 2008-11-06   34  
d6276b7802 Andres Salomon 2008-11-06   35  	/* update the High Pass Filter (via AC97_AD_TEST2) */
d6276b7802 Andres Salomon 2008-11-06   36  	err = snd_ac97_update_bits(ac97, AC97_AD_TEST2,
d6276b7802 Andres Salomon 2008-11-06   37  			1 << AC97_AD_HPFD_SHIFT, on << AC97_AD_HPFD_SHIFT);
d6276b7802 Andres Salomon 2008-11-06   38  	if (err < 0) {
00980aa9c7 Takashi Iwai   2014-02-25   39  		dev_err(ac97->bus->card->dev,
00980aa9c7 Takashi Iwai   2014-02-25   40  			"setting High Pass Filter - %d\n", err);
d6276b7802 Andres Salomon 2008-11-06   41  		return;
d6276b7802 Andres Salomon 2008-11-06   42  	}
d6276b7802 Andres Salomon 2008-11-06   43  
d6276b7802 Andres Salomon 2008-11-06   44  	/* set Analog Input through GPIO */
3c55494670 Andres Salomon 2009-12-14   45  	gpio_set_value(OLPC_GPIO_MIC_AC, on);
d6276b7802 Andres Salomon 2008-11-06   46  }
57d4bf6d8e Jaya Kumar     2008-11-06   47  
bf1e527835 Andres Salomon 2008-11-06   48  /*
bf1e527835 Andres Salomon 2008-11-06   49   * OLPC XO-1's V_REFOUT is a mic bias enable.
bf1e527835 Andres Salomon 2008-11-06   50   */
bf1e527835 Andres Salomon 2008-11-06  @51  void olpc_mic_bias(struct snd_ac97 *ac97, int on)
bf1e527835 Andres Salomon 2008-11-06   52  {
bf1e527835 Andres Salomon 2008-11-06   53  	int err;
bf1e527835 Andres Salomon 2008-11-06   54  
0fb497f5b6 Andres Salomon 2008-11-06   55  	if (!machine_is_olpc())
0fb497f5b6 Andres Salomon 2008-11-06   56  		return;
0fb497f5b6 Andres Salomon 2008-11-06   57  
bf1e527835 Andres Salomon 2008-11-06   58  	on = on ? 0 : 1;
bf1e527835 Andres Salomon 2008-11-06   59  	err = snd_ac97_update_bits(ac97, AC97_AD_MISC,
bf1e527835 Andres Salomon 2008-11-06   60  			1 << AC97_AD_VREFD_SHIFT, on << AC97_AD_VREFD_SHIFT);
bf1e527835 Andres Salomon 2008-11-06   61  	if (err < 0)
00980aa9c7 Takashi Iwai   2014-02-25   62  		dev_err(ac97->bus->card->dev, "setting MIC Bias - %d\n", err);
bf1e527835 Andres Salomon 2008-11-06   63  }
bf1e527835 Andres Salomon 2008-11-06   64  
466ae3055b Andres Salomon 2008-11-06   65  static int olpc_dc_info(struct snd_kcontrol *kctl,
57d4bf6d8e Jaya Kumar     2008-11-06   66  		struct snd_ctl_elem_info *uinfo)
57d4bf6d8e Jaya Kumar     2008-11-06   67  {
57d4bf6d8e Jaya Kumar     2008-11-06   68  	uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN;
57d4bf6d8e Jaya Kumar     2008-11-06   69  	uinfo->count = 1;
57d4bf6d8e Jaya Kumar     2008-11-06   70  	uinfo->value.integer.min = 0;
57d4bf6d8e Jaya Kumar     2008-11-06   71  	uinfo->value.integer.max = 1;
57d4bf6d8e Jaya Kumar     2008-11-06   72  	return 0;
57d4bf6d8e Jaya Kumar     2008-11-06   73  }
57d4bf6d8e Jaya Kumar     2008-11-06   74  
466ae3055b Andres Salomon 2008-11-06   75  static int olpc_dc_get(struct snd_kcontrol *kctl, struct snd_ctl_elem_value *v)
57d4bf6d8e Jaya Kumar     2008-11-06   76  {
3c55494670 Andres Salomon 2009-12-14   77  	v->value.integer.value[0] = gpio_get_value(OLPC_GPIO_MIC_AC);
57d4bf6d8e Jaya Kumar     2008-11-06   78  	return 0;
57d4bf6d8e Jaya Kumar     2008-11-06   79  }
57d4bf6d8e Jaya Kumar     2008-11-06   80  
466ae3055b Andres Salomon 2008-11-06   81  static int olpc_dc_put(struct snd_kcontrol *kctl, struct snd_ctl_elem_value *v)
57d4bf6d8e Jaya Kumar     2008-11-06   82  {
466ae3055b Andres Salomon 2008-11-06   83  	struct cs5535audio *cs5535au = snd_kcontrol_chip(kctl);
57d4bf6d8e Jaya Kumar     2008-11-06   84  
466ae3055b Andres Salomon 2008-11-06   85  	olpc_analog_input(cs5535au->ac97, v->value.integer.value[0]);
57d4bf6d8e Jaya Kumar     2008-11-06   86  	return 1;
57d4bf6d8e Jaya Kumar     2008-11-06   87  }
57d4bf6d8e Jaya Kumar     2008-11-06   88  
bf1e527835 Andres Salomon 2008-11-06   89  static int olpc_mic_info(struct snd_kcontrol *kctl,
bf1e527835 Andres Salomon 2008-11-06   90  		struct snd_ctl_elem_info *uinfo)
bf1e527835 Andres Salomon 2008-11-06   91  {
bf1e527835 Andres Salomon 2008-11-06   92  	uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN;
bf1e527835 Andres Salomon 2008-11-06   93  	uinfo->count = 1;
bf1e527835 Andres Salomon 2008-11-06   94  	uinfo->value.integer.min = 0;
bf1e527835 Andres Salomon 2008-11-06   95  	uinfo->value.integer.max = 1;
bf1e527835 Andres Salomon 2008-11-06   96  	return 0;
bf1e527835 Andres Salomon 2008-11-06   97  }
bf1e527835 Andres Salomon 2008-11-06   98  
bf1e527835 Andres Salomon 2008-11-06   99  static int olpc_mic_get(struct snd_kcontrol *kctl, struct snd_ctl_elem_value *v)
bf1e527835 Andres Salomon 2008-11-06  100  {
bf1e527835 Andres Salomon 2008-11-06  101  	struct cs5535audio *cs5535au = snd_kcontrol_chip(kctl);
bf1e527835 Andres Salomon 2008-11-06  102  	struct snd_ac97 *ac97 = cs5535au->ac97;
bf1e527835 Andres Salomon 2008-11-06  103  	int i;
bf1e527835 Andres Salomon 2008-11-06  104  
bf1e527835 Andres Salomon 2008-11-06  105  	i = (snd_ac97_read(ac97, AC97_AD_MISC) >> AC97_AD_VREFD_SHIFT) & 0x1;
bf1e527835 Andres Salomon 2008-11-06  106  	v->value.integer.value[0] = i ? 0 : 1;
bf1e527835 Andres Salomon 2008-11-06  107  	return 0;
bf1e527835 Andres Salomon 2008-11-06  108  }
bf1e527835 Andres Salomon 2008-11-06  109  
bf1e527835 Andres Salomon 2008-11-06  110  static int olpc_mic_put(struct snd_kcontrol *kctl, struct snd_ctl_elem_value *v)
bf1e527835 Andres Salomon 2008-11-06  111  {
bf1e527835 Andres Salomon 2008-11-06  112  	struct cs5535audio *cs5535au = snd_kcontrol_chip(kctl);
bf1e527835 Andres Salomon 2008-11-06  113  
bf1e527835 Andres Salomon 2008-11-06  114  	olpc_mic_bias(cs5535au->ac97, v->value.integer.value[0]);
bf1e527835 Andres Salomon 2008-11-06  115  	return 1;
bf1e527835 Andres Salomon 2008-11-06  116  }
bf1e527835 Andres Salomon 2008-11-06  117  
e23e7a1436 Bill Pemberton 2012-12-06  118  static struct snd_kcontrol_new olpc_cs5535audio_ctls[] = {
57d4bf6d8e Jaya Kumar     2008-11-06  119  {
57d4bf6d8e Jaya Kumar     2008-11-06  120  	.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
466ae3055b Andres Salomon 2008-11-06  121  	.name = "DC Mode Enable",
466ae3055b Andres Salomon 2008-11-06  122  	.info = olpc_dc_info,
466ae3055b Andres Salomon 2008-11-06  123  	.get = olpc_dc_get,
466ae3055b Andres Salomon 2008-11-06  124  	.put = olpc_dc_put,
b5ccc57b06 Andres Salomon 2008-11-06  125  	.private_value = 0,
bf1e527835 Andres Salomon 2008-11-06  126  },
bf1e527835 Andres Salomon 2008-11-06  127  {
bf1e527835 Andres Salomon 2008-11-06  128  	.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
bf1e527835 Andres Salomon 2008-11-06  129  	.name = "MIC Bias Enable",
bf1e527835 Andres Salomon 2008-11-06  130  	.info = olpc_mic_info,
bf1e527835 Andres Salomon 2008-11-06  131  	.get = olpc_mic_get,
bf1e527835 Andres Salomon 2008-11-06  132  	.put = olpc_mic_put,
bf1e527835 Andres Salomon 2008-11-06  133  	.private_value = 0,
bf1e527835 Andres Salomon 2008-11-06  134  },
57d4bf6d8e Jaya Kumar     2008-11-06  135  };
57d4bf6d8e Jaya Kumar     2008-11-06  136  
e23e7a1436 Bill Pemberton 2012-12-06 @137  void olpc_prequirks(struct snd_card *card,
3556d18465 Andres Salomon 2008-11-06  138  		    struct snd_ac97_template *ac97)
3556d18465 Andres Salomon 2008-11-06  139  {
3556d18465 Andres Salomon 2008-11-06  140  	if (!machine_is_olpc())
3556d18465 Andres Salomon 2008-11-06  141  		return;
3556d18465 Andres Salomon 2008-11-06  142  
3556d18465 Andres Salomon 2008-11-06  143  	/* invert EAPD if on an OLPC B3 or higher */
3556d18465 Andres Salomon 2008-11-06 @144  	if (olpc_board_at_least(olpc_board_pre(0xb3)))
3556d18465 Andres Salomon 2008-11-06  145  		ac97->scaps |= AC97_SCAP_INV_EAPD;
3556d18465 Andres Salomon 2008-11-06  146  }
3556d18465 Andres Salomon 2008-11-06  147  
e23e7a1436 Bill Pemberton 2012-12-06 @148  int olpc_quirks(struct snd_card *card, struct snd_ac97 *ac97)
57d4bf6d8e Jaya Kumar     2008-11-06  149  {
466ae3055b Andres Salomon 2008-11-06  150  	struct snd_ctl_elem_id elem;
bf1e527835 Andres Salomon 2008-11-06  151  	int i, err;
466ae3055b Andres Salomon 2008-11-06  152  
c8974be546 Jordan Crouse  2008-11-06  153  	if (!machine_is_olpc())
c8974be546 Jordan Crouse  2008-11-06  154  		return 0;
c8974be546 Jordan Crouse  2008-11-06  155  
3c55494670 Andres Salomon 2009-12-14  156  	if (gpio_request(OLPC_GPIO_MIC_AC, DRV_NAME)) {
00980aa9c7 Takashi Iwai   2014-02-25  157  		dev_err(card->dev, "unable to allocate MIC GPIO\n");
3c55494670 Andres Salomon 2009-12-14  158  		return -EIO;
3c55494670 Andres Salomon 2009-12-14  159  	}
3c55494670 Andres Salomon 2009-12-14  160  	gpio_direction_output(OLPC_GPIO_MIC_AC, 0);
3c55494670 Andres Salomon 2009-12-14  161  
466ae3055b Andres Salomon 2008-11-06  162  	/* drop the original AD1888 HPF control */
466ae3055b Andres Salomon 2008-11-06  163  	memset(&elem, 0, sizeof(elem));
466ae3055b Andres Salomon 2008-11-06  164  	elem.iface = SNDRV_CTL_ELEM_IFACE_MIXER;
57a4451d26 Takashi Iwai   2013-10-29  165  	strlcpy(elem.name, "High Pass Filter Enable", sizeof(elem.name));
466ae3055b Andres Salomon 2008-11-06  166  	snd_ctl_remove_id(card, &elem);
466ae3055b Andres Salomon 2008-11-06  167  
bf1e527835 Andres Salomon 2008-11-06  168  	/* drop the original V_REFOUT control */
bf1e527835 Andres Salomon 2008-11-06  169  	memset(&elem, 0, sizeof(elem));
bf1e527835 Andres Salomon 2008-11-06  170  	elem.iface = SNDRV_CTL_ELEM_IFACE_MIXER;
57a4451d26 Takashi Iwai   2013-10-29  171  	strlcpy(elem.name, "V_REFOUT Enable", sizeof(elem.name));
bf1e527835 Andres Salomon 2008-11-06  172  	snd_ctl_remove_id(card, &elem);
bf1e527835 Andres Salomon 2008-11-06  173  
bf1e527835 Andres Salomon 2008-11-06  174  	/* add the OLPC-specific controls */
bf1e527835 Andres Salomon 2008-11-06  175  	for (i = 0; i < ARRAY_SIZE(olpc_cs5535audio_ctls); i++) {
bf1e527835 Andres Salomon 2008-11-06  176  		err = snd_ctl_add(card, snd_ctl_new1(&olpc_cs5535audio_ctls[i],
57d4bf6d8e Jaya Kumar     2008-11-06  177  				ac97->private_data));
3c55494670 Andres Salomon 2009-12-14  178  		if (err < 0) {
3c55494670 Andres Salomon 2009-12-14  179  			gpio_free(OLPC_GPIO_MIC_AC);
bf1e527835 Andres Salomon 2008-11-06  180  			return err;
bf1e527835 Andres Salomon 2008-11-06  181  		}
3c55494670 Andres Salomon 2009-12-14  182  	}
bf1e527835 Andres Salomon 2008-11-06  183  
c8f0eeebc1 Andres Salomon 2008-11-06  184  	/* turn off the mic by default */
c8f0eeebc1 Andres Salomon 2008-11-06  185  	olpc_mic_bias(ac97, 0);
bf1e527835 Andres Salomon 2008-11-06  186  	return 0;
57d4bf6d8e Jaya Kumar     2008-11-06  187  }
3c55494670 Andres Salomon 2009-12-14  188  
e23e7a1436 Bill Pemberton 2012-12-06 @189  void olpc_quirks_cleanup(void)

:::::: The code at line 28 was first introduced by commit
:::::: d6276b78028dfab944dd4a58124aefcc9aa580da ALSA: cs5535audio: create function for setting OLPC's Analog Input mode

:::::: TO: Andres Salomon <dilinger@...ued.net>
:::::: CC: Takashi Iwai <tiwai@...e.de>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Download attachment ".config.gz" of type "application/gzip" (66572 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ