Message ID | 1309510356-27147-8-git-send-email-jhnikula@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Jarkko, On Fri, Jul 1, 2011 at 14:22, Jarkko Nikula <jhnikula@gmail.com> wrote: > We can get rid of remaining is_omap tests in the driver by using > mcbsp_config_type that is set in omap hwmod data for 2430, 34xx and 44xx. > > Signed-off-by: Jarkko Nikula <jhnikula@gmail.com> > --- > arch/arm/plat-omap/mcbsp.c | 30 ++++++++++++++---------------- > 1 files changed, 14 insertions(+), 16 deletions(-) > > diff --git a/arch/arm/plat-omap/mcbsp.c b/arch/arm/plat-omap/mcbsp.c > index 92d6d4f..47720b1 100644 > --- a/arch/arm/plat-omap/mcbsp.c > +++ b/arch/arm/plat-omap/mcbsp.c > @@ -193,7 +193,7 @@ void omap_mcbsp_config(unsigned int id, const struct omap_mcbsp_reg_cfg *config) > MCBSP_WRITE(mcbsp, MCR2, config->mcr2); > MCBSP_WRITE(mcbsp, MCR1, config->mcr1); > MCBSP_WRITE(mcbsp, PCR0, config->pcr0); > - if (cpu_is_omap2430() || cpu_is_omap34xx() || cpu_is_omap44xx()) { > + if (mcbsp->mcbsp_config_type >= MCBSP_CONFIG_TYPE2) { > MCBSP_WRITE(mcbsp, XCCR, config->xccr); > MCBSP_WRITE(mcbsp, RCCR, config->rccr); > } > @@ -531,14 +531,13 @@ void omap_mcbsp_set_tx_threshold(unsigned int id, u16 threshold) > { > struct omap_mcbsp *mcbsp; > > - if (!cpu_is_omap34xx() && !cpu_is_omap44xx()) > - return; > - > if (!omap_mcbsp_check_valid_id(id)) { > printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1); > return; > } > mcbsp = id_to_mcbsp_ptr(id); > + if (mcbsp->mcbsp_config_type < MCBSP_CONFIG_TYPE3) > + return; > > if (threshold && threshold <= mcbsp->max_tx_thres) > MCBSP_WRITE(mcbsp, THRSH2, threshold - 1); > @@ -554,14 +553,13 @@ void omap_mcbsp_set_rx_threshold(unsigned int id, u16 threshold) > { > struct omap_mcbsp *mcbsp; > > - if (!cpu_is_omap34xx() && !cpu_is_omap44xx()) > - return; > - > if (!omap_mcbsp_check_valid_id(id)) { > printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1); > return; > } > mcbsp = id_to_mcbsp_ptr(id); > + if (mcbsp->mcbsp_config_type < MCBSP_CONFIG_TYPE3) > + return; > > if (threshold && threshold <= mcbsp->max_rx_thres) > MCBSP_WRITE(mcbsp, THRSH1, threshold - 1); > @@ -698,7 +696,7 @@ static inline void omap34xx_mcbsp_request(struct omap_mcbsp *mcbsp) > * Enable wakup behavior, smart idle and all wakeups > * REVISIT: some wakeups may be unnecessary > */ > - if (cpu_is_omap34xx() || cpu_is_omap44xx()) { > + if (mcbsp->mcbsp_config_type >= MCBSP_CONFIG_TYPE3) { > MCBSP_WRITE(mcbsp, WAKEUPEN, XRDYEN | RRDYEN); > } > } > @@ -712,7 +710,7 @@ static inline void omap34xx_mcbsp_free(struct omap_mcbsp *mcbsp) > /* > * Disable wakup behavior, smart idle and all wakeups > */ > - if (cpu_is_omap34xx() || cpu_is_omap44xx()) { > + if (mcbsp->mcbsp_config_type >= MCBSP_CONFIG_TYPE3) { I think that it would be a good idea to not use MCBSP_CONFIG_TYPE* in plat-omap/* as it is the .rev info. At later point of time, this might make the code look uglier as it happened with GPIO_METHOD_* flags in OMAP GPIO driver. Instead use this .rev info in mach-omap*/ to fill the pdata and pass it to driver. -V Charulatha > /* > * HW bug workaround - If no_idle mode is taken, we need to > * go to smart_idle before going to always_idle, or the > @@ -872,7 +870,7 @@ void omap_mcbsp_start(unsigned int id, int tx, int rx) > } > mcbsp = id_to_mcbsp_ptr(id); > > - if (cpu_is_omap34xx()) > + if (mcbsp->mcbsp_config_type == MCBSP_CONFIG_TYPE3) > omap_st_start(mcbsp); > > /* Only enable SRG, if McBSP is master */ > @@ -910,7 +908,7 @@ void omap_mcbsp_start(unsigned int id, int tx, int rx) > MCBSP_WRITE(mcbsp, SPCR2, w | (1 << 7)); > } > > - if (cpu_is_omap2430() || cpu_is_omap34xx() || cpu_is_omap44xx()) { > + if (mcbsp->mcbsp_config_type >= MCBSP_CONFIG_TYPE2) { > /* Release the transmitter and receiver */ > w = MCBSP_READ_CACHE(mcbsp, XCCR); > w &= ~(tx ? XDISABLE : 0); > @@ -940,7 +938,7 @@ void omap_mcbsp_stop(unsigned int id, int tx, int rx) > > /* Reset transmitter */ > tx &= 1; > - if (cpu_is_omap2430() || cpu_is_omap34xx() || cpu_is_omap44xx()) { > + if (mcbsp->mcbsp_config_type >= MCBSP_CONFIG_TYPE2) { > w = MCBSP_READ_CACHE(mcbsp, XCCR); > w |= (tx ? XDISABLE : 0); > MCBSP_WRITE(mcbsp, XCCR, w); > @@ -950,7 +948,7 @@ void omap_mcbsp_stop(unsigned int id, int tx, int rx) > > /* Reset receiver */ > rx &= 1; > - if (cpu_is_omap2430() || cpu_is_omap34xx() || cpu_is_omap44xx()) { > + if (mcbsp->mcbsp_config_type >= MCBSP_CONFIG_TYPE2) { > w = MCBSP_READ_CACHE(mcbsp, RCCR); > w |= (rx ? RDISABLE : 0); > MCBSP_WRITE(mcbsp, RCCR, w); > @@ -967,7 +965,7 @@ void omap_mcbsp_stop(unsigned int id, int tx, int rx) > MCBSP_WRITE(mcbsp, SPCR2, w & ~(1 << 6)); > } > > - if (cpu_is_omap34xx()) > + if (mcbsp->mcbsp_config_type == MCBSP_CONFIG_TYPE3) > omap_st_stop(mcbsp); > } > EXPORT_SYMBOL(omap_mcbsp_stop); > @@ -1230,7 +1228,7 @@ static void __devexit omap_st_remove(struct omap_mcbsp *mcbsp) > static inline void __devinit omap34xx_device_init(struct omap_mcbsp *mcbsp) > { > mcbsp->dma_op_mode = MCBSP_DMA_MODE_ELEMENT; > - if (cpu_is_omap34xx()) { > + if (mcbsp->mcbsp_config_type == MCBSP_CONFIG_TYPE3) { > /* > * Initially configure the maximum thresholds to a safe value. > * The McBSP FIFO usage with these values should not go under > @@ -1262,7 +1260,7 @@ static inline void __devinit omap34xx_device_init(struct omap_mcbsp *mcbsp) > > static inline void __devexit omap34xx_device_exit(struct omap_mcbsp *mcbsp) > { > - if (cpu_is_omap34xx()) { > + if (mcbsp->mcbsp_config_type == MCBSP_CONFIG_TYPE3) { > omap_additional_remove(mcbsp->dev); > > if (mcbsp->id == 2 || mcbsp->id == 3) > -- > 1.7.0.4 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-omap" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi On Fri, 1 Jul 2011 16:41:23 +0530 "Varadarajan, Charulatha" <charu@ti.com> wrote: > > @@ -712,7 +710,7 @@ static inline void omap34xx_mcbsp_free(struct omap_mcbsp *mcbsp) > > /* > > * Disable wakup behavior, smart idle and all wakeups > > */ > > - if (cpu_is_omap34xx() || cpu_is_omap44xx()) { > > + if (mcbsp->mcbsp_config_type >= MCBSP_CONFIG_TYPE3) { > > > I think that it would be a good idea to not use > MCBSP_CONFIG_TYPE* in plat-omap/* as it is the .rev info. > At later point of time, this might make the code look uglier > as it happened with GPIO_METHOD_* flags in OMAP GPIO driver. > Instead use this .rev info in mach-omap*/ to fill the pdata and pass it > to driver. > Exactly and this is already a little uggly here. Kind of simple replacement for cpu_is_omap tests and definitely must be replaced with some feature flags before moving code outside of plat-omap.
diff --git a/arch/arm/plat-omap/mcbsp.c b/arch/arm/plat-omap/mcbsp.c index 92d6d4f..47720b1 100644 --- a/arch/arm/plat-omap/mcbsp.c +++ b/arch/arm/plat-omap/mcbsp.c @@ -193,7 +193,7 @@ void omap_mcbsp_config(unsigned int id, const struct omap_mcbsp_reg_cfg *config) MCBSP_WRITE(mcbsp, MCR2, config->mcr2); MCBSP_WRITE(mcbsp, MCR1, config->mcr1); MCBSP_WRITE(mcbsp, PCR0, config->pcr0); - if (cpu_is_omap2430() || cpu_is_omap34xx() || cpu_is_omap44xx()) { + if (mcbsp->mcbsp_config_type >= MCBSP_CONFIG_TYPE2) { MCBSP_WRITE(mcbsp, XCCR, config->xccr); MCBSP_WRITE(mcbsp, RCCR, config->rccr); } @@ -531,14 +531,13 @@ void omap_mcbsp_set_tx_threshold(unsigned int id, u16 threshold) { struct omap_mcbsp *mcbsp; - if (!cpu_is_omap34xx() && !cpu_is_omap44xx()) - return; - if (!omap_mcbsp_check_valid_id(id)) { printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1); return; } mcbsp = id_to_mcbsp_ptr(id); + if (mcbsp->mcbsp_config_type < MCBSP_CONFIG_TYPE3) + return; if (threshold && threshold <= mcbsp->max_tx_thres) MCBSP_WRITE(mcbsp, THRSH2, threshold - 1); @@ -554,14 +553,13 @@ void omap_mcbsp_set_rx_threshold(unsigned int id, u16 threshold) { struct omap_mcbsp *mcbsp; - if (!cpu_is_omap34xx() && !cpu_is_omap44xx()) - return; - if (!omap_mcbsp_check_valid_id(id)) { printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1); return; } mcbsp = id_to_mcbsp_ptr(id); + if (mcbsp->mcbsp_config_type < MCBSP_CONFIG_TYPE3) + return; if (threshold && threshold <= mcbsp->max_rx_thres) MCBSP_WRITE(mcbsp, THRSH1, threshold - 1); @@ -698,7 +696,7 @@ static inline void omap34xx_mcbsp_request(struct omap_mcbsp *mcbsp) * Enable wakup behavior, smart idle and all wakeups * REVISIT: some wakeups may be unnecessary */ - if (cpu_is_omap34xx() || cpu_is_omap44xx()) { + if (mcbsp->mcbsp_config_type >= MCBSP_CONFIG_TYPE3) { MCBSP_WRITE(mcbsp, WAKEUPEN, XRDYEN | RRDYEN); } } @@ -712,7 +710,7 @@ static inline void omap34xx_mcbsp_free(struct omap_mcbsp *mcbsp) /* * Disable wakup behavior, smart idle and all wakeups */ - if (cpu_is_omap34xx() || cpu_is_omap44xx()) { + if (mcbsp->mcbsp_config_type >= MCBSP_CONFIG_TYPE3) { /* * HW bug workaround - If no_idle mode is taken, we need to * go to smart_idle before going to always_idle, or the @@ -872,7 +870,7 @@ void omap_mcbsp_start(unsigned int id, int tx, int rx) } mcbsp = id_to_mcbsp_ptr(id); - if (cpu_is_omap34xx()) + if (mcbsp->mcbsp_config_type == MCBSP_CONFIG_TYPE3) omap_st_start(mcbsp); /* Only enable SRG, if McBSP is master */ @@ -910,7 +908,7 @@ void omap_mcbsp_start(unsigned int id, int tx, int rx) MCBSP_WRITE(mcbsp, SPCR2, w | (1 << 7)); } - if (cpu_is_omap2430() || cpu_is_omap34xx() || cpu_is_omap44xx()) { + if (mcbsp->mcbsp_config_type >= MCBSP_CONFIG_TYPE2) { /* Release the transmitter and receiver */ w = MCBSP_READ_CACHE(mcbsp, XCCR); w &= ~(tx ? XDISABLE : 0); @@ -940,7 +938,7 @@ void omap_mcbsp_stop(unsigned int id, int tx, int rx) /* Reset transmitter */ tx &= 1; - if (cpu_is_omap2430() || cpu_is_omap34xx() || cpu_is_omap44xx()) { + if (mcbsp->mcbsp_config_type >= MCBSP_CONFIG_TYPE2) { w = MCBSP_READ_CACHE(mcbsp, XCCR); w |= (tx ? XDISABLE : 0); MCBSP_WRITE(mcbsp, XCCR, w); @@ -950,7 +948,7 @@ void omap_mcbsp_stop(unsigned int id, int tx, int rx) /* Reset receiver */ rx &= 1; - if (cpu_is_omap2430() || cpu_is_omap34xx() || cpu_is_omap44xx()) { + if (mcbsp->mcbsp_config_type >= MCBSP_CONFIG_TYPE2) { w = MCBSP_READ_CACHE(mcbsp, RCCR); w |= (rx ? RDISABLE : 0); MCBSP_WRITE(mcbsp, RCCR, w); @@ -967,7 +965,7 @@ void omap_mcbsp_stop(unsigned int id, int tx, int rx) MCBSP_WRITE(mcbsp, SPCR2, w & ~(1 << 6)); } - if (cpu_is_omap34xx()) + if (mcbsp->mcbsp_config_type == MCBSP_CONFIG_TYPE3) omap_st_stop(mcbsp); } EXPORT_SYMBOL(omap_mcbsp_stop); @@ -1230,7 +1228,7 @@ static void __devexit omap_st_remove(struct omap_mcbsp *mcbsp) static inline void __devinit omap34xx_device_init(struct omap_mcbsp *mcbsp) { mcbsp->dma_op_mode = MCBSP_DMA_MODE_ELEMENT; - if (cpu_is_omap34xx()) { + if (mcbsp->mcbsp_config_type == MCBSP_CONFIG_TYPE3) { /* * Initially configure the maximum thresholds to a safe value. * The McBSP FIFO usage with these values should not go under @@ -1262,7 +1260,7 @@ static inline void __devinit omap34xx_device_init(struct omap_mcbsp *mcbsp) static inline void __devexit omap34xx_device_exit(struct omap_mcbsp *mcbsp) { - if (cpu_is_omap34xx()) { + if (mcbsp->mcbsp_config_type == MCBSP_CONFIG_TYPE3) { omap_additional_remove(mcbsp->dev); if (mcbsp->id == 2 || mcbsp->id == 3)
We can get rid of remaining is_omap tests in the driver by using mcbsp_config_type that is set in omap hwmod data for 2430, 34xx and 44xx. Signed-off-by: Jarkko Nikula <jhnikula@gmail.com> --- arch/arm/plat-omap/mcbsp.c | 30 ++++++++++++++---------------- 1 files changed, 14 insertions(+), 16 deletions(-)