diff options
Diffstat (limited to 'drivers/mmc/core')
| -rw-r--r-- | drivers/mmc/core/Kconfig | 2 | ||||
| -rw-r--r-- | drivers/mmc/core/block.c | 2 | ||||
| -rw-r--r-- | drivers/mmc/core/pwrseq_simple.c | 14 | 
3 files changed, 11 insertions, 7 deletions
| diff --git a/drivers/mmc/core/Kconfig b/drivers/mmc/core/Kconfig index 42e89060cd41..2f38a7ad07e0 100644 --- a/drivers/mmc/core/Kconfig +++ b/drivers/mmc/core/Kconfig @@ -14,7 +14,7 @@ config PWRSEQ_EMMC  config PWRSEQ_SD8787  	tristate "HW reset support for SD8787 BT + Wifi module" -	depends on OF && (MWIFIEX || BT_MRVL_SDIO) +	depends on OF && (MWIFIEX || BT_MRVL_SDIO || LIBERTAS_SDIO)  	help  	  This selects hardware reset support for the SD8787 BT + Wifi  	  module. By default this option is set to n. diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c index e201ccb3fda4..c35b5b08bb33 100644 --- a/drivers/mmc/core/block.c +++ b/drivers/mmc/core/block.c @@ -2708,7 +2708,7 @@ static int mmc_add_disk(struct mmc_blk_data *md)  	int ret;  	struct mmc_card *card = md->queue.card; -	device_add_disk(md->parent, md->disk); +	device_add_disk(md->parent, md->disk, NULL);  	md->force_ro.show = force_ro_show;  	md->force_ro.store = force_ro_store;  	sysfs_attr_init(&md->force_ro.attr); diff --git a/drivers/mmc/core/pwrseq_simple.c b/drivers/mmc/core/pwrseq_simple.c index a8b9fee4d62a..ece34c734693 100644 --- a/drivers/mmc/core/pwrseq_simple.c +++ b/drivers/mmc/core/pwrseq_simple.c @@ -40,17 +40,21 @@ static void mmc_pwrseq_simple_set_gpios_value(struct mmc_pwrseq_simple *pwrseq,  	struct gpio_descs *reset_gpios = pwrseq->reset_gpios;  	if (!IS_ERR(reset_gpios)) { -		int i, *values; +		unsigned long *values;  		int nvalues = reset_gpios->ndescs; -		values = kmalloc_array(nvalues, sizeof(int), GFP_KERNEL); +		values = bitmap_alloc(nvalues, GFP_KERNEL);  		if (!values)  			return; -		for (i = 0; i < nvalues; i++) -			values[i] = value; +		if (value) +			bitmap_fill(values, nvalues); +		else +			bitmap_zero(values, nvalues); + +		gpiod_set_array_value_cansleep(nvalues, reset_gpios->desc, +					       reset_gpios->info, values); -		gpiod_set_array_value_cansleep(nvalues, reset_gpios->desc, values);  		kfree(values);  	}  } |