Loading arch/arm/mach-shmobile/clock-sh7372.c +4 −1 Original line number Diff line number Diff line Loading @@ -509,7 +509,7 @@ enum { MSTP001, MSTP118, MSTP117, MSTP116, MSTP113, MSTP106, MSTP101, MSTP100, MSTP223, MSTP218, MSTP217, MSTP216, MSTP214, MSTP218, MSTP217, MSTP216, MSTP207, MSTP206, MSTP204, MSTP203, MSTP202, MSTP201, MSTP200, MSTP328, MSTP323, MSTP322, MSTP314, MSTP313, MSTP312, MSTP423, MSTP415, MSTP413, MSTP411, MSTP410, MSTP406, MSTP403, MSTP400, Loading Loading @@ -538,6 +538,7 @@ static struct clk mstp_clks[MSTP_NR] = { [MSTP218] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 18, 0), /* DMAC1 */ [MSTP217] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 17, 0), /* DMAC2 */ [MSTP216] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 16, 0), /* DMAC3 */ [MSTP214] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 14, 0), /* USBDMAC */ [MSTP207] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 7, 0), /* SCIFA5 */ [MSTP206] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 6, 0), /* SCIFB */ [MSTP204] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 4, 0), /* SCIFA0 */ Loading Loading @@ -629,6 +630,8 @@ static struct clk_lookup lookups[] = { CLKDEV_DEV_ID("sh-dma-engine.0", &mstp_clks[MSTP218]), /* DMAC1 */ CLKDEV_DEV_ID("sh-dma-engine.1", &mstp_clks[MSTP217]), /* DMAC2 */ CLKDEV_DEV_ID("sh-dma-engine.2", &mstp_clks[MSTP216]), /* DMAC3 */ CLKDEV_DEV_ID("sh-dma-engine.3", &mstp_clks[MSTP214]), /* USB-DMAC0 */ CLKDEV_DEV_ID("sh-dma-engine.4", &mstp_clks[MSTP214]), /* USB-DMAC1 */ CLKDEV_DEV_ID("sh-sci.5", &mstp_clks[MSTP207]), /* SCIFA5 */ CLKDEV_DEV_ID("sh-sci.6", &mstp_clks[MSTP206]), /* SCIFB */ CLKDEV_DEV_ID("sh-sci.0", &mstp_clks[MSTP204]), /* SCIFA0 */ Loading arch/arm/mach-shmobile/include/mach/sh7372.h +4 −0 Original line number Diff line number Diff line Loading @@ -459,6 +459,10 @@ enum { SHDMA_SLAVE_SDHI2_TX, SHDMA_SLAVE_MMCIF_RX, SHDMA_SLAVE_MMCIF_TX, SHDMA_SLAVE_USB0_TX, SHDMA_SLAVE_USB0_RX, SHDMA_SLAVE_USB1_TX, SHDMA_SLAVE_USB1_RX, }; extern struct clk sh7372_extal1_clk; Loading arch/arm/mach-shmobile/setup-sh7372.c +146 −0 Original line number Diff line number Diff line Loading @@ -602,6 +602,150 @@ static struct platform_device dma2_device = { }, }; /* * USB-DMAC */ unsigned int usbts_shift[] = {3, 4, 5}; enum { XMIT_SZ_8BYTE = 0, XMIT_SZ_16BYTE = 1, XMIT_SZ_32BYTE = 2, }; #define USBTS_INDEX2VAL(i) (((i) & 3) << 6) static const struct sh_dmae_channel sh7372_usb_dmae_channels[] = { { .offset = 0, }, { .offset = 0x20, }, }; /* USB DMAC0 */ static const struct sh_dmae_slave_config sh7372_usb_dmae0_slaves[] = { { .slave_id = SHDMA_SLAVE_USB0_TX, .chcr = USBTS_INDEX2VAL(XMIT_SZ_8BYTE), }, { .slave_id = SHDMA_SLAVE_USB0_RX, .chcr = USBTS_INDEX2VAL(XMIT_SZ_8BYTE), }, }; static struct sh_dmae_pdata usb_dma0_platform_data = { .slave = sh7372_usb_dmae0_slaves, .slave_num = ARRAY_SIZE(sh7372_usb_dmae0_slaves), .channel = sh7372_usb_dmae_channels, .channel_num = ARRAY_SIZE(sh7372_usb_dmae_channels), .ts_low_shift = 6, .ts_low_mask = 0xc0, .ts_high_shift = 0, .ts_high_mask = 0, .ts_shift = usbts_shift, .ts_shift_num = ARRAY_SIZE(usbts_shift), .dmaor_init = DMAOR_DME, .chcr_offset = 0x14, .chcr_ie_bit = 1 << 5, .dmaor_is_32bit = 1, .needs_tend_set = 1, .no_dmars = 1, }; static struct resource sh7372_usb_dmae0_resources[] = { { /* Channel registers and DMAOR */ .start = 0xe68a0020, .end = 0xe68a0064 - 1, .flags = IORESOURCE_MEM, }, { /* VCR/SWR/DMICR */ .start = 0xe68a0000, .end = 0xe68a0014 - 1, .flags = IORESOURCE_MEM, }, { /* IRQ for channels */ .start = evt2irq(0x0a00), .end = evt2irq(0x0a00), .flags = IORESOURCE_IRQ, }, }; static struct platform_device usb_dma0_device = { .name = "sh-dma-engine", .id = 3, .resource = sh7372_usb_dmae0_resources, .num_resources = ARRAY_SIZE(sh7372_usb_dmae0_resources), .dev = { .platform_data = &usb_dma0_platform_data, }, }; /* USB DMAC1 */ static const struct sh_dmae_slave_config sh7372_usb_dmae1_slaves[] = { { .slave_id = SHDMA_SLAVE_USB1_TX, .chcr = USBTS_INDEX2VAL(XMIT_SZ_8BYTE), }, { .slave_id = SHDMA_SLAVE_USB1_RX, .chcr = USBTS_INDEX2VAL(XMIT_SZ_8BYTE), }, }; static struct sh_dmae_pdata usb_dma1_platform_data = { .slave = sh7372_usb_dmae1_slaves, .slave_num = ARRAY_SIZE(sh7372_usb_dmae1_slaves), .channel = sh7372_usb_dmae_channels, .channel_num = ARRAY_SIZE(sh7372_usb_dmae_channels), .ts_low_shift = 6, .ts_low_mask = 0xc0, .ts_high_shift = 0, .ts_high_mask = 0, .ts_shift = usbts_shift, .ts_shift_num = ARRAY_SIZE(usbts_shift), .dmaor_init = DMAOR_DME, .chcr_offset = 0x14, .chcr_ie_bit = 1 << 5, .dmaor_is_32bit = 1, .needs_tend_set = 1, .no_dmars = 1, }; static struct resource sh7372_usb_dmae1_resources[] = { { /* Channel registers and DMAOR */ .start = 0xe68c0020, .end = 0xe68c0064 - 1, .flags = IORESOURCE_MEM, }, { /* VCR/SWR/DMICR */ .start = 0xe68c0000, .end = 0xe68c0014 - 1, .flags = IORESOURCE_MEM, }, { /* IRQ for channels */ .start = evt2irq(0x1d00), .end = evt2irq(0x1d00), .flags = IORESOURCE_IRQ, }, }; static struct platform_device usb_dma1_device = { .name = "sh-dma-engine", .id = 4, .resource = sh7372_usb_dmae1_resources, .num_resources = ARRAY_SIZE(sh7372_usb_dmae1_resources), .dev = { .platform_data = &usb_dma1_platform_data, }, }; /* VPU */ static struct uio_info vpu_platform_data = { .name = "VPU5HG", Loading Loading @@ -829,6 +973,8 @@ static struct platform_device *sh7372_late_devices[] __initdata = { &dma0_device, &dma1_device, &dma2_device, &usb_dma0_device, &usb_dma1_device, &vpu_device, &veu0_device, &veu1_device, Loading Loading
arch/arm/mach-shmobile/clock-sh7372.c +4 −1 Original line number Diff line number Diff line Loading @@ -509,7 +509,7 @@ enum { MSTP001, MSTP118, MSTP117, MSTP116, MSTP113, MSTP106, MSTP101, MSTP100, MSTP223, MSTP218, MSTP217, MSTP216, MSTP214, MSTP218, MSTP217, MSTP216, MSTP207, MSTP206, MSTP204, MSTP203, MSTP202, MSTP201, MSTP200, MSTP328, MSTP323, MSTP322, MSTP314, MSTP313, MSTP312, MSTP423, MSTP415, MSTP413, MSTP411, MSTP410, MSTP406, MSTP403, MSTP400, Loading Loading @@ -538,6 +538,7 @@ static struct clk mstp_clks[MSTP_NR] = { [MSTP218] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 18, 0), /* DMAC1 */ [MSTP217] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 17, 0), /* DMAC2 */ [MSTP216] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 16, 0), /* DMAC3 */ [MSTP214] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 14, 0), /* USBDMAC */ [MSTP207] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 7, 0), /* SCIFA5 */ [MSTP206] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 6, 0), /* SCIFB */ [MSTP204] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 4, 0), /* SCIFA0 */ Loading Loading @@ -629,6 +630,8 @@ static struct clk_lookup lookups[] = { CLKDEV_DEV_ID("sh-dma-engine.0", &mstp_clks[MSTP218]), /* DMAC1 */ CLKDEV_DEV_ID("sh-dma-engine.1", &mstp_clks[MSTP217]), /* DMAC2 */ CLKDEV_DEV_ID("sh-dma-engine.2", &mstp_clks[MSTP216]), /* DMAC3 */ CLKDEV_DEV_ID("sh-dma-engine.3", &mstp_clks[MSTP214]), /* USB-DMAC0 */ CLKDEV_DEV_ID("sh-dma-engine.4", &mstp_clks[MSTP214]), /* USB-DMAC1 */ CLKDEV_DEV_ID("sh-sci.5", &mstp_clks[MSTP207]), /* SCIFA5 */ CLKDEV_DEV_ID("sh-sci.6", &mstp_clks[MSTP206]), /* SCIFB */ CLKDEV_DEV_ID("sh-sci.0", &mstp_clks[MSTP204]), /* SCIFA0 */ Loading
arch/arm/mach-shmobile/include/mach/sh7372.h +4 −0 Original line number Diff line number Diff line Loading @@ -459,6 +459,10 @@ enum { SHDMA_SLAVE_SDHI2_TX, SHDMA_SLAVE_MMCIF_RX, SHDMA_SLAVE_MMCIF_TX, SHDMA_SLAVE_USB0_TX, SHDMA_SLAVE_USB0_RX, SHDMA_SLAVE_USB1_TX, SHDMA_SLAVE_USB1_RX, }; extern struct clk sh7372_extal1_clk; Loading
arch/arm/mach-shmobile/setup-sh7372.c +146 −0 Original line number Diff line number Diff line Loading @@ -602,6 +602,150 @@ static struct platform_device dma2_device = { }, }; /* * USB-DMAC */ unsigned int usbts_shift[] = {3, 4, 5}; enum { XMIT_SZ_8BYTE = 0, XMIT_SZ_16BYTE = 1, XMIT_SZ_32BYTE = 2, }; #define USBTS_INDEX2VAL(i) (((i) & 3) << 6) static const struct sh_dmae_channel sh7372_usb_dmae_channels[] = { { .offset = 0, }, { .offset = 0x20, }, }; /* USB DMAC0 */ static const struct sh_dmae_slave_config sh7372_usb_dmae0_slaves[] = { { .slave_id = SHDMA_SLAVE_USB0_TX, .chcr = USBTS_INDEX2VAL(XMIT_SZ_8BYTE), }, { .slave_id = SHDMA_SLAVE_USB0_RX, .chcr = USBTS_INDEX2VAL(XMIT_SZ_8BYTE), }, }; static struct sh_dmae_pdata usb_dma0_platform_data = { .slave = sh7372_usb_dmae0_slaves, .slave_num = ARRAY_SIZE(sh7372_usb_dmae0_slaves), .channel = sh7372_usb_dmae_channels, .channel_num = ARRAY_SIZE(sh7372_usb_dmae_channels), .ts_low_shift = 6, .ts_low_mask = 0xc0, .ts_high_shift = 0, .ts_high_mask = 0, .ts_shift = usbts_shift, .ts_shift_num = ARRAY_SIZE(usbts_shift), .dmaor_init = DMAOR_DME, .chcr_offset = 0x14, .chcr_ie_bit = 1 << 5, .dmaor_is_32bit = 1, .needs_tend_set = 1, .no_dmars = 1, }; static struct resource sh7372_usb_dmae0_resources[] = { { /* Channel registers and DMAOR */ .start = 0xe68a0020, .end = 0xe68a0064 - 1, .flags = IORESOURCE_MEM, }, { /* VCR/SWR/DMICR */ .start = 0xe68a0000, .end = 0xe68a0014 - 1, .flags = IORESOURCE_MEM, }, { /* IRQ for channels */ .start = evt2irq(0x0a00), .end = evt2irq(0x0a00), .flags = IORESOURCE_IRQ, }, }; static struct platform_device usb_dma0_device = { .name = "sh-dma-engine", .id = 3, .resource = sh7372_usb_dmae0_resources, .num_resources = ARRAY_SIZE(sh7372_usb_dmae0_resources), .dev = { .platform_data = &usb_dma0_platform_data, }, }; /* USB DMAC1 */ static const struct sh_dmae_slave_config sh7372_usb_dmae1_slaves[] = { { .slave_id = SHDMA_SLAVE_USB1_TX, .chcr = USBTS_INDEX2VAL(XMIT_SZ_8BYTE), }, { .slave_id = SHDMA_SLAVE_USB1_RX, .chcr = USBTS_INDEX2VAL(XMIT_SZ_8BYTE), }, }; static struct sh_dmae_pdata usb_dma1_platform_data = { .slave = sh7372_usb_dmae1_slaves, .slave_num = ARRAY_SIZE(sh7372_usb_dmae1_slaves), .channel = sh7372_usb_dmae_channels, .channel_num = ARRAY_SIZE(sh7372_usb_dmae_channels), .ts_low_shift = 6, .ts_low_mask = 0xc0, .ts_high_shift = 0, .ts_high_mask = 0, .ts_shift = usbts_shift, .ts_shift_num = ARRAY_SIZE(usbts_shift), .dmaor_init = DMAOR_DME, .chcr_offset = 0x14, .chcr_ie_bit = 1 << 5, .dmaor_is_32bit = 1, .needs_tend_set = 1, .no_dmars = 1, }; static struct resource sh7372_usb_dmae1_resources[] = { { /* Channel registers and DMAOR */ .start = 0xe68c0020, .end = 0xe68c0064 - 1, .flags = IORESOURCE_MEM, }, { /* VCR/SWR/DMICR */ .start = 0xe68c0000, .end = 0xe68c0014 - 1, .flags = IORESOURCE_MEM, }, { /* IRQ for channels */ .start = evt2irq(0x1d00), .end = evt2irq(0x1d00), .flags = IORESOURCE_IRQ, }, }; static struct platform_device usb_dma1_device = { .name = "sh-dma-engine", .id = 4, .resource = sh7372_usb_dmae1_resources, .num_resources = ARRAY_SIZE(sh7372_usb_dmae1_resources), .dev = { .platform_data = &usb_dma1_platform_data, }, }; /* VPU */ static struct uio_info vpu_platform_data = { .name = "VPU5HG", Loading Loading @@ -829,6 +973,8 @@ static struct platform_device *sh7372_late_devices[] __initdata = { &dma0_device, &dma1_device, &dma2_device, &usb_dma0_device, &usb_dma1_device, &vpu_device, &veu0_device, &veu1_device, Loading