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

Commit 0f188ea3 authored by Franky Lin's avatar Franky Lin Committed by Greg Kroah-Hartman
Browse files

staging: brcm80211: absorb brcmf_sdcard_attach into brcmf_sdio_probe



Increase readability of brcmfmac

Reviewed-by: default avatarRoland Vossen <rvossen@broadcom.com>
Signed-off-by: default avatarArend van Spriel <arend@broadcom.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 1a103803
Loading
Loading
Loading
Loading
+27 −41
Original line number Original line Diff line number Diff line
@@ -57,32 +57,6 @@ static struct brcmf_sdioh_driver drvinfo = { NULL, NULL };


module_param(sd_f2_blocksize, int, 0);
module_param(sd_f2_blocksize, int, 0);


struct brcmf_sdio_card*
brcmf_sdcard_attach(void *cfghdl, u32 *regsva)
{
	struct brcmf_sdio_card *card;

	card = kzalloc(sizeof(struct brcmf_sdio_card), GFP_ATOMIC);
	if (card == NULL) {
		BRCMF_ERROR(("sdcard_attach: out of memory"));
		return NULL;
	}

	card->sdioh = brcmf_sdioh_attach(cfghdl);
	if (!card->sdioh) {
		brcmf_sdcard_detach(card);
		return NULL;
	}

	card->init_success = true;

	*regsva = SI_ENUM_BASE;

	/* Report the BAR, to fix if needed */
	card->sbwad = SI_ENUM_BASE;
	return card;
}

int brcmf_sdcard_detach(struct brcmf_sdio_card *card)
int brcmf_sdcard_detach(struct brcmf_sdio_card *card)
{
{
	if (card != NULL) {
	if (card != NULL) {
@@ -455,35 +429,47 @@ u32 brcmf_sdcard_cur_sbwad(struct brcmf_sdio_card *card)
int brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev)
int brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev)
{
{
	u32 regs = 0;
	u32 regs = 0;
	struct brcmf_sdio_card *card = NULL;
	u32 vendevid;
	u32 vendevid;
	int ret = 0;

	sdiodev->card = kzalloc(sizeof(struct brcmf_sdio_card), GFP_ATOMIC);
	if (sdiodev->card == NULL) {
		BRCMF_ERROR(("sdcard_attach: out of memory"));
		ret = -ENOMEM;
		goto out;
	}


	card = brcmf_sdcard_attach((void *)0, &regs);
	sdiodev->card->sdioh = brcmf_sdioh_attach((void *)0);
	if (!card) {
	if (!sdiodev->card->sdioh) {
		BRCMF_ERROR(("%s: attach failed\n", __func__));
		brcmf_sdcard_detach(sdiodev->card);
		goto err;
		ret = -ENODEV;
		goto out;
	}
	}
	sdiodev->card = card;

	sdiodev->card->init_success = true;

	regs = SI_ENUM_BASE;

	/* Report the BAR, to fix if needed */
	sdiodev->card->sbwad = SI_ENUM_BASE;


	/* Read the vendor/device ID from the CIS */
	/* Read the vendor/device ID from the CIS */
	vendevid = brcmf_sdcard_query_device(card);
	vendevid = brcmf_sdcard_query_device(sdiodev->card);


	/* try to attach to the target device */
	/* try to attach to the target device */
	sdiodev->bus = drvinfo.attach((vendevid >> 16), (vendevid & 0xFFFF),
	sdiodev->bus = drvinfo.attach((vendevid >> 16), (vendevid & 0xFFFF),
				  0, 0, 0, 0, regs, card);
				  0, 0, 0, 0, regs, sdiodev->card);
	if (!sdiodev->bus) {
	if (!sdiodev->bus) {
		BRCMF_ERROR(("%s: device attach failed\n", __func__));
		BRCMF_ERROR(("%s: device attach failed\n", __func__));
		goto err;
		ret = -ENODEV;
		goto out;
	}
	}


	return 0;
out:

	if ((ret) && (sdiodev->card))
	/* error handling */
err:
	if (sdiodev->card)
		brcmf_sdcard_detach(sdiodev->card);
		brcmf_sdcard_detach(sdiodev->card);


	return -ENODEV;
	return ret;
}
}
EXPORT_SYMBOL(brcmf_sdio_probe);
EXPORT_SYMBOL(brcmf_sdio_probe);


+0 −11
Original line number Original line Diff line number Diff line
@@ -136,17 +136,6 @@ struct brcmf_sdio_dev {
	void *bus;
	void *bus;
};
};


/* Attach and build an interface to the underlying SD host driver.
 *  - Allocates resources (structs, arrays, mem, OS handles, etc) needed by
 *    brcmf_sdcard.
 *  - Returns the sdio card handle and virtual address base for register access.
 *    The returned handle should be used in all subsequent calls, but the bcmsh
 *    implementation may maintain a single "default" handle (e.g. the first or
 *    most recent one) to enable single-instance implementations to pass NULL.
 */
extern struct brcmf_sdio_card*
brcmf_sdcard_attach(void *cfghdl, u32 *regsva);

/* Detach - freeup resources allocated in attach */
/* Detach - freeup resources allocated in attach */
extern int brcmf_sdcard_detach(struct brcmf_sdio_card *card);
extern int brcmf_sdcard_detach(struct brcmf_sdio_card *card);