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@xxxxxxxxxx> :::::: CC: Takashi Iwai <tiwai@xxxxxxx> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip