static void bt_device_deinit(struct bt_dev_data *pdata) { if(pdata->gpio_reset > 0 ) amlogic_gpio_free(pdata->gpio_reset, BT_RFKILL); if(pdata->gpio_en > 0 ) amlogic_gpio_free(pdata->gpio_en, BT_RFKILL); if(pdata->gpio_wake > 0 ) amlogic_gpio_free(pdata->gpio_wake, BT_RFKILL); }
static void aml_m8_pinmux_deinit(struct snd_soc_card *card) { struct aml_audio_private_data *p_aml_audio; p_aml_audio = snd_soc_card_get_drvdata(card); if(p_aml_audio->gpio_hp_det) amlogic_gpio_free(p_aml_audio->gpio_hp_det,"hp_det"); if(p_aml_audio->gpio_mute) amlogic_gpio_free(p_aml_audio->gpio_mute,"mute_spk"); if(p_aml_audio->pin_ctl) devm_pinctrl_put(p_aml_audio->pin_ctl); }
static void aml_m6_pinmux_deinit(struct snd_soc_card *card) { struct aml_audio_private_data *p_aml_audio; p_aml_audio = snd_soc_card_get_drvdata(card); amlogic_gpio_free(p_aml_audio->gpio_hp_det,"wm8960"); devm_pinctrl_put(p_aml_audio->pin_ctl); }
static int aml_resume_pre(struct snd_soc_card *card) { printk(KERN_INFO "enter %s\n", __func__); struct aml_audio_private_data *p_aml_audio; p_aml_audio = snd_soc_card_get_drvdata(card); if(p_aml_audio->gpio_i2s_m) amlogic_gpio_free(p_aml_audio->gpio_i2s_m,"low_mclk"); if(p_aml_audio->gpio_i2s_s) amlogic_gpio_free(p_aml_audio->gpio_i2s_s,"low_sclk"); if(p_aml_audio->gpio_i2s_r) amlogic_gpio_free(p_aml_audio->gpio_i2s_r,"low_lrclk"); if(p_aml_audio->gpio_i2s_o) amlogic_gpio_free(p_aml_audio->gpio_i2s_o,"low_odata"); p_aml_audio->pin_ctl = devm_pinctrl_get_select(card->dev, "aml_snd_m8"); return 0; }
int amlogic_gpio_free_array(const struct gpio *array, size_t num) { int ret=0; while (num--){ ret=amlogic_gpio_free(array->gpio,array->label); if(ret) return ret; array++; } return ret; }