aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_2420_data.c634
-rw-r--r--arch/arm/plat-omap/include/plat/dmtimer.h11
2 files changed, 645 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod_2420_data.c b/arch/arm/mach-omap2/omap_hwmod_2420_data.c
index f323c6bb22de..c2f84aa114b2 100644
--- a/arch/arm/mach-omap2/omap_hwmod_2420_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_2420_data.c
@@ -19,6 +19,7 @@
19#include <plat/i2c.h> 19#include <plat/i2c.h>
20#include <plat/gpio.h> 20#include <plat/gpio.h>
21#include <plat/mcspi.h> 21#include <plat/mcspi.h>
22#include <plat/dmtimer.h>
22#include <plat/l3_2xxx.h> 23#include <plat/l3_2xxx.h>
23#include <plat/l4_2xxx.h> 24#include <plat/l4_2xxx.h>
24 25
@@ -337,6 +338,625 @@ static struct omap_hwmod omap2420_iva_hwmod = {
337 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420) 338 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420)
338}; 339};
339 340
341/* Timer Common */
342static struct omap_hwmod_class_sysconfig omap2420_timer_sysc = {
343 .rev_offs = 0x0000,
344 .sysc_offs = 0x0010,
345 .syss_offs = 0x0014,
346 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_CLOCKACTIVITY |
347 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
348 SYSC_HAS_AUTOIDLE),
349 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
350 .sysc_fields = &omap_hwmod_sysc_type1,
351};
352
353static struct omap_hwmod_class omap2420_timer_hwmod_class = {
354 .name = "timer",
355 .sysc = &omap2420_timer_sysc,
356 .rev = OMAP_TIMER_IP_VERSION_1,
357};
358
359/* timer1 */
360static struct omap_hwmod omap2420_timer1_hwmod;
361static struct omap_hwmod_irq_info omap2420_timer1_mpu_irqs[] = {
362 { .irq = 37, },
363};
364
365static struct omap_hwmod_addr_space omap2420_timer1_addrs[] = {
366 {
367 .pa_start = 0x48028000,
368 .pa_end = 0x48028000 + SZ_1K - 1,
369 .flags = ADDR_TYPE_RT
370 },
371};
372
373/* l4_wkup -> timer1 */
374static struct omap_hwmod_ocp_if omap2420_l4_wkup__timer1 = {
375 .master = &omap2420_l4_wkup_hwmod,
376 .slave = &omap2420_timer1_hwmod,
377 .clk = "gpt1_ick",
378 .addr = omap2420_timer1_addrs,
379 .addr_cnt = ARRAY_SIZE(omap2420_timer1_addrs),
380 .user = OCP_USER_MPU | OCP_USER_SDMA,
381};
382
383/* timer1 slave port */
384static struct omap_hwmod_ocp_if *omap2420_timer1_slaves[] = {
385 &omap2420_l4_wkup__timer1,
386};
387
388/* timer1 hwmod */
389static struct omap_hwmod omap2420_timer1_hwmod = {
390 .name = "timer1",
391 .mpu_irqs = omap2420_timer1_mpu_irqs,
392 .mpu_irqs_cnt = ARRAY_SIZE(omap2420_timer1_mpu_irqs),
393 .main_clk = "gpt1_fck",
394 .prcm = {
395 .omap2 = {
396 .prcm_reg_id = 1,
397 .module_bit = OMAP24XX_EN_GPT1_SHIFT,
398 .module_offs = WKUP_MOD,
399 .idlest_reg_id = 1,
400 .idlest_idle_bit = OMAP24XX_ST_GPT1_SHIFT,
401 },
402 },
403 .slaves = omap2420_timer1_slaves,
404 .slaves_cnt = ARRAY_SIZE(omap2420_timer1_slaves),
405 .class = &omap2420_timer_hwmod_class,
406 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420)
407};
408
409/* timer2 */
410static struct omap_hwmod omap2420_timer2_hwmod;
411static struct omap_hwmod_irq_info omap2420_timer2_mpu_irqs[] = {
412 { .irq = 38, },
413};
414
415static struct omap_hwmod_addr_space omap2420_timer2_addrs[] = {
416 {
417 .pa_start = 0x4802a000,
418 .pa_end = 0x4802a000 + SZ_1K - 1,
419 .flags = ADDR_TYPE_RT
420 },
421};
422
423/* l4_core -> timer2 */
424static struct omap_hwmod_ocp_if omap2420_l4_core__timer2 = {
425 .master = &omap2420_l4_core_hwmod,
426 .slave = &omap2420_timer2_hwmod,
427 .clk = "gpt2_ick",
428 .addr = omap2420_timer2_addrs,
429 .addr_cnt = ARRAY_SIZE(omap2420_timer2_addrs),
430 .user = OCP_USER_MPU | OCP_USER_SDMA,
431};
432
433/* timer2 slave port */
434static struct omap_hwmod_ocp_if *omap2420_timer2_slaves[] = {
435 &omap2420_l4_core__timer2,
436};
437
438/* timer2 hwmod */
439static struct omap_hwmod omap2420_timer2_hwmod = {
440 .name = "timer2",
441 .mpu_irqs = omap2420_timer2_mpu_irqs,
442 .mpu_irqs_cnt = ARRAY_SIZE(omap2420_timer2_mpu_irqs),
443 .main_clk = "gpt2_fck",
444 .prcm = {
445 .omap2 = {
446 .prcm_reg_id = 1,
447 .module_bit = OMAP24XX_EN_GPT2_SHIFT,
448 .module_offs = CORE_MOD,
449 .idlest_reg_id = 1,
450 .idlest_idle_bit = OMAP24XX_ST_GPT2_SHIFT,
451 },
452 },
453 .slaves = omap2420_timer2_slaves,
454 .slaves_cnt = ARRAY_SIZE(omap2420_timer2_slaves),
455 .class = &omap2420_timer_hwmod_class,
456 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420)
457};
458
459/* timer3 */
460static struct omap_hwmod omap2420_timer3_hwmod;
461static struct omap_hwmod_irq_info omap2420_timer3_mpu_irqs[] = {
462 { .irq = 39, },
463};
464
465static struct omap_hwmod_addr_space omap2420_timer3_addrs[] = {
466 {
467 .pa_start = 0x48078000,
468 .pa_end = 0x48078000 + SZ_1K - 1,
469 .flags = ADDR_TYPE_RT
470 },
471};
472
473/* l4_core -> timer3 */
474static struct omap_hwmod_ocp_if omap2420_l4_core__timer3 = {
475 .master = &omap2420_l4_core_hwmod,
476 .slave = &omap2420_timer3_hwmod,
477 .clk = "gpt3_ick",
478 .addr = omap2420_timer3_addrs,
479 .addr_cnt = ARRAY_SIZE(omap2420_timer3_addrs),
480 .user = OCP_USER_MPU | OCP_USER_SDMA,
481};
482
483/* timer3 slave port */
484static struct omap_hwmod_ocp_if *omap2420_timer3_slaves[] = {
485 &omap2420_l4_core__timer3,
486};
487
488/* timer3 hwmod */
489static struct omap_hwmod omap2420_timer3_hwmod = {
490 .name = "timer3",
491 .mpu_irqs = omap2420_timer3_mpu_irqs,
492 .mpu_irqs_cnt = ARRAY_SIZE(omap2420_timer3_mpu_irqs),
493 .main_clk = "gpt3_fck",
494 .prcm = {
495 .omap2 = {
496 .prcm_reg_id = 1,
497 .module_bit = OMAP24XX_EN_GPT3_SHIFT,
498 .module_offs = CORE_MOD,
499 .idlest_reg_id = 1,
500 .idlest_idle_bit = OMAP24XX_ST_GPT3_SHIFT,
501 },
502 },
503 .slaves = omap2420_timer3_slaves,
504 .slaves_cnt = ARRAY_SIZE(omap2420_timer3_slaves),
505 .class = &omap2420_timer_hwmod_class,
506 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420)
507};
508
509/* timer4 */
510static struct omap_hwmod omap2420_timer4_hwmod;
511static struct omap_hwmod_irq_info omap2420_timer4_mpu_irqs[] = {
512 { .irq = 40, },
513};
514
515static struct omap_hwmod_addr_space omap2420_timer4_addrs[] = {
516 {
517 .pa_start = 0x4807a000,
518 .pa_end = 0x4807a000 + SZ_1K - 1,
519 .flags = ADDR_TYPE_RT
520 },
521};
522
523/* l4_core -> timer4 */
524static struct omap_hwmod_ocp_if omap2420_l4_core__timer4 = {
525 .master = &omap2420_l4_core_hwmod,
526 .slave = &omap2420_timer4_hwmod,
527 .clk = "gpt4_ick",
528 .addr = omap2420_timer4_addrs,
529 .addr_cnt = ARRAY_SIZE(omap2420_timer4_addrs),
530 .user = OCP_USER_MPU | OCP_USER_SDMA,
531};
532
533/* timer4 slave port */
534static struct omap_hwmod_ocp_if *omap2420_timer4_slaves[] = {
535 &omap2420_l4_core__timer4,
536};
537
538/* timer4 hwmod */
539static struct omap_hwmod omap2420_timer4_hwmod = {
540 .name = "timer4",
541 .mpu_irqs = omap2420_timer4_mpu_irqs,
542 .mpu_irqs_cnt = ARRAY_SIZE(omap2420_timer4_mpu_irqs),
543 .main_clk = "gpt4_fck",
544 .prcm = {
545 .omap2 = {
546 .prcm_reg_id = 1,
547 .module_bit = OMAP24XX_EN_GPT4_SHIFT,
548 .module_offs = CORE_MOD,
549 .idlest_reg_id = 1,
550 .idlest_idle_bit = OMAP24XX_ST_GPT4_SHIFT,
551 },
552 },
553 .slaves = omap2420_timer4_slaves,
554 .slaves_cnt = ARRAY_SIZE(omap2420_timer4_slaves),
555 .class = &omap2420_timer_hwmod_class,
556 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420)
557};
558
559/* timer5 */
560static struct omap_hwmod omap2420_timer5_hwmod;
561static struct omap_hwmod_irq_info omap2420_timer5_mpu_irqs[] = {
562 { .irq = 41, },
563};
564
565static struct omap_hwmod_addr_space omap2420_timer5_addrs[] = {
566 {
567 .pa_start = 0x4807c000,
568 .pa_end = 0x4807c000 + SZ_1K - 1,
569 .flags = ADDR_TYPE_RT
570 },
571};
572
573/* l4_core -> timer5 */
574static struct omap_hwmod_ocp_if omap2420_l4_core__timer5 = {
575 .master = &omap2420_l4_core_hwmod,
576 .slave = &omap2420_timer5_hwmod,
577 .clk = "gpt5_ick",
578 .addr = omap2420_timer5_addrs,
579 .addr_cnt = ARRAY_SIZE(omap2420_timer5_addrs),
580 .user = OCP_USER_MPU | OCP_USER_SDMA,
581};
582
583/* timer5 slave port */
584static struct omap_hwmod_ocp_if *omap2420_timer5_slaves[] = {
585 &omap2420_l4_core__timer5,
586};
587
588/* timer5 hwmod */
589static struct omap_hwmod omap2420_timer5_hwmod = {
590 .name = "timer5",
591 .mpu_irqs = omap2420_timer5_mpu_irqs,
592 .mpu_irqs_cnt = ARRAY_SIZE(omap2420_timer5_mpu_irqs),
593 .main_clk = "gpt5_fck",
594 .prcm = {
595 .omap2 = {
596 .prcm_reg_id = 1,
597 .module_bit = OMAP24XX_EN_GPT5_SHIFT,
598 .module_offs = CORE_MOD,
599 .idlest_reg_id = 1,
600 .idlest_idle_bit = OMAP24XX_ST_GPT5_SHIFT,
601 },
602 },
603 .slaves = omap2420_timer5_slaves,
604 .slaves_cnt = ARRAY_SIZE(omap2420_timer5_slaves),
605 .class = &omap2420_timer_hwmod_class,
606 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420)
607};
608
609
610/* timer6 */
611static struct omap_hwmod omap2420_timer6_hwmod;
612static struct omap_hwmod_irq_info omap2420_timer6_mpu_irqs[] = {
613 { .irq = 42, },
614};
615
616static struct omap_hwmod_addr_space omap2420_timer6_addrs[] = {
617 {
618 .pa_start = 0x4807e000,
619 .pa_end = 0x4807e000 + SZ_1K - 1,
620 .flags = ADDR_TYPE_RT
621 },
622};
623
624/* l4_core -> timer6 */
625static struct omap_hwmod_ocp_if omap2420_l4_core__timer6 = {
626 .master = &omap2420_l4_core_hwmod,
627 .slave = &omap2420_timer6_hwmod,
628 .clk = "gpt6_ick",
629 .addr = omap2420_timer6_addrs,
630 .addr_cnt = ARRAY_SIZE(omap2420_timer6_addrs),
631 .user = OCP_USER_MPU | OCP_USER_SDMA,
632};
633
634/* timer6 slave port */
635static struct omap_hwmod_ocp_if *omap2420_timer6_slaves[] = {
636 &omap2420_l4_core__timer6,
637};
638
639/* timer6 hwmod */
640static struct omap_hwmod omap2420_timer6_hwmod = {
641 .name = "timer6",
642 .mpu_irqs = omap2420_timer6_mpu_irqs,
643 .mpu_irqs_cnt = ARRAY_SIZE(omap2420_timer6_mpu_irqs),
644 .main_clk = "gpt6_fck",
645 .prcm = {
646 .omap2 = {
647 .prcm_reg_id = 1,
648 .module_bit = OMAP24XX_EN_GPT6_SHIFT,
649 .module_offs = CORE_MOD,
650 .idlest_reg_id = 1,
651 .idlest_idle_bit = OMAP24XX_ST_GPT6_SHIFT,
652 },
653 },
654 .slaves = omap2420_timer6_slaves,
655 .slaves_cnt = ARRAY_SIZE(omap2420_timer6_slaves),
656 .class = &omap2420_timer_hwmod_class,
657 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420)
658};
659
660/* timer7 */
661static struct omap_hwmod omap2420_timer7_hwmod;
662static struct omap_hwmod_irq_info omap2420_timer7_mpu_irqs[] = {
663 { .irq = 43, },
664};
665
666static struct omap_hwmod_addr_space omap2420_timer7_addrs[] = {
667 {
668 .pa_start = 0x48080000,
669 .pa_end = 0x48080000 + SZ_1K - 1,
670 .flags = ADDR_TYPE_RT
671 },
672};
673
674/* l4_core -> timer7 */
675static struct omap_hwmod_ocp_if omap2420_l4_core__timer7 = {
676 .master = &omap2420_l4_core_hwmod,
677 .slave = &omap2420_timer7_hwmod,
678 .clk = "gpt7_ick",
679 .addr = omap2420_timer7_addrs,
680 .addr_cnt = ARRAY_SIZE(omap2420_timer7_addrs),
681 .user = OCP_USER_MPU | OCP_USER_SDMA,
682};
683
684/* timer7 slave port */
685static struct omap_hwmod_ocp_if *omap2420_timer7_slaves[] = {
686 &omap2420_l4_core__timer7,
687};
688
689/* timer7 hwmod */
690static struct omap_hwmod omap2420_timer7_hwmod = {
691 .name = "timer7",
692 .mpu_irqs = omap2420_timer7_mpu_irqs,
693 .mpu_irqs_cnt = ARRAY_SIZE(omap2420_timer7_mpu_irqs),
694 .main_clk = "gpt7_fck",
695 .prcm = {
696 .omap2 = {
697 .prcm_reg_id = 1,
698 .module_bit = OMAP24XX_EN_GPT7_SHIFT,
699 .module_offs = CORE_MOD,
700 .idlest_reg_id = 1,
701 .idlest_idle_bit = OMAP24XX_ST_GPT7_SHIFT,
702 },
703 },
704 .slaves = omap2420_timer7_slaves,
705 .slaves_cnt = ARRAY_SIZE(omap2420_timer7_slaves),
706 .class = &omap2420_timer_hwmod_class,
707 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420)
708};
709
710/* timer8 */
711static struct omap_hwmod omap2420_timer8_hwmod;
712static struct omap_hwmod_irq_info omap2420_timer8_mpu_irqs[] = {
713 { .irq = 44, },
714};
715
716static struct omap_hwmod_addr_space omap2420_timer8_addrs[] = {
717 {
718 .pa_start = 0x48082000,
719 .pa_end = 0x48082000 + SZ_1K - 1,
720 .flags = ADDR_TYPE_RT
721 },
722};
723
724/* l4_core -> timer8 */
725static struct omap_hwmod_ocp_if omap2420_l4_core__timer8 = {
726 .master = &omap2420_l4_core_hwmod,
727 .slave = &omap2420_timer8_hwmod,
728 .clk = "gpt8_ick",
729 .addr = omap2420_timer8_addrs,
730 .addr_cnt = ARRAY_SIZE(omap2420_timer8_addrs),
731 .user = OCP_USER_MPU | OCP_USER_SDMA,
732};
733
734/* timer8 slave port */
735static struct omap_hwmod_ocp_if *omap2420_timer8_slaves[] = {
736 &omap2420_l4_core__timer8,
737};
738
739/* timer8 hwmod */
740static struct omap_hwmod omap2420_timer8_hwmod = {
741 .name = "timer8",
742 .mpu_irqs = omap2420_timer8_mpu_irqs,
743 .mpu_irqs_cnt = ARRAY_SIZE(omap2420_timer8_mpu_irqs),
744 .main_clk = "gpt8_fck",
745 .prcm = {
746 .omap2 = {
747 .prcm_reg_id = 1,
748 .module_bit = OMAP24XX_EN_GPT8_SHIFT,
749 .module_offs = CORE_MOD,
750 .idlest_reg_id = 1,
751 .idlest_idle_bit = OMAP24XX_ST_GPT8_SHIFT,
752 },
753 },
754 .slaves = omap2420_timer8_slaves,
755 .slaves_cnt = ARRAY_SIZE(omap2420_timer8_slaves),
756 .class = &omap2420_timer_hwmod_class,
757 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420)
758};
759
760/* timer9 */
761static struct omap_hwmod omap2420_timer9_hwmod;
762static struct omap_hwmod_irq_info omap2420_timer9_mpu_irqs[] = {
763 { .irq = 45, },
764};
765
766static struct omap_hwmod_addr_space omap2420_timer9_addrs[] = {
767 {
768 .pa_start = 0x48084000,
769 .pa_end = 0x48084000 + SZ_1K - 1,
770 .flags = ADDR_TYPE_RT
771 },
772};
773
774/* l4_core -> timer9 */
775static struct omap_hwmod_ocp_if omap2420_l4_core__timer9 = {
776 .master = &omap2420_l4_core_hwmod,
777 .slave = &omap2420_timer9_hwmod,
778 .clk = "gpt9_ick",
779 .addr = omap2420_timer9_addrs,
780 .addr_cnt = ARRAY_SIZE(omap2420_timer9_addrs),
781 .user = OCP_USER_MPU | OCP_USER_SDMA,
782};
783
784/* timer9 slave port */
785static struct omap_hwmod_ocp_if *omap2420_timer9_slaves[] = {
786 &omap2420_l4_core__timer9,
787};
788
789/* timer9 hwmod */
790static struct omap_hwmod omap2420_timer9_hwmod = {
791 .name = "timer9",
792 .mpu_irqs = omap2420_timer9_mpu_irqs,
793 .mpu_irqs_cnt = ARRAY_SIZE(omap2420_timer9_mpu_irqs),
794 .main_clk = "gpt9_fck",
795 .prcm = {
796 .omap2 = {
797 .prcm_reg_id = 1,
798 .module_bit = OMAP24XX_EN_GPT9_SHIFT,
799 .module_offs = CORE_MOD,
800 .idlest_reg_id = 1,
801 .idlest_idle_bit = OMAP24XX_ST_GPT9_SHIFT,
802 },
803 },
804 .slaves = omap2420_timer9_slaves,
805 .slaves_cnt = ARRAY_SIZE(omap2420_timer9_slaves),
806 .class = &omap2420_timer_hwmod_class,
807 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420)
808};
809
810/* timer10 */
811static struct omap_hwmod omap2420_timer10_hwmod;
812static struct omap_hwmod_irq_info omap2420_timer10_mpu_irqs[] = {
813 { .irq = 46, },
814};
815
816static struct omap_hwmod_addr_space omap2420_timer10_addrs[] = {
817 {
818 .pa_start = 0x48086000,
819 .pa_end = 0x48086000 + SZ_1K - 1,
820 .flags = ADDR_TYPE_RT
821 },
822};
823
824/* l4_core -> timer10 */
825static struct omap_hwmod_ocp_if omap2420_l4_core__timer10 = {
826 .master = &omap2420_l4_core_hwmod,
827 .slave = &omap2420_timer10_hwmod,
828 .clk = "gpt10_ick",
829 .addr = omap2420_timer10_addrs,
830 .addr_cnt = ARRAY_SIZE(omap2420_timer10_addrs),
831 .user = OCP_USER_MPU | OCP_USER_SDMA,
832};
833
834/* timer10 slave port */
835static struct omap_hwmod_ocp_if *omap2420_timer10_slaves[] = {
836 &omap2420_l4_core__timer10,
837};
838
839/* timer10 hwmod */
840static struct omap_hwmod omap2420_timer10_hwmod = {
841 .name = "timer10",
842 .mpu_irqs = omap2420_timer10_mpu_irqs,
843 .mpu_irqs_cnt = ARRAY_SIZE(omap2420_timer10_mpu_irqs),
844 .main_clk = "gpt10_fck",
845 .prcm = {
846 .omap2 = {
847 .prcm_reg_id = 1,
848 .module_bit = OMAP24XX_EN_GPT10_SHIFT,
849 .module_offs = CORE_MOD,
850 .idlest_reg_id = 1,
851 .idlest_idle_bit = OMAP24XX_ST_GPT10_SHIFT,
852 },
853 },
854 .slaves = omap2420_timer10_slaves,
855 .slaves_cnt = ARRAY_SIZE(omap2420_timer10_slaves),
856 .class = &omap2420_timer_hwmod_class,
857 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420)
858};
859
860/* timer11 */
861static struct omap_hwmod omap2420_timer11_hwmod;
862static struct omap_hwmod_irq_info omap2420_timer11_mpu_irqs[] = {
863 { .irq = 47, },
864};
865
866static struct omap_hwmod_addr_space omap2420_timer11_addrs[] = {
867 {
868 .pa_start = 0x48088000,
869 .pa_end = 0x48088000 + SZ_1K - 1,
870 .flags = ADDR_TYPE_RT
871 },
872};
873
874/* l4_core -> timer11 */
875static struct omap_hwmod_ocp_if omap2420_l4_core__timer11 = {
876 .master = &omap2420_l4_core_hwmod,
877 .slave = &omap2420_timer11_hwmod,
878 .clk = "gpt11_ick",
879 .addr = omap2420_timer11_addrs,
880 .addr_cnt = ARRAY_SIZE(omap2420_timer11_addrs),
881 .user = OCP_USER_MPU | OCP_USER_SDMA,
882};
883
884/* timer11 slave port */
885static struct omap_hwmod_ocp_if *omap2420_timer11_slaves[] = {
886 &omap2420_l4_core__timer11,
887};
888
889/* timer11 hwmod */
890static struct omap_hwmod omap2420_timer11_hwmod = {
891 .name = "timer11",
892 .mpu_irqs = omap2420_timer11_mpu_irqs,
893 .mpu_irqs_cnt = ARRAY_SIZE(omap2420_timer11_mpu_irqs),
894 .main_clk = "gpt11_fck",
895 .prcm = {
896 .omap2 = {
897 .prcm_reg_id = 1,
898 .module_bit = OMAP24XX_EN_GPT11_SHIFT,
899 .module_offs = CORE_MOD,
900 .idlest_reg_id = 1,
901 .idlest_idle_bit = OMAP24XX_ST_GPT11_SHIFT,
902 },
903 },
904 .slaves = omap2420_timer11_slaves,
905 .slaves_cnt = ARRAY_SIZE(omap2420_timer11_slaves),
906 .class = &omap2420_timer_hwmod_class,
907 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420)
908};
909
910/* timer12 */
911static struct omap_hwmod omap2420_timer12_hwmod;
912static struct omap_hwmod_irq_info omap2420_timer12_mpu_irqs[] = {
913 { .irq = 48, },
914};
915
916static struct omap_hwmod_addr_space omap2420_timer12_addrs[] = {
917 {
918 .pa_start = 0x4808a000,
919 .pa_end = 0x4808a000 + SZ_1K - 1,
920 .flags = ADDR_TYPE_RT
921 },
922};
923
924/* l4_core -> timer12 */
925static struct omap_hwmod_ocp_if omap2420_l4_core__timer12 = {
926 .master = &omap2420_l4_core_hwmod,
927 .slave = &omap2420_timer12_hwmod,
928 .clk = "gpt12_ick",
929 .addr = omap2420_timer12_addrs,
930 .addr_cnt = ARRAY_SIZE(omap2420_timer12_addrs),
931 .user = OCP_USER_MPU | OCP_USER_SDMA,
932};
933
934/* timer12 slave port */
935static struct omap_hwmod_ocp_if *omap2420_timer12_slaves[] = {
936 &omap2420_l4_core__timer12,
937};
938
939/* timer12 hwmod */
940static struct omap_hwmod omap2420_timer12_hwmod = {
941 .name = "timer12",
942 .mpu_irqs = omap2420_timer12_mpu_irqs,
943 .mpu_irqs_cnt = ARRAY_SIZE(omap2420_timer12_mpu_irqs),
944 .main_clk = "gpt12_fck",
945 .prcm = {
946 .omap2 = {
947 .prcm_reg_id = 1,
948 .module_bit = OMAP24XX_EN_GPT12_SHIFT,
949 .module_offs = CORE_MOD,
950 .idlest_reg_id = 1,
951 .idlest_idle_bit = OMAP24XX_ST_GPT12_SHIFT,
952 },
953 },
954 .slaves = omap2420_timer12_slaves,
955 .slaves_cnt = ARRAY_SIZE(omap2420_timer12_slaves),
956 .class = &omap2420_timer_hwmod_class,
957 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420)
958};
959
340/* l4_wkup -> wd_timer2 */ 960/* l4_wkup -> wd_timer2 */
341static struct omap_hwmod_addr_space omap2420_wd_timer2_addrs[] = { 961static struct omap_hwmod_addr_space omap2420_wd_timer2_addrs[] = {
342 { 962 {
@@ -1326,6 +1946,20 @@ static __initdata struct omap_hwmod *omap2420_hwmods[] = {
1326 &omap2420_l4_wkup_hwmod, 1946 &omap2420_l4_wkup_hwmod,
1327 &omap2420_mpu_hwmod, 1947 &omap2420_mpu_hwmod,
1328 &omap2420_iva_hwmod, 1948 &omap2420_iva_hwmod,
1949
1950 &omap2420_timer1_hwmod,
1951 &omap2420_timer2_hwmod,
1952 &omap2420_timer3_hwmod,
1953 &omap2420_timer4_hwmod,
1954 &omap2420_timer5_hwmod,
1955 &omap2420_timer6_hwmod,
1956 &omap2420_timer7_hwmod,
1957 &omap2420_timer8_hwmod,
1958 &omap2420_timer9_hwmod,
1959 &omap2420_timer10_hwmod,
1960 &omap2420_timer11_hwmod,
1961 &omap2420_timer12_hwmod,
1962
1329 &omap2420_wd_timer2_hwmod, 1963 &omap2420_wd_timer2_hwmod,
1330 &omap2420_uart1_hwmod, 1964 &omap2420_uart1_hwmod,
1331 &omap2420_uart2_hwmod, 1965 &omap2420_uart2_hwmod,
diff --git a/arch/arm/plat-omap/include/plat/dmtimer.h b/arch/arm/plat-omap/include/plat/dmtimer.h
index dfa3aff9761b..d6c70d2f4030 100644
--- a/arch/arm/plat-omap/include/plat/dmtimer.h
+++ b/arch/arm/plat-omap/include/plat/dmtimer.h
@@ -3,6 +3,12 @@
3 * 3 *
4 * OMAP Dual-Mode Timers 4 * OMAP Dual-Mode Timers
5 * 5 *
6 * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
7 * Tarun Kanti DebBarma <tarun.kanti@ti.com>
8 * Thara Gopinath <thara@ti.com>
9 *
10 * Platform device conversion and hwmod support.
11 *
6 * Copyright (C) 2005 Nokia Corporation 12 * Copyright (C) 2005 Nokia Corporation
7 * Author: Lauri Leukkunen <lauri.leukkunen@nokia.com> 13 * Author: Lauri Leukkunen <lauri.leukkunen@nokia.com>
8 * PWM and clock framwork support by Timo Teras. 14 * PWM and clock framwork support by Timo Teras.
@@ -44,6 +50,11 @@
44#define OMAP_TIMER_TRIGGER_OVERFLOW 0x01 50#define OMAP_TIMER_TRIGGER_OVERFLOW 0x01
45#define OMAP_TIMER_TRIGGER_OVERFLOW_AND_COMPARE 0x02 51#define OMAP_TIMER_TRIGGER_OVERFLOW_AND_COMPARE 0x02
46 52
53/*
54 * IP revision identifier so that Highlander IP
55 * in OMAP4 can be distinguished.
56 */
57#define OMAP_TIMER_IP_VERSION_1 0x1
47struct omap_dm_timer; 58struct omap_dm_timer;
48extern struct omap_dm_timer *gptimer_wakeup; 59extern struct omap_dm_timer *gptimer_wakeup;
49extern struct sys_timer omap_timer; 60extern struct sys_timer omap_timer;