b43: Do not "select" HW_RANDOM

Auto-depend on HW_RANDOM, rather than "select"ing it.
This way the user has the choice to enable or disable HWRNG support.

Signed-off-by: Michael Buesch <mb@bu3sch.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
Michael Buesch 2009-03-29 13:19:31 +02:00 committed by John W. Linville
parent a57e2e84b6
commit 616de35da9
3 changed files with 17 additions and 3 deletions

View File

@ -3,7 +3,6 @@ config B43
depends on SSB_POSSIBLE && MAC80211 && WLAN_80211 && HAS_DMA depends on SSB_POSSIBLE && MAC80211 && WLAN_80211 && HAS_DMA
select SSB select SSB
select FW_LOADER select FW_LOADER
select HW_RANDOM
---help--- ---help---
b43 is a driver for the Broadcom 43xx series wireless devices. b43 is a driver for the Broadcom 43xx series wireless devices.
@ -106,6 +105,13 @@ config B43_RFKILL
depends on B43 && (RFKILL = y || RFKILL = B43) && RFKILL_INPUT && (INPUT_POLLDEV = y || INPUT_POLLDEV = B43) depends on B43 && (RFKILL = y || RFKILL = B43) && RFKILL_INPUT && (INPUT_POLLDEV = y || INPUT_POLLDEV = B43)
default y default y
# This config option automatically enables b43 HW-RNG support,
# if the HW-RNG core is enabled.
config B43_HWRNG
bool
depends on B43 && (HW_RANDOM = y || HW_RANDOM = B43)
default y
config B43_DEBUG config B43_DEBUG
bool "Broadcom 43xx debugging" bool "Broadcom 43xx debugging"
depends on B43 depends on B43

View File

@ -625,9 +625,11 @@ struct b43_wl {
/* Stats about the wireless interface */ /* Stats about the wireless interface */
struct ieee80211_low_level_stats ieee_stats; struct ieee80211_low_level_stats ieee_stats;
#ifdef CONFIG_B43_HWRNG
struct hwrng rng; struct hwrng rng;
u8 rng_initialized; bool rng_initialized;
char rng_name[30 + 1]; char rng_name[30 + 1];
#endif /* CONFIG_B43_HWRNG */
/* The RF-kill button */ /* The RF-kill button */
struct b43_rfkill rfkill; struct b43_rfkill rfkill;

View File

@ -2980,6 +2980,7 @@ static void b43_security_init(struct b43_wldev *dev)
b43_clear_keys(dev); b43_clear_keys(dev);
} }
#ifdef CONFIG_B43_HWRNG
static int b43_rng_read(struct hwrng *rng, u32 *data) static int b43_rng_read(struct hwrng *rng, u32 *data)
{ {
struct b43_wl *wl = (struct b43_wl *)rng->priv; struct b43_wl *wl = (struct b43_wl *)rng->priv;
@ -2995,17 +2996,21 @@ static int b43_rng_read(struct hwrng *rng, u32 *data)
return (sizeof(u16)); return (sizeof(u16));
} }
#endif /* CONFIG_B43_HWRNG */
static void b43_rng_exit(struct b43_wl *wl) static void b43_rng_exit(struct b43_wl *wl)
{ {
#ifdef CONFIG_B43_HWRNG
if (wl->rng_initialized) if (wl->rng_initialized)
hwrng_unregister(&wl->rng); hwrng_unregister(&wl->rng);
#endif /* CONFIG_B43_HWRNG */
} }
static int b43_rng_init(struct b43_wl *wl) static int b43_rng_init(struct b43_wl *wl)
{ {
int err; int err = 0;
#ifdef CONFIG_B43_HWRNG
snprintf(wl->rng_name, ARRAY_SIZE(wl->rng_name), snprintf(wl->rng_name, ARRAY_SIZE(wl->rng_name),
"%s_%s", KBUILD_MODNAME, wiphy_name(wl->hw->wiphy)); "%s_%s", KBUILD_MODNAME, wiphy_name(wl->hw->wiphy));
wl->rng.name = wl->rng_name; wl->rng.name = wl->rng_name;
@ -3018,6 +3023,7 @@ static int b43_rng_init(struct b43_wl *wl)
b43err(wl, "Failed to register the random " b43err(wl, "Failed to register the random "
"number generator (%d)\n", err); "number generator (%d)\n", err);
} }
#endif /* CONFIG_B43_HWRNG */
return err; return err;
} }