b43-dev.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: "Michael Büsch" <m@bues.ch>
To: "Rafał Miłecki" <zajec5@gmail.com>
Cc: linux-wireless@vger.kernel.org,
	"John W. Linville" <linville@tuxdriver.com>,
	b43-dev@lists.infradead.org
Subject: [PATCH 2/2] b43: implement BCMA bus ops
Date: Wed, 6 Jul 2011 17:40:46 +0200	[thread overview]
Message-ID: <20110706174046.0ae24b6d@maggie> (raw)
In-Reply-To: <1309902848-3141-2-git-send-email-zajec5@gmail.com>

On Tue,  5 Jul 2011 23:54:08 +0200
Rafa? Mi?ecki <zajec5@gmail.com> wrote:

> 
> Signed-off-by: Rafa? Mi?ecki <zajec5@gmail.com>
> ---
>  drivers/net/wireless/b43/bus.c  |  100 +++++++++++++++++++++++++++++++++++++++
>  drivers/net/wireless/b43/bus.h  |    3 +
>  drivers/net/wireless/b43/main.c |    7 +++
>  3 files changed, 110 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/net/wireless/b43/bus.c b/drivers/net/wireless/b43/bus.c
> index 4200713..f56604f 100644
> --- a/drivers/net/wireless/b43/bus.c
> +++ b/drivers/net/wireless/b43/bus.c
> @@ -23,6 +23,106 @@
>  #include "b43.h"
>  #include "bus.h"
>  
> +/* BCMA */
> +#ifdef CONFIG_B43_BCMA
> +static inline int b43_bus_bcma_bus_may_powerdown(struct b43_bus_dev *dev)
> +{
> +	return 0; /* bcma_bus_may_powerdown(dev->bdev->bus); */
> +}

Why is this inline?
You can't inline and take a pointer of the function at the same time.
(The compiler will workaround this by generating multiple versions of
the function, of which at least one is not inline).
So remove it, please. Same below...

