Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 541ceb5b authored by Feng Tang's avatar Feng Tang Committed by Pierre Ossman
Browse files

sdhci: add num index for multi controllers case



Some devices have several controllers; need add the index info to
device slot name host->slot_desc[]

Signed-off-by: default avatarFeng Tang <feng.tang@intel.com>
Signed-off-by: default avatarPierre Ossman <drzeus@drzeus.cx>
parent 11b295c8
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -30,6 +30,10 @@

static unsigned int debug_quirks = 0;

/* For multi controllers in one platform case */
static u16 chip_index = 0;
static spinlock_t index_lock;

/*
 * Different quirks to handle when the hardware deviates from a strict
 * interpretation of the SDHCI specification.
@@ -1320,7 +1324,7 @@ static int __devinit sdhci_probe_slot(struct pci_dev *pdev, int slot)

	DBG("slot %d at 0x%08lx, irq %d\n", slot, host->addr, host->irq);

	snprintf(host->slot_descr, 20, "sdhci:slot%d", slot);
	snprintf(host->slot_descr, 20, "sdhc%d:slot%d", chip->index, slot);

	ret = pci_request_region(pdev, host->bar, host->slot_descr);
	if (ret)
@@ -1585,6 +1589,11 @@ static int __devinit sdhci_probe(struct pci_dev *pdev,
	chip->num_slots = slots;
	pci_set_drvdata(pdev, chip);

	/* Add for multi controller case */
	spin_lock(&index_lock);
	chip->index = chip_index++;
	spin_unlock(&index_lock);

	for (i = 0;i < slots;i++) {
		ret = sdhci_probe_slot(pdev, i);
		if (ret) {
@@ -1645,6 +1654,8 @@ static int __init sdhci_drv_init(void)
		": Secure Digital Host Controller Interface driver\n");
	printk(KERN_INFO DRIVER_NAME ": Copyright(c) Pierre Ossman\n");

	spin_lock_init(&index_lock);

	return pci_register_driver(&sdhci_driver);
}

+1 −0
Original line number Diff line number Diff line
@@ -208,6 +208,7 @@ struct sdhci_chip {

	unsigned long		quirks;

	int			index;		/* Index for chip0, chip1 ...*/
	int			num_slots;	/* Slots on controller */
	struct sdhci_host	*hosts[0];	/* Pointers to hosts */
};