diff options
author | Philippe Langlais <philippe.langlais@stericsson.com> | 2011-10-19 11:57:49 +0200 |
---|---|---|
committer | Philippe Langlais <philippe.langlais@stericsson.com> | 2012-05-22 11:05:52 +0200 |
commit | c82fe62fcb94b6d7c1844aad317bcb71f58b8152 (patch) | |
tree | d2bc4596439d7c4f3ec04b65848cb593d8257562 /drivers/staging/cg2900/devices-cg2900-u5500.c | |
parent | 68b659bd88b7579f35138a395e86ca1a0f66ce7b (diff) |
cg2900: bluetooth support for 5500
This patch enables cg2900 functionality in 5500 boards.
All tests have been made on B5500 (big board BBM R1A) with
new CG2900 hardware.
NOTE: For proper work new B5500 FPGA firmware is needed (v536).
Depends-On: I7820139cc44e347c5b113b1beb665c2489bf74c2
ST-Ericsson Linux next: NA
ST-Ericsson ID: 281802
ST-Ericsson FOSS-OUT ID: Trivial
Change-Id: Iebdacf94fd125c7ead843ecee6927d95f8e32738
Signed-off-by: Grzegorz Sygieda <grzegorz.sygieda@tieto.com>
Tested-by: Grzegorz Sygieda <grzegorz.sygieda@tieto.com>
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/22941
Reviewed-by: Grzegorz SYGIEDA <Grzegorz.Sygieda@tieto.com>
Tested-by: Grzegorz SYGIEDA <Grzegorz.Sygieda@tieto.com>
Reviewed-by: Par-Gunnar HJALMDAHL <par-gunnar.p.hjalmdahl@stericsson.com>
Reviewed-by: Srinidhi KASAGAR <srinidhi.kasagar@stericsson.com>
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/30035
Reviewed-by: Virupax SADASHIVPETIMATH <virupax.sadashivpetimath@stericsson.com>
Tested-by: Virupax SADASHIVPETIMATH <virupax.sadashivpetimath@stericsson.com>
Diffstat (limited to 'drivers/staging/cg2900/devices-cg2900-u5500.c')
-rw-r--r-- | drivers/staging/cg2900/devices-cg2900-u5500.c | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/drivers/staging/cg2900/devices-cg2900-u5500.c b/drivers/staging/cg2900/devices-cg2900-u5500.c new file mode 100644 index 00000000000..fac30589696 --- /dev/null +++ b/drivers/staging/cg2900/devices-cg2900-u5500.c @@ -0,0 +1,65 @@ +/* + * arch/arm/mach-ux500/devices-cg2900-u5500.c + * + * Copyright (C) ST-Ericsson SA 2010 + * Authors: + * Par-Gunnar Hjalmdahl (par-gunnar.p.hjalmdahl@stericsson.com) for ST-Ericsson. + * Henrik Possung (henrik.possung@stericsson.com) for ST-Ericsson. + * Josef Kindberg (josef.kindberg@stericsson.com) for ST-Ericsson. + * Dariusz Szymszak (dariusz.xd.szymczak@stericsson.com) for ST-Ericsson. + * Kjell Andersson (kjell.k.andersson@stericsson.com) for ST-Ericsson. + * License terms: GNU General Public License (GPL), version 2 + * + * Board specific device support for the Linux Bluetooth HCI H:4 Driver + * for ST-Ericsson connectivity controller. + */ + +#include <linux/delay.h> +#include <linux/kernel.h> +#include <linux/sched.h> +#include <linux/clk.h> +#include <linux/types.h> +#include <linux/mfd/cg2900.h> +#include <linux/mfd/abx500/ab5500.h> + +#include <mach/prcmu-db5500.h> + +#include "devices-cg2900.h" + +/* prcmu resout1 pin is used for CG2900 reset*/ +void dcg2900_enable_chip(struct cg2900_chip_dev *dev) +{ + struct dcg2900_info *info = dev->b_data; + + clk_enable(info->lpoclk); + /* + * Due to a bug in CG2900 we cannot just set GPIO high to enable + * the chip. We must wait more than 100 msecs before enbling the + * chip. + * - Set PDB to low. + * - Wait for 100 msecs + * - Set PDB to high. + */ + prcmu_resetout(1, 0); + schedule_timeout_uninterruptible(msecs_to_jiffies( + CHIP_ENABLE_PDB_LOW_TIMEOUT)); + prcmu_resetout(1, 1); +} + +void dcg2900_disable_chip(struct cg2900_chip_dev *dev) +{ + struct dcg2900_info *info = dev->b_data; + + prcmu_resetout(1, 0); + clk_disable(info->lpoclk); +} + +int dcg2900_setup(struct cg2900_chip_dev *dev, + struct dcg2900_info *info) +{ + info->lpoclk = clk_get(dev->dev, "lpoclk"); + if (IS_ERR(info->lpoclk)) + return PTR_ERR(info->lpoclk); + + return 0; +} |