> +static inline int b43_bus_bcma_bus_powerup(struct b43_bus_dev *dev,
> +					  bool dynamic_pctl)
> +{
> +	return 0; /* bcma_bus_powerup(dev->sdev->bus, dynamic_pctl); */
> +}
> +static inline int b43_bus_bcma_device_is_enabled(struct b43_bus_dev *dev)
> +{
> +	return bcma_core_is_enabled(dev->bdev);
> +}
> +static inline void b43_bus_bcma_device_enable(struct b43_bus_dev *dev,
> +					     u32 core_specific_flags)
> +{
> +	bcma_core_enable(dev->bdev, core_specific_flags);
> +}
> +static inline void b43_bus_bcma_device_disable(struct b43_bus_dev *dev,
> +					      u32 core_specific_flags)
> +{
> +	bcma_core_disable(dev->bdev, core_specific_flags);
> +}
> +static inline u16 b43_bus_bcma_read16(struct b43_bus_dev *dev, u16 offset)
> +{
> +	return bcma_read16(dev->bdev, offset);
> +}
> +static inline u32 b43_bus_bcma_read32(struct b43_bus_dev *dev, u16 offset)
> +{
> +	return bcma_read32(dev->bdev, offset);
> +}
> +static inline
> +void b43_bus_bcma_write16(struct b43_bus_dev *dev, u16 offset, u16 value)
> +{
> +	bcma_write16(dev->bdev, offset, value);
> +}
> +static inline
> +void b43_bus_bcma_write32(struct b43_bus_dev *dev, u16 offset, u32 value)
> +{
> +	bcma_write32(dev->bdev, offset, value);
> +}
> +static inline
> +void b43_bus_bcma_block_read(struct b43_bus_dev *dev, void *buffer,
> +			    size_t count, u16 offset, u8 reg_width)
> +{
> +	bcma_block_read(dev->bdev, buffer, count, offset, reg_width);
> +}
> +static inline
> +void b43_bus_bcma_block_write(struct b43_bus_dev *dev, const void *buffer,
> +			     size_t count, u16 offset, u8 reg_width)
> +{
> +	bcma_block_write(dev->bdev, buffer, count, offset, reg_width);
> +}
> +
> +struct b43_bus_dev *b43_bus_dev_bcma_init(struct bcma_device *core)
> +{
> +	struct b43_bus_dev *dev = kzalloc(sizeof(*dev), GFP_KERNEL);
> +	if (!dev)
> +		return NULL;
> +
> +	dev->bus_type = B43_BUS_BCMA;
> +	dev->bdev = core;
> +
> +	dev->bus_may_powerdown = b43_bus_bcma_bus_may_powerdown;
> +	dev->bus_powerup = b43_bus_bcma_bus_powerup;
> +	dev->device_is_enabled = b43_bus_bcma_device_is_enabled;
> +	dev->device_enable = b43_bus_bcma_device_enable;
> +	dev->device_disable = b43_bus_bcma_device_disable;
> +
> +	dev->read16 = b43_bus_bcma_read16;
> +	dev->read32 = b43_bus_bcma_read32;
> +	dev->write16 = b43_bus_bcma_write16;
> +	dev->write32 = b43_bus_bcma_write32;
> +	dev->block_read = b43_bus_bcma_block_read;
> +	dev->block_write = b43_bus_bcma_block_write;
> +
> +	dev->dev = &core->dev;
> +	dev->dma_dev = core->dma_dev;
> +	dev->irq = core->irq;
> +
> +	/*
> +	dev->board_vendor = core->bus->boardinfo.vendor;
> +	dev->board_type = core->bus->boardinfo.type;
> +	dev->board_rev = core->bus->boardinfo.rev;
> +	*/
> +
> +	dev->chip_id = core->bus->chipinfo.id;
> +	dev->chip_rev = core->bus->chipinfo.rev;
> +	dev->chip_pkg = core->bus->chipinfo.pkg;
> +
> +	dev->bus_sprom = &core->bus->sprom;
> +
> +	dev->core_id = core->id.id;
> +	dev->core_rev = core->id.rev;
> +
> +	return dev;
> +}
> +#endif /* CONFIG_B43_BCMA */
>  
>  /* SSB */
>  #ifdef CONFIG_B43_SSB
> diff --git a/drivers/net/wireless/b43/bus.h b/drivers/net/wireless/b43/bus.h
> index 79a5ab4..a70b7b9 100644
> --- a/drivers/net/wireless/b43/bus.h
> +++ b/drivers/net/wireless/b43/bus.h
> @@ -2,12 +2,14 @@
>  #define B43_BUS_H_
>  
>  enum b43_bus_type {
> +	B43_BUS_BCMA,
>  	B43_BUS_SSB,
>  };
>  
>  struct b43_bus_dev {
>  	enum b43_bus_type bus_type;
>  	union {
> +		struct bcma_device *bdev;
>  		struct ssb_device *sdev;
>  	};
>  
> @@ -57,6 +59,7 @@ static inline bool b43_bus_host_is_sdio(struct b43_bus_dev *dev)
>  		dev->sdev->bus->bustype == SSB_BUSTYPE_SDIO);
>  }
>  
> +struct b43_bus_dev *b43_bus_dev_bcma_init(struct bcma_device *core);
>  struct b43_bus_dev *b43_bus_dev_ssb_init(struct ssb_device *sdev);
>  
>  #endif /* B43_BUS_H_ */
> diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
> index 410b77f..b85a973 100644
> --- a/drivers/net/wireless/b43/main.c
> +++ b/drivers/net/wireless/b43/main.c
> @@ -5010,7 +5010,14 @@ static struct b43_wl *b43_wireless_init(struct b43_bus_dev *dev)
>  #ifdef CONFIG_B43_BCMA
>  static int b43_bcma_probe(struct bcma_device *core)
>  {
> +	struct b43_bus_dev *dev;
> +
> +	dev = b43_bus_dev_bcma_init(core);
> +	if (!dev)
> +		return -ENODEV;
> +
>  	b43err(NULL, "BCMA is not supported yet!");
> +	kfree(dev);
>  	return -EOPNOTSUPP;
>  }
>  

  reply	other threads:[~2011-07-06 15:40 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-05 21:54 [PATCH 1/2] b43: make b43_wireless_init bus generic Rafał Miłecki
2011-07-05 21:54 ` [PATCH 2/2] b43: implement BCMA bus ops Rafał Miłecki
2011-07-06 15:40   ` Michael Büsch [this message]
2011-07-06 15:52     ` Rafał Miłecki
2011-07-06 15:58       ` Michael Büsch
2011-07-06 16:02         ` Rafał Miłecki

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20110706174046.0ae24b6d@maggie \
    --to=m@bues.ch \
    --cc=b43-dev@lists.infradead.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=linville@tuxdriver.com \
    --cc=zajec5@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).