From 03a6d4a09968368029d34c5b3f5361e8548d8442 Mon Sep 17 00:00:00 2001 From: R Sricharan Date: Thu, 13 Jun 2013 19:47:09 +0530 Subject: [PATCH 01/11] ARM: OMAP: dma: Remove the wrong dev_id check Once a free channel is found, the check for dev_id == 0 does not make any sense. Get rid of it. Signed-off-by: R Sricharan Signed-off-by: Tony Lindgren --- arch/arm/plat-omap/dma.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c index e06c34bdc34a..2f9933156465 100644 --- a/arch/arm/plat-omap/dma.c +++ b/arch/arm/plat-omap/dma.c @@ -701,8 +701,8 @@ int omap_request_dma(int dev_id, const char *dev_name, for (ch = 0; ch < dma_chan_count; ch++) { if (free_ch == -1 && dma_chan[ch].dev_id == -1) { free_ch = ch; - if (dev_id == 0) - break; + /* Exit after first free channel found */ + break; } } if (free_ch == -1) { From f0a3ff271779ba969415902f9426bfd2302dc4ba Mon Sep 17 00:00:00 2001 From: R Sricharan Date: Thu, 13 Jun 2013 19:47:10 +0530 Subject: [PATCH 02/11] ARM: OMAP: dma: Fix the dma_chan_link_map init order Init dma_chan_link_map[lch] *after* its memset to 0. Signed-off-by: R Sricharan Signed-off-by: Tony Lindgren --- arch/arm/plat-omap/dma.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c index 2f9933156465..8a71f7536f29 100644 --- a/arch/arm/plat-omap/dma.c +++ b/arch/arm/plat-omap/dma.c @@ -894,11 +894,12 @@ void omap_start_dma(int lch) int next_lch, cur_lch; char dma_chan_link_map[MAX_LOGICAL_DMA_CH_COUNT]; - dma_chan_link_map[lch] = 1; /* Set the link register of the first channel */ enable_lnk(lch); memset(dma_chan_link_map, 0, sizeof(dma_chan_link_map)); + dma_chan_link_map[lch] = 1; + cur_lch = dma_chan[lch].next_lch; do { next_lch = dma_chan[cur_lch].next_lch; From 86d4d78c320d335c2699d4897720b8eb1b934e47 Mon Sep 17 00:00:00 2001 From: Rajendra Nayak Date: Thu, 13 Jun 2013 19:47:11 +0530 Subject: [PATCH 03/11] ARM: OMAP: dma: Remove the erroneous freeing of platform data Given p = pdev->dev.platform_data; and d = p->dma_attr; the freeing of either one of these by the driver seems just plain wrong. Get rid of them in the .probe failure path as well as the .remove. Signed-off-by: Rajendra Nayak Signed-off-by: Tony Lindgren --- arch/arm/plat-omap/dma.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c index 8a71f7536f29..4d463ca6821f 100644 --- a/arch/arm/plat-omap/dma.c +++ b/arch/arm/plat-omap/dma.c @@ -2111,8 +2111,6 @@ static int omap_system_dma_probe(struct platform_device *pdev) } exit_dma_lch_fail: - kfree(p); - kfree(d); kfree(dma_chan); return ret; } @@ -2133,8 +2131,6 @@ static int omap_system_dma_remove(struct platform_device *pdev) free_irq(dma_irq, (void *)(irq_rel + 1)); } } - kfree(p); - kfree(d); kfree(dma_chan); return 0; } From 50a43f0fa9eb1ff8da930f6254bc16519e827922 Mon Sep 17 00:00:00 2001 From: Jarkko Nikula Date: Sat, 15 Jun 2013 11:31:02 +0300 Subject: [PATCH 04/11] ARM: OMAP2+: Remove AES crypto device DMA channel definitions These became unused after commit 660ffd6 ("ARM: OMAP2xxx: hwmod: Convert AES crypto devcie data to hwmod"). Signed-off-by: Jarkko Nikula Signed-off-by: Tony Lindgren --- arch/arm/mach-omap2/dma.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/arch/arm/mach-omap2/dma.h b/arch/arm/mach-omap2/dma.h index 65f80cacf178..4141ef04ed1d 100644 --- a/arch/arm/mach-omap2/dma.h +++ b/arch/arm/mach-omap2/dma.h @@ -25,8 +25,6 @@ #define OMAP24XX_DMA_EXT_DMAREQ0 2 /* S_DMA_1 */ #define OMAP24XX_DMA_EXT_DMAREQ1 3 /* S_DMA_2 */ #define OMAP24XX_DMA_GPMC 4 /* S_DMA_3 */ -#define OMAP24XX_DMA_AES_TX 9 /* S_DMA_8 */ -#define OMAP24XX_DMA_AES_RX 10 /* S_DMA_9 */ #define OMAP242X_DMA_EXT_DMAREQ2 14 /* S_DMA_13 */ #define OMAP242X_DMA_EXT_DMAREQ3 15 /* S_DMA_14 */ #define OMAP242X_DMA_EXT_DMAREQ4 16 /* S_DMA_15 */ From 9bd5b2753964e69edef4dac66ea9b21ac2b3d149 Mon Sep 17 00:00:00 2001 From: Jarkko Nikula Date: Sat, 15 Jun 2013 11:31:03 +0300 Subject: [PATCH 05/11] ARM: OMAP2+: Remove duplicated DMA channel definitions Many DMA channel definitions in arch/arm/mach-omap2/dma.h have been moved or redefined in drivers without removing them from dma.h. Remove those with a script below: egrep '#define OMAP.*DMA' arch/arm/mach-omap2/dma.h \ |cut -f 1 |cut -d ' ' -f 1-2 | while read -r i; do \ if [ `git grep -c "$i" |wc -l` -gt 1 ]; then \ echo "removing" $i; \ sed -i "/${i}/d" arch/arm/mach-omap2/dma.h; \ fi; \ done Signed-off-by: Jarkko Nikula Signed-off-by: Tony Lindgren --- arch/arm/mach-omap2/dma.h | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/arch/arm/mach-omap2/dma.h b/arch/arm/mach-omap2/dma.h index 4141ef04ed1d..8a71c7bc8766 100644 --- a/arch/arm/mach-omap2/dma.h +++ b/arch/arm/mach-omap2/dma.h @@ -21,30 +21,18 @@ /* DMA channels for 24xx */ -#define OMAP24XX_DMA_NO_DEVICE 0 -#define OMAP24XX_DMA_EXT_DMAREQ0 2 /* S_DMA_1 */ -#define OMAP24XX_DMA_EXT_DMAREQ1 3 /* S_DMA_2 */ -#define OMAP24XX_DMA_GPMC 4 /* S_DMA_3 */ -#define OMAP242X_DMA_EXT_DMAREQ2 14 /* S_DMA_13 */ -#define OMAP242X_DMA_EXT_DMAREQ3 15 /* S_DMA_14 */ -#define OMAP242X_DMA_EXT_DMAREQ4 16 /* S_DMA_15 */ #define OMAP34XX_DMA_I2C3_TX 25 /* S_DMA_24 */ #define OMAP34XX_DMA_I2C3_RX 26 /* S_DMA_25 */ #define OMAP24XX_DMA_I2C1_TX 27 /* S_DMA_26 */ #define OMAP24XX_DMA_I2C1_RX 28 /* S_DMA_27 */ #define OMAP24XX_DMA_I2C2_TX 29 /* S_DMA_28 */ #define OMAP24XX_DMA_I2C2_RX 30 /* S_DMA_29 */ -#define OMAP24XX_DMA_MMC2_TX 47 /* S_DMA_46 */ -#define OMAP24XX_DMA_MMC2_RX 48 /* S_DMA_47 */ #define OMAP24XX_DMA_UART1_TX 49 /* S_DMA_48 */ #define OMAP24XX_DMA_UART1_RX 50 /* S_DMA_49 */ #define OMAP24XX_DMA_UART2_TX 51 /* S_DMA_50 */ #define OMAP24XX_DMA_UART2_RX 52 /* S_DMA_51 */ #define OMAP24XX_DMA_UART3_TX 53 /* S_DMA_52 */ #define OMAP24XX_DMA_UART3_RX 54 /* S_DMA_53 */ -#define OMAP24XX_DMA_MMC1_TX 61 /* S_DMA_60 */ -#define OMAP24XX_DMA_MMC1_RX 62 /* S_DMA_61 */ -#define OMAP242X_DMA_EXT_DMAREQ5 64 /* S_DMA_63 */ #define OMAP34XX_DMA_AES2_TX 65 /* S_DMA_64 */ #define OMAP34XX_DMA_AES2_RX 66 /* S_DMA_65 */ #define OMAP34XX_DMA_SHA1MD5_RX 69 /* S_DMA_68 */ From 0fd8824fab0c7eb31f8c000ab86cd9e6326b791f Mon Sep 17 00:00:00 2001 From: Jarkko Nikula Date: Sat, 15 Jun 2013 11:31:04 +0300 Subject: [PATCH 06/11] ARM: OMAP2+: hwmod: Remove remaining DMA channel definitions Last remaining DMA channel definitions in arch/arm/mach-omap2/dma.h are used only by omap_hwmod_2xxx_3xxx_ipblock_data.c and omap_hwmod_3xxx_data.c. Remove them by using directly DMA channel number in hwmod data and drop definitions with a following script: egrep '#define [OMAP|AM35XX].*DMA' arch/arm/mach-omap2/dma.h | cut -f 1,3 \ | while read i; do \ DEF=`echo $i |cut -d ' ' -f 2`; \ CH=`echo $i |cut -d ' ' -f 3`; \ echo "removing" $DEF; \ sed -i "s/${DEF}/${CH}/" arch/arm/mach-omap2/omap_hwmod_*.c; \ sed -i "/${DEF}/d" arch/arm/mach-omap2/dma.h; \ done Signed-off-by: Jarkko Nikula Acked-by: Paul Walmsley Signed-off-by: Tony Lindgren --- arch/arm/mach-omap2/dma.h | 19 ------------------ .../omap_hwmod_2xxx_3xxx_ipblock_data.c | 20 +++++++++---------- arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 18 ++++++++--------- 3 files changed, 19 insertions(+), 38 deletions(-) diff --git a/arch/arm/mach-omap2/dma.h b/arch/arm/mach-omap2/dma.h index 8a71c7bc8766..aa735a4468a6 100644 --- a/arch/arm/mach-omap2/dma.h +++ b/arch/arm/mach-omap2/dma.h @@ -21,27 +21,8 @@ /* DMA channels for 24xx */ -#define OMAP34XX_DMA_I2C3_TX 25 /* S_DMA_24 */ -#define OMAP34XX_DMA_I2C3_RX 26 /* S_DMA_25 */ -#define OMAP24XX_DMA_I2C1_TX 27 /* S_DMA_26 */ -#define OMAP24XX_DMA_I2C1_RX 28 /* S_DMA_27 */ -#define OMAP24XX_DMA_I2C2_TX 29 /* S_DMA_28 */ -#define OMAP24XX_DMA_I2C2_RX 30 /* S_DMA_29 */ -#define OMAP24XX_DMA_UART1_TX 49 /* S_DMA_48 */ -#define OMAP24XX_DMA_UART1_RX 50 /* S_DMA_49 */ -#define OMAP24XX_DMA_UART2_TX 51 /* S_DMA_50 */ -#define OMAP24XX_DMA_UART2_RX 52 /* S_DMA_51 */ -#define OMAP24XX_DMA_UART3_TX 53 /* S_DMA_52 */ -#define OMAP24XX_DMA_UART3_RX 54 /* S_DMA_53 */ -#define OMAP34XX_DMA_AES2_TX 65 /* S_DMA_64 */ -#define OMAP34XX_DMA_AES2_RX 66 /* S_DMA_65 */ -#define OMAP34XX_DMA_SHA1MD5_RX 69 /* S_DMA_68 */ -#define OMAP36XX_DMA_UART4_TX 81 /* S_DMA_80 */ -#define OMAP36XX_DMA_UART4_RX 82 /* S_DMA_81 */ /* Only for AM35xx */ -#define AM35XX_DMA_UART4_TX 54 -#define AM35XX_DMA_UART4_RX 55 #endif /* __OMAP2PLUS_DMA_CHANNEL_H */ diff --git a/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c b/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c index 534974e08add..ef568974c2de 100644 --- a/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c @@ -89,32 +89,32 @@ struct omap_hwmod_class omap2_venc_hwmod_class = { /* Common DMA request line data */ struct omap_hwmod_dma_info omap2_uart1_sdma_reqs[] = { - { .name = "rx", .dma_req = OMAP24XX_DMA_UART1_RX, }, - { .name = "tx", .dma_req = OMAP24XX_DMA_UART1_TX, }, + { .name = "rx", .dma_req = 50, }, + { .name = "tx", .dma_req = 49, }, { .dma_req = -1 } }; struct omap_hwmod_dma_info omap2_uart2_sdma_reqs[] = { - { .name = "rx", .dma_req = OMAP24XX_DMA_UART2_RX, }, - { .name = "tx", .dma_req = OMAP24XX_DMA_UART2_TX, }, + { .name = "rx", .dma_req = 52, }, + { .name = "tx", .dma_req = 51, }, { .dma_req = -1 } }; struct omap_hwmod_dma_info omap2_uart3_sdma_reqs[] = { - { .name = "rx", .dma_req = OMAP24XX_DMA_UART3_RX, }, - { .name = "tx", .dma_req = OMAP24XX_DMA_UART3_TX, }, + { .name = "rx", .dma_req = 54, }, + { .name = "tx", .dma_req = 53, }, { .dma_req = -1 } }; struct omap_hwmod_dma_info omap2_i2c1_sdma_reqs[] = { - { .name = "tx", .dma_req = OMAP24XX_DMA_I2C1_TX }, - { .name = "rx", .dma_req = OMAP24XX_DMA_I2C1_RX }, + { .name = "tx", .dma_req = 27 }, + { .name = "rx", .dma_req = 28 }, { .dma_req = -1 } }; struct omap_hwmod_dma_info omap2_i2c2_sdma_reqs[] = { - { .name = "tx", .dma_req = OMAP24XX_DMA_I2C2_TX }, - { .name = "rx", .dma_req = OMAP24XX_DMA_I2C2_RX }, + { .name = "tx", .dma_req = 29 }, + { .name = "rx", .dma_req = 30 }, { .dma_req = -1 } }; diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c index 31c7126eb3bb..33d562017d1f 100644 --- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c @@ -548,8 +548,8 @@ static struct omap_hwmod_irq_info uart4_mpu_irqs[] = { }; static struct omap_hwmod_dma_info uart4_sdma_reqs[] = { - { .name = "rx", .dma_req = OMAP36XX_DMA_UART4_RX, }, - { .name = "tx", .dma_req = OMAP36XX_DMA_UART4_TX, }, + { .name = "rx", .dma_req = 82, }, + { .name = "tx", .dma_req = 81, }, { .dma_req = -1 } }; @@ -577,8 +577,8 @@ static struct omap_hwmod_irq_info am35xx_uart4_mpu_irqs[] = { }; static struct omap_hwmod_dma_info am35xx_uart4_sdma_reqs[] = { - { .name = "rx", .dma_req = AM35XX_DMA_UART4_RX, }, - { .name = "tx", .dma_req = AM35XX_DMA_UART4_TX, }, + { .name = "rx", .dma_req = 55, }, + { .name = "tx", .dma_req = 54, }, { .dma_req = -1 } }; @@ -857,8 +857,8 @@ static struct omap_hwmod_irq_info i2c3_mpu_irqs[] = { }; static struct omap_hwmod_dma_info i2c3_sdma_reqs[] = { - { .name = "tx", .dma_req = OMAP34XX_DMA_I2C3_TX }, - { .name = "rx", .dma_req = OMAP34XX_DMA_I2C3_RX }, + { .name = "tx", .dma_req = 25 }, + { .name = "rx", .dma_req = 26 }, { .dma_req = -1 } }; @@ -3581,7 +3581,7 @@ static struct omap_hwmod_irq_info omap3_sham_mpu_irqs[] = { }; static struct omap_hwmod_dma_info omap3_sham_sdma_reqs[] = { - { .name = "rx", .dma_req = OMAP34XX_DMA_SHA1MD5_RX, }, + { .name = "rx", .dma_req = 69, }, { .dma_req = -1 } }; @@ -3642,8 +3642,8 @@ static struct omap_hwmod_class omap3xxx_aes_class = { }; static struct omap_hwmod_dma_info omap3_aes_sdma_reqs[] = { - { .name = "tx", .dma_req = OMAP34XX_DMA_AES2_TX, }, - { .name = "rx", .dma_req = OMAP34XX_DMA_AES2_RX, }, + { .name = "tx", .dma_req = 65, }, + { .name = "rx", .dma_req = 66, }, { .dma_req = -1 } }; From da4f9d28264913b1b8ece1f365ac0f3776389f77 Mon Sep 17 00:00:00 2001 From: Jarkko Nikula Date: Sat, 15 Jun 2013 11:31:05 +0300 Subject: [PATCH 07/11] ARM: OMAP2+: Remove dma.h All definitions in arch/arm/mach-omap2/dma.h are removed so it can be removed now. Signed-off-by: Jarkko Nikula Signed-off-by: Tony Lindgren --- arch/arm/mach-omap2/devices.c | 1 - arch/arm/mach-omap2/dma.h | 28 ------------------- .../omap_hwmod_2xxx_3xxx_ipblock_data.c | 1 - arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 1 - 4 files changed, 31 deletions(-) delete mode 100644 arch/arm/mach-omap2/dma.h diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c index 4269fc145698..36135c3d8c86 100644 --- a/arch/arm/mach-omap2/devices.c +++ b/arch/arm/mach-omap2/devices.c @@ -37,7 +37,6 @@ #include "mux.h" #include "control.h" #include "devices.h" -#include "dma.h" #define L3_MODULES_MAX_LEN 12 #define L3_MODULES 3 diff --git a/arch/arm/mach-omap2/dma.h b/arch/arm/mach-omap2/dma.h deleted file mode 100644 index aa735a4468a6..000000000000 --- a/arch/arm/mach-omap2/dma.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * OMAP2PLUS DMA channel definitions - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef __OMAP2PLUS_DMA_CHANNEL_H -#define __OMAP2PLUS_DMA_CHANNEL_H - - -/* DMA channels for 24xx */ - - -/* Only for AM35xx */ - -#endif /* __OMAP2PLUS_DMA_CHANNEL_H */ diff --git a/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c b/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c index ef568974c2de..5da7a42a6d90 100644 --- a/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c @@ -17,7 +17,6 @@ #include "hdq1w.h" #include "omap_hwmod_common_data.h" -#include "dma.h" /* UART */ diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c index 33d562017d1f..fa9915411440 100644 --- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c @@ -35,7 +35,6 @@ #include "prm-regbits-34xx.h" #include "cm-regbits-34xx.h" -#include "dma.h" #include "i2c.h" #include "mmc.h" #include "wd_timer.h" From c821c4628a50da66ff9885bf7cd3df965a8464a1 Mon Sep 17 00:00:00 2001 From: Jarkko Nikula Date: Sat, 15 Jun 2013 11:31:06 +0300 Subject: [PATCH 08/11] ARM: OMAP1: Remove McBSP DMA channel definitions arch/arm/mach-omap1/mcbsp.c is only place where OMAP1 McBSP DMA channel definitions are set. We may well use numerical values there and get rid of their definitions in arch/arm/mach-omap1/dma.h. Remove dma.h include from arch/arm/mach-omap1/mcbsp.c and use following script for replacing definitions with DMA channel number: egrep '#define OMAP_DMA_MCBSP' arch/arm/mach-omap1/dma.h | cut -f 1,3 \ | while read i; do \ DEF=`echo $i |cut -d ' ' -f 2`; \ CH=`echo $i |cut -d ' ' -f 3`; \ echo "removing" $DEF; \ sed -i "s/${DEF}/${CH}/" arch/arm/mach-omap1/mcbsp.c; \ sed -i "/${DEF}/d" arch/arm/mach-omap1/dma.h; \ done Signed-off-by: Jarkko Nikula Signed-off-by: Tony Lindgren --- arch/arm/mach-omap1/dma.h | 6 ------ arch/arm/mach-omap1/mcbsp.c | 33 ++++++++++++++++----------------- 2 files changed, 16 insertions(+), 23 deletions(-) diff --git a/arch/arm/mach-omap1/dma.h b/arch/arm/mach-omap1/dma.h index d05909c96715..1932e9a72139 100644 --- a/arch/arm/mach-omap1/dma.h +++ b/arch/arm/mach-omap1/dma.h @@ -21,12 +21,6 @@ /* DMA channels for omap1 */ #define OMAP_DMA_NO_DEVICE 0 -#define OMAP_DMA_MCBSP1_TX 8 -#define OMAP_DMA_MCBSP1_RX 9 -#define OMAP_DMA_MCBSP3_TX 10 -#define OMAP_DMA_MCBSP3_RX 11 -#define OMAP_DMA_MCBSP2_TX 16 -#define OMAP_DMA_MCBSP2_RX 17 #define OMAP_DMA_UART3_TX 18 #define OMAP_DMA_UART3_RX 19 #define OMAP_DMA_CAMERA_IF_RX 20 diff --git a/arch/arm/mach-omap1/mcbsp.c b/arch/arm/mach-omap1/mcbsp.c index b0d4723c9a90..8ed67f8d1762 100644 --- a/arch/arm/mach-omap1/mcbsp.c +++ b/arch/arm/mach-omap1/mcbsp.c @@ -27,7 +27,6 @@ #include #include "iomap.h" -#include "dma.h" #define DPS_RSTCT2_PER_EN (1 << 0) #define DSP_RSTCT2_WD_PER_EN (1 << 1) @@ -114,12 +113,12 @@ struct resource omap7xx_mcbsp_res[][6] = { }, { .name = "rx", - .start = OMAP_DMA_MCBSP1_RX, + .start = 9, .flags = IORESOURCE_DMA, }, { .name = "tx", - .start = OMAP_DMA_MCBSP1_TX, + .start = 8, .flags = IORESOURCE_DMA, }, }, @@ -141,12 +140,12 @@ struct resource omap7xx_mcbsp_res[][6] = { }, { .name = "rx", - .start = OMAP_DMA_MCBSP3_RX, + .start = 11, .flags = IORESOURCE_DMA, }, { .name = "tx", - .start = OMAP_DMA_MCBSP3_TX, + .start = 10, .flags = IORESOURCE_DMA, }, }, @@ -191,12 +190,12 @@ struct resource omap15xx_mcbsp_res[][6] = { }, { .name = "rx", - .start = OMAP_DMA_MCBSP1_RX, + .start = 9, .flags = IORESOURCE_DMA, }, { .name = "tx", - .start = OMAP_DMA_MCBSP1_TX, + .start = 8, .flags = IORESOURCE_DMA, }, }, @@ -218,12 +217,12 @@ struct resource omap15xx_mcbsp_res[][6] = { }, { .name = "rx", - .start = OMAP_DMA_MCBSP2_RX, + .start = 17, .flags = IORESOURCE_DMA, }, { .name = "tx", - .start = OMAP_DMA_MCBSP2_TX, + .start = 16, .flags = IORESOURCE_DMA, }, }, @@ -245,12 +244,12 @@ struct resource omap15xx_mcbsp_res[][6] = { }, { .name = "rx", - .start = OMAP_DMA_MCBSP3_RX, + .start = 11, .flags = IORESOURCE_DMA, }, { .name = "tx", - .start = OMAP_DMA_MCBSP3_TX, + .start = 10, .flags = IORESOURCE_DMA, }, }, @@ -298,12 +297,12 @@ struct resource omap16xx_mcbsp_res[][6] = { }, { .name = "rx", - .start = OMAP_DMA_MCBSP1_RX, + .start = 9, .flags = IORESOURCE_DMA, }, { .name = "tx", - .start = OMAP_DMA_MCBSP1_TX, + .start = 8, .flags = IORESOURCE_DMA, }, }, @@ -325,12 +324,12 @@ struct resource omap16xx_mcbsp_res[][6] = { }, { .name = "rx", - .start = OMAP_DMA_MCBSP2_RX, + .start = 17, .flags = IORESOURCE_DMA, }, { .name = "tx", - .start = OMAP_DMA_MCBSP2_TX, + .start = 16, .flags = IORESOURCE_DMA, }, }, @@ -352,12 +351,12 @@ struct resource omap16xx_mcbsp_res[][6] = { }, { .name = "rx", - .start = OMAP_DMA_MCBSP3_RX, + .start = 11, .flags = IORESOURCE_DMA, }, { .name = "tx", - .start = OMAP_DMA_MCBSP3_TX, + .start = 10, .flags = IORESOURCE_DMA, }, }, From bf2920aa57f339b3901172ca35fbbf303acf8e16 Mon Sep 17 00:00:00 2001 From: Jarkko Nikula Date: Sat, 15 Jun 2013 11:31:07 +0300 Subject: [PATCH 09/11] ARM: OMAP1: Remove duplicated DMA channel definitions Similarly than with OMAP2 there are many DMA channel definitions that have been moved or redefined in drivers using them and we can remove them from dma.h. There is exception with MMC that arch/arm/mach-omap1/devices.c is using MMC DMA channel definitions for setting platform data but those can be well replaced with numeric values. Remove dma.h include from arch/arm/mach-omap1/devices.c and use a script below for dropping duplicated definitions and for replacing definitions with DMA channel numbers. grep '#define OMAP_DMA' arch/arm/mach-omap1/dma.h | while read -r i; do \ DDEF=`echo $i |cut -d ' ' -f 1-2`; \ DEF=`echo $DDEF |cut -d ' ' -f 2`; \ CH=`echo $i |cut -d ' ' -f 3`; \ if [ `git grep -c "$DDEF" |wc -l` -gt 1 ]; then \ echo "removing" $DEF; \ sed -i "s/${DEF}/${CH}/" arch/arm/mach-omap1/devices.c; \ sed -i "/${DDEF}/d" arch/arm/mach-omap1/dma.h; \ fi; \ done Signed-off-by: Jarkko Nikula Signed-off-by: Tony Lindgren --- arch/arm/mach-omap1/devices.c | 9 ++++----- arch/arm/mach-omap1/dma.h | 8 -------- 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/arch/arm/mach-omap1/devices.c b/arch/arm/mach-omap1/devices.c index 0af635205e8a..325e6030095e 100644 --- a/arch/arm/mach-omap1/devices.c +++ b/arch/arm/mach-omap1/devices.c @@ -30,7 +30,6 @@ #include "common.h" #include "clock.h" -#include "dma.h" #include "mmc.h" #include "sram.h" @@ -223,16 +222,16 @@ void __init omap1_init_mmc(struct omap_mmc_platform_data **mmc_data, case 0: base = OMAP1_MMC1_BASE; irq = INT_MMC; - rx_req = OMAP_DMA_MMC_RX; - tx_req = OMAP_DMA_MMC_TX; + rx_req = 22; + tx_req = 21; break; case 1: if (!cpu_is_omap16xx()) return; base = OMAP1_MMC2_BASE; irq = INT_1610_MMC2; - rx_req = OMAP_DMA_MMC2_RX; - tx_req = OMAP_DMA_MMC2_TX; + rx_req = 55; + tx_req = 54; break; default: continue; diff --git a/arch/arm/mach-omap1/dma.h b/arch/arm/mach-omap1/dma.h index 1932e9a72139..dc33cd98202b 100644 --- a/arch/arm/mach-omap1/dma.h +++ b/arch/arm/mach-omap1/dma.h @@ -20,17 +20,9 @@ #define __OMAP1_DMA_CHANNEL_H /* DMA channels for omap1 */ -#define OMAP_DMA_NO_DEVICE 0 #define OMAP_DMA_UART3_TX 18 #define OMAP_DMA_UART3_RX 19 -#define OMAP_DMA_CAMERA_IF_RX 20 -#define OMAP_DMA_MMC_TX 21 -#define OMAP_DMA_MMC_RX 22 -#define OMAP_DMA_USB_W2FC_RX0 26 -#define OMAP_DMA_USB_W2FC_TX0 29 /* These are only for 1610 */ -#define OMAP_DMA_MMC2_TX 54 -#define OMAP_DMA_MMC2_RX 55 #endif /* __OMAP1_DMA_CHANNEL_H */ From b6a85477d7abf6bdb299860a066b6c66a5c6a7dd Mon Sep 17 00:00:00 2001 From: Jarkko Nikula Date: Sat, 15 Jun 2013 11:31:08 +0300 Subject: [PATCH 10/11] ARM: OMAP1: Remove legacy irda.h and irda setup from board files omap-ir.c driver has never been upstream and was also removed from linux-omap.git four years ago (See linux-omap.git commit efd1e3f ("REMOVE OMAP LEGACY CODE: Reset drivers/net/irda to mainline")). Therefore remove needless device registration from a few board files and delete thus to be unused arch/arm/mach-omap1/include/mach/irda.h and unused OMAP_DMA_UART3_* definitions from dma.h. Signed-off-by: Jarkko Nikula Signed-off-by: Tony Lindgren --- arch/arm/mach-omap1/board-h2.c | 36 ------------------------- arch/arm/mach-omap1/board-palmte.c | 31 --------------------- arch/arm/mach-omap1/board-palmtt.c | 30 --------------------- arch/arm/mach-omap1/board-palmz71.c | 31 --------------------- arch/arm/mach-omap1/board-sx1.c | 36 ------------------------- arch/arm/mach-omap1/dma.h | 2 -- arch/arm/mach-omap1/include/mach/irda.h | 33 ----------------------- 7 files changed, 199 deletions(-) delete mode 100644 arch/arm/mach-omap1/include/mach/irda.h diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c index 0dac3d239e32..fd90cafc2e36 100644 --- a/arch/arm/mach-omap1/board-h2.c +++ b/arch/arm/mach-omap1/board-h2.c @@ -41,7 +41,6 @@ #include #include #include -#include #include #include @@ -50,7 +49,6 @@ #include "common.h" #include "board-h2.h" -#include "dma.h" /* At OMAP1610 Innovator the Ethernet is directly connected to CS1 */ #define OMAP1610_ETHR_START 0x04000300 @@ -276,39 +274,6 @@ static struct platform_device h2_kp_device = { .resource = h2_kp_resources, }; -#define H2_IRDA_FIRSEL_GPIO_PIN 17 - -static struct omap_irda_config h2_irda_data = { - .transceiver_cap = IR_SIRMODE | IR_MIRMODE | IR_FIRMODE, - .rx_channel = OMAP_DMA_UART3_RX, - .tx_channel = OMAP_DMA_UART3_TX, - .dest_start = UART3_THR, - .src_start = UART3_RHR, - .tx_trigger = 0, - .rx_trigger = 0, -}; - -static struct resource h2_irda_resources[] = { - [0] = { - .start = INT_UART3, - .end = INT_UART3, - .flags = IORESOURCE_IRQ, - }, -}; - -static u64 irda_dmamask = 0xffffffff; - -static struct platform_device h2_irda_device = { - .name = "omapirda", - .id = 0, - .dev = { - .platform_data = &h2_irda_data, - .dma_mask = &irda_dmamask, - }, - .num_resources = ARRAY_SIZE(h2_irda_resources), - .resource = h2_irda_resources, -}; - static struct gpio_led h2_gpio_led_pins[] = { { .name = "h2:red", @@ -339,7 +304,6 @@ static struct platform_device *h2_devices[] __initdata = { &h2_nor_device, &h2_nand_device, &h2_smc91x_device, - &h2_irda_device, &h2_kp_device, &h2_gpio_leds, }; diff --git a/arch/arm/mach-omap1/board-palmte.c b/arch/arm/mach-omap1/board-palmte.c index 845a1a7aef95..3b8e98f4353c 100644 --- a/arch/arm/mach-omap1/board-palmte.c +++ b/arch/arm/mach-omap1/board-palmte.c @@ -38,14 +38,12 @@ #include #include #include -#include #include #include #include #include "common.h" -#include "dma.h" #define PALMTE_USBDETECT_GPIO 0 #define PALMTE_USB_OR_DC_GPIO 1 @@ -167,40 +165,11 @@ static struct platform_device palmte_backlight_device = { }, }; -static struct omap_irda_config palmte_irda_config = { - .transceiver_cap = IR_SIRMODE, - .rx_channel = OMAP_DMA_UART3_RX, - .tx_channel = OMAP_DMA_UART3_TX, - .dest_start = UART3_THR, - .src_start = UART3_RHR, - .tx_trigger = 0, - .rx_trigger = 0, -}; - -static struct resource palmte_irda_resources[] = { - [0] = { - .start = INT_UART3, - .end = INT_UART3, - .flags = IORESOURCE_IRQ, - }, -}; - -static struct platform_device palmte_irda_device = { - .name = "omapirda", - .id = -1, - .dev = { - .platform_data = &palmte_irda_config, - }, - .num_resources = ARRAY_SIZE(palmte_irda_resources), - .resource = palmte_irda_resources, -}; - static struct platform_device *palmte_devices[] __initdata = { &palmte_rom_device, &palmte_kp_device, &palmte_lcd_device, &palmte_backlight_device, - &palmte_irda_device, }; static struct omap_usb_config palmte_usb_config __initdata = { diff --git a/arch/arm/mach-omap1/board-palmtt.c b/arch/arm/mach-omap1/board-palmtt.c index 65a4a3e357f2..ca501208825f 100644 --- a/arch/arm/mach-omap1/board-palmtt.c +++ b/arch/arm/mach-omap1/board-palmtt.c @@ -38,14 +38,12 @@ #include #include #include -#include #include #include #include #include "common.h" -#include "dma.h" #define PALMTT_USBDETECT_GPIO 0 #define PALMTT_CABLE_GPIO 1 @@ -163,33 +161,6 @@ static struct platform_device palmtt_lcd_device = { .name = "lcd_palmtt", .id = -1, }; -static struct omap_irda_config palmtt_irda_config = { - .transceiver_cap = IR_SIRMODE, - .rx_channel = OMAP_DMA_UART3_RX, - .tx_channel = OMAP_DMA_UART3_TX, - .dest_start = UART3_THR, - .src_start = UART3_RHR, - .tx_trigger = 0, - .rx_trigger = 0, -}; - -static struct resource palmtt_irda_resources[] = { - [0] = { - .start = INT_UART3, - .end = INT_UART3, - .flags = IORESOURCE_IRQ, - }, -}; - -static struct platform_device palmtt_irda_device = { - .name = "omapirda", - .id = -1, - .dev = { - .platform_data = &palmtt_irda_config, - }, - .num_resources = ARRAY_SIZE(palmtt_irda_resources), - .resource = palmtt_irda_resources, -}; static struct platform_device palmtt_spi_device = { .name = "spi_palmtt", @@ -234,7 +205,6 @@ static struct platform_device *palmtt_devices[] __initdata = { &palmtt_flash_device, &palmtt_kp_device, &palmtt_lcd_device, - &palmtt_irda_device, &palmtt_spi_device, &palmtt_backlight_device, &palmtt_led_device, diff --git a/arch/arm/mach-omap1/board-palmz71.c b/arch/arm/mach-omap1/board-palmz71.c index 01c970071fd8..470e12d67360 100644 --- a/arch/arm/mach-omap1/board-palmz71.c +++ b/arch/arm/mach-omap1/board-palmz71.c @@ -40,14 +40,12 @@ #include #include #include -#include #include #include #include #include "common.h" -#include "dma.h" #define PALMZ71_USBDETECT_GPIO 0 #define PALMZ71_PENIRQ_GPIO 6 @@ -153,34 +151,6 @@ static struct platform_device palmz71_lcd_device = { .id = -1, }; -static struct omap_irda_config palmz71_irda_config = { - .transceiver_cap = IR_SIRMODE, - .rx_channel = OMAP_DMA_UART3_RX, - .tx_channel = OMAP_DMA_UART3_TX, - .dest_start = UART3_THR, - .src_start = UART3_RHR, - .tx_trigger = 0, - .rx_trigger = 0, -}; - -static struct resource palmz71_irda_resources[] = { - [0] = { - .start = INT_UART3, - .end = INT_UART3, - .flags = IORESOURCE_IRQ, - }, -}; - -static struct platform_device palmz71_irda_device = { - .name = "omapirda", - .id = -1, - .dev = { - .platform_data = &palmz71_irda_config, - }, - .num_resources = ARRAY_SIZE(palmz71_irda_resources), - .resource = palmz71_irda_resources, -}; - static struct platform_device palmz71_spi_device = { .name = "spi_palmz71", .id = -1, @@ -202,7 +172,6 @@ static struct platform_device *devices[] __initdata = { &palmz71_rom_device, &palmz71_kp_device, &palmz71_lcd_device, - &palmz71_irda_device, &palmz71_spi_device, &palmz71_backlight_device, }; diff --git a/arch/arm/mach-omap1/board-sx1.c b/arch/arm/mach-omap1/board-sx1.c index 9732a98f3e06..0a8d3349149c 100644 --- a/arch/arm/mach-omap1/board-sx1.c +++ b/arch/arm/mach-omap1/board-sx1.c @@ -37,7 +37,6 @@ #include #include #include -#include #include #include @@ -45,7 +44,6 @@ #include #include "common.h" -#include "dma.h" /* Write to I2C device */ int sx1_i2c_write_byte(u8 devaddr, u8 regoffset, u8 value) @@ -228,39 +226,6 @@ static struct platform_device sx1_kp_device = { .resource = sx1_kp_resources, }; -/*----------- IRDA -------------------------*/ - -static struct omap_irda_config sx1_irda_data = { - .transceiver_cap = IR_SIRMODE, - .rx_channel = OMAP_DMA_UART3_RX, - .tx_channel = OMAP_DMA_UART3_TX, - .dest_start = UART3_THR, - .src_start = UART3_RHR, - .tx_trigger = 0, - .rx_trigger = 0, -}; - -static struct resource sx1_irda_resources[] = { - [0] = { - .start = INT_UART3, - .end = INT_UART3, - .flags = IORESOURCE_IRQ, - }, -}; - -static u64 irda_dmamask = 0xffffffff; - -static struct platform_device sx1_irda_device = { - .name = "omapirda", - .id = 0, - .dev = { - .platform_data = &sx1_irda_data, - .dma_mask = &irda_dmamask, - }, - .num_resources = ARRAY_SIZE(sx1_irda_resources), - .resource = sx1_irda_resources, -}; - /*----------- MTD -------------------------*/ static struct mtd_partition sx1_partitions[] = { @@ -366,7 +331,6 @@ static struct omap_lcd_config sx1_lcd_config __initdata = { static struct platform_device *sx1_devices[] __initdata = { &sx1_flash_device, &sx1_kp_device, - &sx1_irda_device, }; /*-----------------------------------------*/ diff --git a/arch/arm/mach-omap1/dma.h b/arch/arm/mach-omap1/dma.h index dc33cd98202b..6c751e8266da 100644 --- a/arch/arm/mach-omap1/dma.h +++ b/arch/arm/mach-omap1/dma.h @@ -20,8 +20,6 @@ #define __OMAP1_DMA_CHANNEL_H /* DMA channels for omap1 */ -#define OMAP_DMA_UART3_TX 18 -#define OMAP_DMA_UART3_RX 19 /* These are only for 1610 */ diff --git a/arch/arm/mach-omap1/include/mach/irda.h b/arch/arm/mach-omap1/include/mach/irda.h deleted file mode 100644 index 40f60339d1c6..000000000000 --- a/arch/arm/mach-omap1/include/mach/irda.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * arch/arm/plat-omap/include/mach/irda.h - * - * Copyright (C) 2005-2006 Komal Shah - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ -#ifndef ASMARM_ARCH_IRDA_H -#define ASMARM_ARCH_IRDA_H - -/* board specific transceiver capabilities */ - -#define IR_SEL 1 /* Selects IrDA */ -#define IR_SIRMODE 2 -#define IR_FIRMODE 4 -#define IR_MIRMODE 8 - -struct omap_irda_config { - int transceiver_cap; - int (*transceiver_mode)(struct device *dev, int mode); - int (*select_irda)(struct device *dev, int state); - int rx_channel; - int tx_channel; - unsigned long dest_start; - unsigned long src_start; - int tx_trigger; - int rx_trigger; - int mode; -}; - -#endif From e2081f96ba1be3aa22a44daec82af9b226a6d7d6 Mon Sep 17 00:00:00 2001 From: Jarkko Nikula Date: Sat, 15 Jun 2013 11:31:09 +0300 Subject: [PATCH 11/11] ARM: OMAP1: Remove dma.h Add definitions in arch/arm/mach-omap1/dma.h are now removed so remove the file and include statements from dma.c and lcd_dma.c. Signed-off-by: Jarkko Nikula Signed-off-by: Tony Lindgren --- arch/arm/mach-omap1/dma.c | 2 -- arch/arm/mach-omap1/dma.h | 26 -------------------------- arch/arm/mach-omap1/lcd_dma.c | 2 -- 3 files changed, 30 deletions(-) delete mode 100644 arch/arm/mach-omap1/dma.h diff --git a/arch/arm/mach-omap1/dma.c b/arch/arm/mach-omap1/dma.c index a94b3a718d1a..5bb8ce86d54b 100644 --- a/arch/arm/mach-omap1/dma.c +++ b/arch/arm/mach-omap1/dma.c @@ -30,8 +30,6 @@ #include -#include "dma.h" - #define OMAP1_DMA_BASE (0xfffed800) #define OMAP1_LOGICAL_DMA_CH_COUNT 17 #define OMAP1_DMA_STRIDE 0x40 diff --git a/arch/arm/mach-omap1/dma.h b/arch/arm/mach-omap1/dma.h deleted file mode 100644 index 6c751e8266da..000000000000 --- a/arch/arm/mach-omap1/dma.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * OMAP1 DMA channel definitions - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef __OMAP1_DMA_CHANNEL_H -#define __OMAP1_DMA_CHANNEL_H - -/* DMA channels for omap1 */ - -/* These are only for 1610 */ - -#endif /* __OMAP1_DMA_CHANNEL_H */ diff --git a/arch/arm/mach-omap1/lcd_dma.c b/arch/arm/mach-omap1/lcd_dma.c index 77924be37d41..26a2b01c7c4f 100644 --- a/arch/arm/mach-omap1/lcd_dma.c +++ b/arch/arm/mach-omap1/lcd_dma.c @@ -32,8 +32,6 @@ #include #include -#include "dma.h" - int omap_lcd_dma_running(void) { /*