aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-spear3xx/spear320.c
diff options
context:
space:
mode:
authorViresh Kumar <viresh.kumar@st.com>2012-03-26 00:59:23 -0400
committerArnd Bergmann <arnd@arndb.de>2012-04-22 16:41:35 -0400
commit0b7ee71794b043de8a02d8887b69a57e4003106a (patch)
treefb4386d24146993d3c1400abbc6974c27c16722d /arch/arm/mach-spear3xx/spear320.c
parentc5fa4fdcdbe5f52c3e36892cc81f9378339b00ce (diff)
SPEAr: Add PL080 DMA support for 3xx and 6xx
Both SPEAr3xx and SPEAr6xx families have one instance of ARM PL080 DMA controller. This patch adds in support for that. Signed-off-by: Viresh Kumar <viresh.kumar@st.com>
Diffstat (limited to 'arch/arm/mach-spear3xx/spear320.c')
-rw-r--r--arch/arm/mach-spear3xx/spear320.c192
1 files changed, 192 insertions, 0 deletions
diff --git a/arch/arm/mach-spear3xx/spear320.c b/arch/arm/mach-spear3xx/spear320.c
index 9c571d0f20c3..1e74031e1213 100644
--- a/arch/arm/mach-spear3xx/spear320.c
+++ b/arch/arm/mach-spear3xx/spear320.c
@@ -535,6 +535,193 @@ static struct pmx_dev *spear320_evb_pmx_devs[] = {
535 &spear320_pmx_mii1, 535 &spear320_pmx_mii1,
536}; 536};
537 537
538/* DMAC platform data's slave info */
539struct pl08x_channel_data spear320_dma_info[] = {
540 {
541 .bus_id = "uart0_rx",
542 .min_signal = 2,
543 .max_signal = 2,
544 .muxval = 0,
545 .cctl = 0,
546 .periph_buses = PL08X_AHB1,
547 }, {
548 .bus_id = "uart0_tx",
549 .min_signal = 3,
550 .max_signal = 3,
551 .muxval = 0,
552 .cctl = 0,
553 .periph_buses = PL08X_AHB1,
554 }, {
555 .bus_id = "ssp0_rx",
556 .min_signal = 8,
557 .max_signal = 8,
558 .muxval = 0,
559 .cctl = 0,
560 .periph_buses = PL08X_AHB1,
561 }, {
562 .bus_id = "ssp0_tx",
563 .min_signal = 9,
564 .max_signal = 9,
565 .muxval = 0,
566 .cctl = 0,
567 .periph_buses = PL08X_AHB1,
568 }, {
569 .bus_id = "i2c0_rx",
570 .min_signal = 10,
571 .max_signal = 10,
572 .muxval = 0,
573 .cctl = 0,
574 .periph_buses = PL08X_AHB1,
575 }, {
576 .bus_id = "i2c0_tx",
577 .min_signal = 11,
578 .max_signal = 11,
579 .muxval = 0,
580 .cctl = 0,
581 .periph_buses = PL08X_AHB1,
582 }, {
583 .bus_id = "irda",
584 .min_signal = 12,
585 .max_signal = 12,
586 .muxval = 0,
587 .cctl = 0,
588 .periph_buses = PL08X_AHB1,
589 }, {
590 .bus_id = "adc",
591 .min_signal = 13,
592 .max_signal = 13,
593 .muxval = 0,
594 .cctl = 0,
595 .periph_buses = PL08X_AHB1,
596 }, {
597 .bus_id = "to_jpeg",
598 .min_signal = 14,
599 .max_signal = 14,
600 .muxval = 0,
601 .cctl = 0,
602 .periph_buses = PL08X_AHB1,
603 }, {
604 .bus_id = "from_jpeg",
605 .min_signal = 15,
606 .max_signal = 15,
607 .muxval = 0,
608 .cctl = 0,
609 .periph_buses = PL08X_AHB1,
610 }, {
611 .bus_id = "ssp1_rx",
612 .min_signal = 0,
613 .max_signal = 0,
614 .muxval = 1,
615 .cctl = 0,
616 .periph_buses = PL08X_AHB2,
617 }, {
618 .bus_id = "ssp1_tx",
619 .min_signal = 1,
620 .max_signal = 1,
621 .muxval = 1,
622 .cctl = 0,
623 .periph_buses = PL08X_AHB2,
624 }, {
625 .bus_id = "ssp2_rx",
626 .min_signal = 2,
627 .max_signal = 2,
628 .muxval = 1,
629 .cctl = 0,
630 .periph_buses = PL08X_AHB2,
631 }, {
632 .bus_id = "ssp2_tx",
633 .min_signal = 3,
634 .max_signal = 3,
635 .muxval = 1,
636 .cctl = 0,
637 .periph_buses = PL08X_AHB2,
638 }, {
639 .bus_id = "uart1_rx",
640 .min_signal = 4,
641 .max_signal = 4,
642 .muxval = 1,
643 .cctl = 0,
644 .periph_buses = PL08X_AHB2,
645 }, {
646 .bus_id = "uart1_tx",
647 .min_signal = 5,
648 .max_signal = 5,
649 .muxval = 1,
650 .cctl = 0,
651 .periph_buses = PL08X_AHB2,
652 }, {
653 .bus_id = "uart2_rx",
654 .min_signal = 6,
655 .max_signal = 6,
656 .muxval = 1,
657 .cctl = 0,
658 .periph_buses = PL08X_AHB2,
659 }, {
660 .bus_id = "uart2_tx",
661 .min_signal = 7,
662 .max_signal = 7,
663 .muxval = 1,
664 .cctl = 0,
665 .periph_buses = PL08X_AHB2,
666 }, {
667 .bus_id = "i2c1_rx",
668 .min_signal = 8,
669 .max_signal = 8,
670 .muxval = 1,
671 .cctl = 0,
672 .periph_buses = PL08X_AHB2,
673 }, {
674 .bus_id = "i2c1_tx",
675 .min_signal = 9,
676 .max_signal = 9,
677 .muxval = 1,
678 .cctl = 0,
679 .periph_buses = PL08X_AHB2,
680 }, {
681 .bus_id = "i2c2_rx",
682 .min_signal = 10,
683 .max_signal = 10,
684 .muxval = 1,
685 .cctl = 0,
686 .periph_buses = PL08X_AHB2,
687 }, {
688 .bus_id = "i2c2_tx",
689 .min_signal = 11,
690 .max_signal = 11,
691 .muxval = 1,
692 .cctl = 0,
693 .periph_buses = PL08X_AHB2,
694 }, {
695 .bus_id = "i2s_rx",
696 .min_signal = 12,
697 .max_signal = 12,
698 .muxval = 1,
699 .cctl = 0,
700 .periph_buses = PL08X_AHB2,
701 }, {
702 .bus_id = "i2s_tx",
703 .min_signal = 13,
704 .max_signal = 13,
705 .muxval = 1,
706 .cctl = 0,
707 .periph_buses = PL08X_AHB2,
708 }, {
709 .bus_id = "rs485_rx",
710 .min_signal = 14,
711 .max_signal = 14,
712 .muxval = 1,
713 .cctl = 0,
714 .periph_buses = PL08X_AHB2,
715 }, {
716 .bus_id = "rs485_tx",
717 .min_signal = 15,
718 .max_signal = 15,
719 .muxval = 1,
720 .cctl = 0,
721 .periph_buses = PL08X_AHB2,
722 },
723};
724
538static struct pl022_ssp_controller spear320_ssp_data[] = { 725static struct pl022_ssp_controller spear320_ssp_data[] = {
539 { 726 {
540 .bus_id = 1, 727 .bus_id = 1,
@@ -569,6 +756,8 @@ static struct amba_pl011_data spear320_uart_data[] = {
569static struct of_dev_auxdata spear320_auxdata_lookup[] __initdata = { 756static struct of_dev_auxdata spear320_auxdata_lookup[] __initdata = {
570 OF_DEV_AUXDATA("arm,pl022", SPEAR3XX_ICM1_SSP_BASE, NULL, 757 OF_DEV_AUXDATA("arm,pl022", SPEAR3XX_ICM1_SSP_BASE, NULL,
571 &pl022_plat_data), 758 &pl022_plat_data),
759 OF_DEV_AUXDATA("arm,pl080", SPEAR3XX_ICM3_DMA_BASE, NULL,
760 &pl080_plat_data),
572 OF_DEV_AUXDATA("arm,pl022", SPEAR320_SSP0_BASE, NULL, 761 OF_DEV_AUXDATA("arm,pl022", SPEAR320_SSP0_BASE, NULL,
573 &spear320_ssp_data[0]), 762 &spear320_ssp_data[0]),
574 OF_DEV_AUXDATA("arm,pl022", SPEAR320_SSP1_BASE, NULL, 763 OF_DEV_AUXDATA("arm,pl022", SPEAR320_SSP1_BASE, NULL,
@@ -585,6 +774,9 @@ static void __init spear320_dt_init(void)
585 void __iomem *base; 774 void __iomem *base;
586 int ret = 0; 775 int ret = 0;
587 776
777 pl080_plat_data.slave_channels = spear320_dma_info;
778 pl080_plat_data.num_slave_channels = ARRAY_SIZE(spear320_dma_info);
779
588 of_platform_populate(NULL, of_default_bus_match_table, 780 of_platform_populate(NULL, of_default_bus_match_table,
589 spear320_auxdata_lookup, NULL); 781 spear320_auxdata_lookup, NULL);
590 782