From 70eb98a161b49479e74fcb9042a82875b73ba68f Mon Sep 17 00:00:00 2001 From: Hiroshi DOYU Date: Mon, 25 Sep 2006 21:32:37 +0300 Subject: [PATCH] ARM: OMAP: DSPGW: mailbox build fix Signed-off-by: Hiroshi DOYU Signed-off-by: Juha Yrjola --- arch/arm/mach-omap1/board-nokia770.c | 8 +++-- arch/arm/mach-omap1/mailbox.c | 51 +++++++++++++++++----------- include/asm-arm/arch-omap/omap16xx.h | 3 ++ include/asm-arm/arch-omap/omap24xx.h | 3 ++ 4 files changed, 42 insertions(+), 23 deletions(-) diff --git a/arch/arm/mach-omap1/board-nokia770.c b/arch/arm/mach-omap1/board-nokia770.c index 6f42827ccdd..6bd33be4af1 100644 --- a/arch/arm/mach-omap1/board-nokia770.c +++ b/arch/arm/mach-omap1/board-nokia770.c @@ -212,7 +212,7 @@ static void nokia770_audio_pwr_down(void) schedule_delayed_work(&codec_power_down_work, HZ / 20); /* 50ms */ } -static void +static int nokia770_audio_pwr_up_request(struct dsp_kfunc_device *kdev, int stage) { down(&audio_pwr_sem); @@ -221,9 +221,10 @@ nokia770_audio_pwr_up_request(struct dsp_kfunc_device *kdev, int stage) /* force audio_pwr_state = 0, even if it was 1. */ audio_pwr_state = 0; up(&audio_pwr_sem); + return 0; } -static void +static int nokia770_audio_pwr_down_request(struct dsp_kfunc_device *kdev, int stage) { down(&audio_pwr_sem); @@ -240,6 +241,7 @@ nokia770_audio_pwr_down_request(struct dsp_kfunc_device *kdev, int stage) break; } up(&audio_pwr_sem); + return 0; } static struct dsp_kfunc_device nokia770_audio_device = { @@ -263,7 +265,7 @@ static __init int omap_dsp_init(void) if (ret) { printk(KERN_ERR "KFUNC device registration faild: %s\n", - dsp_audio_device.name); + nokia770_audio_device.name); goto out; } return 0; diff --git a/arch/arm/mach-omap1/mailbox.c b/arch/arm/mach-omap1/mailbox.c index ad077afff3e..dfcca2e6cd1 100644 --- a/arch/arm/mach-omap1/mailbox.c +++ b/arch/arm/mach-omap1/mailbox.c @@ -9,8 +9,10 @@ * for more details. */ -#include #include +#include +#include +#include #include #include #include @@ -28,9 +30,9 @@ unsigned long mbox_base; struct omap_mbox1_fifo { - void *cmd; - void *data; - void *flag; + unsigned long cmd; + unsigned long data; + unsigned long flag; }; struct omap_mbox1_priv { @@ -51,7 +53,8 @@ static inline void mbox_write_reg(unsigned int val, unsigned int reg) /* msg */ static inline mbox_msg_t omap1_mbox_fifo_read(struct omap_mbox *mbox) { - struct omap_mbox1_fifo *fifo = &((struct omap_mbox1_priv *)mbox->priv)->rx_fifo; + struct omap_mbox1_fifo *fifo = + &((struct omap_mbox1_priv *)mbox->priv)->rx_fifo; mbox_msg_t msg; msg = mbox_read_reg(fifo->data); @@ -60,9 +63,11 @@ static inline mbox_msg_t omap1_mbox_fifo_read(struct omap_mbox *mbox) return msg; } -static inline void omap1_mbox_fifo_write(struct omap_mbox *mbox, mbox_msg_t msg) +static inline void +omap1_mbox_fifo_write(struct omap_mbox *mbox, mbox_msg_t msg) { - struct omap_mbox1_fifo *fifo = &((struct omap_mbox1_priv *)mbox->priv)->rx_fifo; + struct omap_mbox1_fifo *fifo = + &((struct omap_mbox1_priv *)mbox->priv)->rx_fifo; mbox_write_reg(msg & 0xffff, fifo->data); mbox_write_reg(msg >> 16, fifo->cmd); @@ -75,23 +80,29 @@ static inline int omap1_mbox_fifo_empty(struct omap_mbox *mbox) static inline int omap1_mbox_fifo_full(struct omap_mbox *mbox) { + struct omap_mbox1_fifo *fifo = + &((struct omap_mbox1_priv *)mbox->priv)->rx_fifo; + return (mbox_read_reg(fifo->flag)); } /* irq */ -static inline void omap1_mbox_enable_irq(struct omap_mbox *mbox, omap_mbox_type_t irq) +static inline void +omap1_mbox_enable_irq(struct omap_mbox *mbox, omap_mbox_type_t irq) { if (irq == IRQ_RX) enable_irq(mbox->irq); } -static inline void omap1_mbox_disable_irq(struct omap_mbox *mbox, omap_mbox_type_t irq) +static inline void +omap1_mbox_disable_irq(struct omap_mbox *mbox, omap_mbox_type_t irq) { if (irq == IRQ_RX) - disble_irq(mbox->irq); + disable_irq(mbox->irq); } -static inline int omap1_mbox_is_irq(struct omap_mbox *mbox, omap_mbox_type_t irq) +static inline int +omap1_mbox_is_irq(struct omap_mbox *mbox, omap_mbox_type_t irq) { if (irq == IRQ_TX) return 0; @@ -111,22 +122,22 @@ struct omap_mbox_ops omap1_mbox_ops = { /* FIXME: the following struct should be created automatically by the user id */ /* DSP */ -static struct omap_mbox2_priv omap1_mbox_dsp_priv = { +static struct omap_mbox1_priv omap1_mbox_dsp_priv = { .tx_fifo = { - .cmd = (void *)MAILBOX_ARM2DSP1b, - .data = (void *)MAILBOX_ARM2DSP1, - .flag = (void *)MAILBOX_ARM2DSP1_Flag, + .cmd = MAILBOX_ARM2DSP1b, + .data = MAILBOX_ARM2DSP1, + .flag = MAILBOX_ARM2DSP1_Flag, }, .rx_fifo = { - .cmd = (void *)MAILBOX_DSP2ARM1b, - .data = (void *)MAILBOX_DSP2ARM1, - .flag = (void *)MAILBOX_DSP2ARM1_Flag, + .cmd = MAILBOX_DSP2ARM1b, + .data = MAILBOX_DSP2ARM1, + .flag = MAILBOX_DSP2ARM1_Flag, }, }; struct omap_mbox mbox_dsp_info = { .name = "DSP", - .ops = &omap1_mbox_ops, + .ops = &omap1_mbox_ops, .priv = &omap1_mbox_dsp_priv, }; @@ -170,7 +181,7 @@ static int omap1_mbox_remove(struct platform_device *pdev) } static struct platform_driver omap1_mbox_driver = { - .probe = omap1_mbox_probe, + .probe = omap1_mbox_probe, .remove = omap1_mbox_remove, .driver = { .name = "mailbox", diff --git a/include/asm-arm/arch-omap/omap16xx.h b/include/asm-arm/arch-omap/omap16xx.h index 04433e65187..f7f5cdfdccc 100644 --- a/include/asm-arm/arch-omap/omap16xx.h +++ b/include/asm-arm/arch-omap/omap16xx.h @@ -190,5 +190,8 @@ #define WSPR_DISABLE_0 (0x0000aaaa) #define WSPR_DISABLE_1 (0x00005555) +/* Mailbox */ +#define OMAP16XX_MAILBOX_BASE (0xfffcf000) + #endif /* __ASM_ARCH_OMAP16XX_H */ diff --git a/include/asm-arm/arch-omap/omap24xx.h b/include/asm-arm/arch-omap/omap24xx.h index b70063376f0..408a42224f8 100644 --- a/include/asm-arm/arch-omap/omap24xx.h +++ b/include/asm-arm/arch-omap/omap24xx.h @@ -28,5 +28,8 @@ #define OMAP24XX_DSP_IPI_BASE (OMAP24XX_DSP_BASE + 0x1000000) #define OMAP24XX_DSP_MMU_BASE (OMAP24XX_DSP_BASE + 0x2000000) +/* Mailbox */ +#define OMAP24XX_MAILBOX_BASE (L4_24XX_BASE + 0x94000) + #endif /* __ASM_ARCH_OMAP24XX_H */ -- 2.41.0