From 5bd8e713595fe86cb417315069ecd123e2fcdbc9 Mon Sep 17 00:00:00 2001 From: Robert Marklund Date: Fri, 30 Sep 2011 22:28:15 +0200 Subject: cg2900: u5500: Make ux500 play nice at build time Make the cg2900 build if we have both soc:s enabled. Change-Id: I302b0772128270f07a2b6ab114d151faa8680dd2 Signed-off-by: Robert Marklund --- drivers/staging/cg2900/Makefile | 5 ++--- drivers/staging/cg2900/board-u5500-cg2900.c | 6 +++--- drivers/staging/cg2900/devices-cg2900-u5500.c | 6 +++--- drivers/staging/cg2900/devices-cg2900.c | 16 ++++++++++++++-- drivers/staging/cg2900/devices-cg2900.h | 4 ++++ 5 files changed, 26 insertions(+), 11 deletions(-) diff --git a/drivers/staging/cg2900/Makefile b/drivers/staging/cg2900/Makefile index 0e76f4bf5bd..76668094ab9 100644 --- a/drivers/staging/cg2900/Makefile +++ b/drivers/staging/cg2900/Makefile @@ -6,13 +6,12 @@ ccflags-y := \ -Idrivers/staging/cg2900/include \ -Iarch/arm/mach-ux500 -obj-$(CONFIG_CG2900) += devices-cg2900.o +obj-$(CONFIG_CG2900) += devices-cg2900.o \ + devices-cg2900-u5500.o devices-cg2900-u8500.o ifeq ($(CONFIG_UX500_SOC_DB8500), y) -obj-$(CONFIG_CG2900) += devices-cg2900-u8500.o obj-$(CONFIG_CG2900) += board-mop500-cg2900.o endif ifeq ($(CONFIG_UX500_SOC_DB5500), y) -obj-$(CONFIG_CG2900) += devices-cg2900-u5500.o obj-$(CONFIG_CG2900) += board-u5500-cg2900.o endif diff --git a/drivers/staging/cg2900/board-u5500-cg2900.c b/drivers/staging/cg2900/board-u5500-cg2900.c index 07b29b2a997..d6ca7b4c858 100644 --- a/drivers/staging/cg2900/board-u5500-cg2900.c +++ b/drivers/staging/cg2900/board-u5500-cg2900.c @@ -18,7 +18,7 @@ #define CG2900_BT_CTS_GPIO 168 -enum cg2900_gpio_pull_sleep cg2900_sleep_gpio[21] = { +enum cg2900_gpio_pull_sleep cg2900_u5500_sleep_gpio[21] = { CG2900_NO_PULL, /* GPIO 0: PTA_CONFX */ CG2900_PULL_DN, /* GPIO 1: PTA_STATUS */ CG2900_NO_PULL, /* GPIO 2: UART_CTSN */ @@ -55,7 +55,7 @@ static struct platform_device ux500_cg2900_chip_device = { static struct cg2900_platform_data cg2900_test_platform_data = { .bus = HCI_VIRTUAL, - .gpio_sleep = cg2900_sleep_gpio, + .gpio_sleep = cg2900_u5500_sleep_gpio, }; static struct platform_device ux500_cg2900_test_device = { @@ -97,7 +97,7 @@ static pin_cfg_t cg2900_uart_disabled[] = { static struct cg2900_platform_data cg2900_uart_platform_data = { .bus = HCI_UART, - .gpio_sleep = cg2900_sleep_gpio, + .gpio_sleep = cg2900_u5500_sleep_gpio, .uart = { .n_uart_gpios = 4, .uart_enabled = cg2900_uart_enabled, diff --git a/drivers/staging/cg2900/devices-cg2900-u5500.c b/drivers/staging/cg2900/devices-cg2900-u5500.c index cabb4ebed67..39152e51295 100644 --- a/drivers/staging/cg2900/devices-cg2900-u5500.c +++ b/drivers/staging/cg2900/devices-cg2900-u5500.c @@ -26,7 +26,7 @@ #include "devices-cg2900.h" /* prcmu resout1 pin is used for CG2900 reset*/ -void dcg2900_enable_chip(struct cg2900_chip_dev *dev) +void dcg2900_u5500_enable_chip(struct cg2900_chip_dev *dev) { struct dcg2900_info *info = dev->b_data; @@ -45,7 +45,7 @@ void dcg2900_enable_chip(struct cg2900_chip_dev *dev) prcmu_resetout(1, 1); } -void dcg2900_disable_chip(struct cg2900_chip_dev *dev) +void dcg2900_u5500_disable_chip(struct cg2900_chip_dev *dev) { struct dcg2900_info *info = dev->b_data; @@ -53,7 +53,7 @@ void dcg2900_disable_chip(struct cg2900_chip_dev *dev) clk_disable(info->lpoclk); } -int dcg2900_setup(struct cg2900_chip_dev *dev, +int dcg2900_u5500_setup(struct cg2900_chip_dev *dev, struct dcg2900_info *info) { info->lpoclk = clk_get(dev->dev, "lpoclk"); diff --git a/drivers/staging/cg2900/devices-cg2900.c b/drivers/staging/cg2900/devices-cg2900.c index 8f342a4a1fc..9fb17c791d9 100644 --- a/drivers/staging/cg2900/devices-cg2900.c +++ b/drivers/staging/cg2900/devices-cg2900.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include @@ -157,6 +158,10 @@ static int dcg2900_init(struct cg2900_chip_dev *dev) dev_dbg(dev->dev, "No resources available\n"); goto finished; } + if (cpu_is_u8500()) + err = dcg2900_setup(dev, info); + else + err = dcg2900_u5500_setup(dev, info); err = dcg2900_setup(dev, info); if (err) @@ -272,8 +277,15 @@ void dcg2900_init_platdata(struct cg2900_platform_data *data) { data->init = dcg2900_init; data->exit = dcg2900_exit; - data->enable_chip = dcg2900_enable_chip; - data->disable_chip = dcg2900_disable_chip; + + if (cpu_is_u8500()) { + data->enable_chip = dcg2900_enable_chip; + data->disable_chip = dcg2900_disable_chip; + } else { + data->enable_chip = dcg2900_u5500_enable_chip; + data->disable_chip = dcg2900_u5500_disable_chip; + } + data->get_power_switch_off_cmd = dcg2900_get_power_switch_off_cmd; data->uart.enable_uart = dcg2900_enable_uart; diff --git a/drivers/staging/cg2900/devices-cg2900.h b/drivers/staging/cg2900/devices-cg2900.h index be5975ccb0a..eeb9e2e46b4 100644 --- a/drivers/staging/cg2900/devices-cg2900.h +++ b/drivers/staging/cg2900/devices-cg2900.h @@ -33,6 +33,10 @@ extern void dcg2900_enable_chip(struct cg2900_chip_dev *dev); extern void dcg2900_disable_chip(struct cg2900_chip_dev *dev); extern int dcg2900_setup(struct cg2900_chip_dev *dev, struct dcg2900_info *info); +extern void dcg2900_u5500_enable_chip(struct cg2900_chip_dev *dev); +extern void dcg2900_u5500_disable_chip(struct cg2900_chip_dev *dev); +extern int dcg2900_u5500_setup(struct cg2900_chip_dev *dev, + struct dcg2900_info *info); /** * enum cg2900_gpio_pull_sleep - GPIO pull setting in sleep. -- cgit v1.2.3