diff options
author | Zhou Jingyu <b02241@freescale.com> | 2010-03-11 10:08:32 +0800 |
---|---|---|
committer | Alejandro Gonzalez <alex.gonzalez@digi.com> | 2010-05-25 11:17:21 +0200 |
commit | 262ad3d751730da9801fdf450c108d57bbe107fd (patch) | |
tree | a2fe61f38151cdc65859df262b1a7c68dae15a34 /arch/arm/plat-mxs | |
parent | b75491caed15403f20612902bb9ed6b6782178fe (diff) |
ENGR00121496: mx23 battery driver restructure
mx23 battery driver restructure
Signed-off-by: Zhou Jingyu <Jingyu.Zhou@freescale.com>
Signed-off-by: Alejandro Gonzalez <alex.gonzalez@digi.com>
Diffstat (limited to 'arch/arm/plat-mxs')
-rw-r--r-- | arch/arm/plat-mxs/Makefile | 3 | ||||
-rw-r--r-- | arch/arm/plat-mxs/icoll.c | 27 | ||||
-rw-r--r-- | arch/arm/plat-mxs/include/mach/ddi_bc.h | 1 | ||||
-rw-r--r-- | arch/arm/plat-mxs/include/mach/irqs.h | 5 | ||||
-rw-r--r-- | arch/arm/plat-mxs/usb_common.c | 12 |
5 files changed, 44 insertions, 4 deletions
diff --git a/arch/arm/plat-mxs/Makefile b/arch/arm/plat-mxs/Makefile index fa25e5e51a49..95b4c05415e5 100644 --- a/arch/arm/plat-mxs/Makefile +++ b/arch/arm/plat-mxs/Makefile @@ -11,7 +11,8 @@ obj-$(CONFIG_GENERIC_GPIO) += gpio.o obj-$(CONFIG_MXS_ICOLL) += icoll.o obj-$(CONFIG_MXS_DMA_ENGINE) += dmaengine.o dma-apbh.o dma-apbx.o -obj-$(CONFIG_ARCH_MX28) += usb_common.o utmixc.o +obj-$(CONFIG_ARCH_MX28) += utmixc.o +obj-$(CONFIG_ARCH_MXS) += usb_common.o obj-$(CONFIG_MXS_LRADC) += lradc.o # Power Management diff --git a/arch/arm/plat-mxs/icoll.c b/arch/arm/plat-mxs/icoll.c index ef05e63d3dd1..bb4e4c12cb23 100644 --- a/arch/arm/plat-mxs/icoll.c +++ b/arch/arm/plat-mxs/icoll.c @@ -23,6 +23,7 @@ #include <mach/hardware.h> #include <mach/device.h> +#include <mach/irqs.h> #include "regs-icoll.h" @@ -106,3 +107,29 @@ void __init avic_init_irq(void __iomem *base, int nr_irqs) /* Barrier */ (void)__raw_readl(g_icoll_base + HW_ICOLL_STAT); } + +void mxs_set_irq_fiq(unsigned int irq, unsigned int type) +{ + if (type == 0) + __raw_writel(BM_ICOLL_INTERRUPTn_ENFIQ, + g_icoll_base + + HW_ICOLL_INTERRUPTn_CLR(irq)); + else + __raw_writel(BM_ICOLL_INTERRUPTn_ENFIQ, + g_icoll_base + + HW_ICOLL_INTERRUPTn_SET(irq)); +} +EXPORT_SYMBOL(mxs_set_irq_fiq); + +void mxs_enable_fiq_functionality(int enable) +{ + if (enable) + __raw_writel(BM_ICOLL_CTRL_FIQ_FINAL_ENABLE, + g_icoll_base + HW_ICOLL_CTRL_SET); + else + __raw_writel(BM_ICOLL_CTRL_FIQ_FINAL_ENABLE, + g_icoll_base + HW_ICOLL_CTRL_CLR); + +} +EXPORT_SYMBOL(mxs_enable_fiq_functionality); + diff --git a/arch/arm/plat-mxs/include/mach/ddi_bc.h b/arch/arm/plat-mxs/include/mach/ddi_bc.h index ceeed0c6ec46..21ca9217cdaa 100644 --- a/arch/arm/plat-mxs/include/mach/ddi_bc.h +++ b/arch/arm/plat-mxs/include/mach/ddi_bc.h @@ -708,6 +708,7 @@ ddi_bc_Status_t ddi_bc_ForceChargingToStart(void); void fsl_enable_usb_plugindetect(void); int fsl_is_usb_plugged(void); + /* End of file */ #endif /* _DDI_BC_H */ diff --git a/arch/arm/plat-mxs/include/mach/irqs.h b/arch/arm/plat-mxs/include/mach/irqs.h index f2de0d22ad41..62165e12a60c 100644 --- a/arch/arm/plat-mxs/include/mach/irqs.h +++ b/arch/arm/plat-mxs/include/mach/irqs.h @@ -35,5 +35,10 @@ struct irq_ic_info { #define __irq_ic_info_attr __attribute__((__section__(".irq_ic_info.array"))) extern struct irq_ic_info *current_irq_ic_info; + +void mxs_set_irq_fiq(unsigned int irq, unsigned int type); +void mxs_enable_fiq_functionality(int enable); + #endif + #endif /* __ASM_ARCH_SYSTEM_H__ */ diff --git a/arch/arm/plat-mxs/usb_common.c b/arch/arm/plat-mxs/usb_common.c index 0bc12d4f615d..b6f556866a52 100644 --- a/arch/arm/plat-mxs/usb_common.c +++ b/arch/arm/plat-mxs/usb_common.c @@ -44,9 +44,11 @@ #include <linux/usb/otg.h> #include <linux/usb/fsl_xcvr.h> #include <mach/arc_otg.h> +#include <mach/hardware.h> #include <linux/io.h> #include "regs-usbphy.h" +#ifdef CONFIG_ARCH_MX28 #define MXC_NUMBER_USB_TRANSCEIVER 6 struct fsl_xcvr_ops *g_xc_ops[MXC_NUMBER_USB_TRANSCEIVER] = { NULL }; @@ -376,15 +378,19 @@ int usb_host_wakeup_irq(struct device *wkup_dev) return 0; } EXPORT_SYMBOL(usb_host_wakeup_irq); - +#endif void usb_host_set_wakeup(struct device *wkup_dev, bool para) { } EXPORT_SYMBOL(usb_host_set_wakeup); +#ifdef CONFIG_ARCH_MX28 +#define USBPHY_PHYS_ADDR USBPHY0_PHYS_ADDR +#endif + int fsl_is_usb_plugged(void) { - return __raw_readl(REGS_USBPHY_BASE + HW_USBPHY_STATUS) & \ + return __raw_readl(IO_ADDRESS(USBPHY_PHYS_ADDR) + HW_USBPHY_STATUS) & \ BM_USBPHY_STATUS_DEVPLUGIN_STATUS; } EXPORT_SYMBOL(fsl_is_usb_plugged); @@ -392,7 +398,7 @@ EXPORT_SYMBOL(fsl_is_usb_plugged); void fsl_enable_usb_plugindetect(void) { __raw_writel(BM_USBPHY_CTRL_ENDEVPLUGINDETECT, - REGS_USBPHY_BASE + HW_USBPHY_CTRL_SET); + IO_ADDRESS(USBPHY_PHYS_ADDR) + HW_USBPHY_CTRL_SET); } EXPORT_SYMBOL(fsl_enable_usb_plugindetect); |