diff options
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 235 |
1 files changed, 235 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c index e20b0eebc6d9..afcbd483a6c4 100644 --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c | |||
@@ -452,6 +452,235 @@ static struct omap_hwmod omap44xx_mpu_hwmod = { | |||
452 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | 452 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), |
453 | }; | 453 | }; |
454 | 454 | ||
455 | /* | ||
456 | * 'uart' class | ||
457 | * universal asynchronous receiver/transmitter (uart) | ||
458 | */ | ||
459 | |||
460 | static struct omap_hwmod_class_sysconfig omap44xx_uart_sysc = { | ||
461 | .rev_offs = 0x0050, | ||
462 | .sysc_offs = 0x0054, | ||
463 | .syss_offs = 0x0058, | ||
464 | .sysc_flags = (SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE | | ||
465 | SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE), | ||
466 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), | ||
467 | .sysc_fields = &omap_hwmod_sysc_type1, | ||
468 | }; | ||
469 | |||
470 | static struct omap_hwmod_class omap44xx_uart_hwmod_class = { | ||
471 | .name = "uart", | ||
472 | .sysc = &omap44xx_uart_sysc, | ||
473 | }; | ||
474 | |||
475 | /* uart1 */ | ||
476 | static struct omap_hwmod omap44xx_uart1_hwmod; | ||
477 | static struct omap_hwmod_irq_info omap44xx_uart1_irqs[] = { | ||
478 | { .irq = 72 + OMAP44XX_IRQ_GIC_START }, | ||
479 | }; | ||
480 | |||
481 | static struct omap_hwmod_dma_info omap44xx_uart1_sdma_reqs[] = { | ||
482 | { .name = "tx", .dma_req = 48 + OMAP44XX_DMA_REQ_START }, | ||
483 | { .name = "rx", .dma_req = 49 + OMAP44XX_DMA_REQ_START }, | ||
484 | }; | ||
485 | |||
486 | static struct omap_hwmod_addr_space omap44xx_uart1_addrs[] = { | ||
487 | { | ||
488 | .pa_start = 0x4806a000, | ||
489 | .pa_end = 0x4806a0ff, | ||
490 | .flags = ADDR_TYPE_RT | ||
491 | }, | ||
492 | }; | ||
493 | |||
494 | /* l4_per -> uart1 */ | ||
495 | static struct omap_hwmod_ocp_if omap44xx_l4_per__uart1 = { | ||
496 | .master = &omap44xx_l4_per_hwmod, | ||
497 | .slave = &omap44xx_uart1_hwmod, | ||
498 | .clk = "l4_div_ck", | ||
499 | .addr = omap44xx_uart1_addrs, | ||
500 | .addr_cnt = ARRAY_SIZE(omap44xx_uart1_addrs), | ||
501 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
502 | }; | ||
503 | |||
504 | /* uart1 slave ports */ | ||
505 | static struct omap_hwmod_ocp_if *omap44xx_uart1_slaves[] = { | ||
506 | &omap44xx_l4_per__uart1, | ||
507 | }; | ||
508 | |||
509 | static struct omap_hwmod omap44xx_uart1_hwmod = { | ||
510 | .name = "uart1", | ||
511 | .class = &omap44xx_uart_hwmod_class, | ||
512 | .mpu_irqs = omap44xx_uart1_irqs, | ||
513 | .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_uart1_irqs), | ||
514 | .sdma_reqs = omap44xx_uart1_sdma_reqs, | ||
515 | .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_uart1_sdma_reqs), | ||
516 | .main_clk = "uart1_fck", | ||
517 | .prcm = { | ||
518 | .omap4 = { | ||
519 | .clkctrl_reg = OMAP4430_CM_L4PER_UART1_CLKCTRL, | ||
520 | }, | ||
521 | }, | ||
522 | .slaves = omap44xx_uart1_slaves, | ||
523 | .slaves_cnt = ARRAY_SIZE(omap44xx_uart1_slaves), | ||
524 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
525 | }; | ||
526 | |||
527 | /* uart2 */ | ||
528 | static struct omap_hwmod omap44xx_uart2_hwmod; | ||
529 | static struct omap_hwmod_irq_info omap44xx_uart2_irqs[] = { | ||
530 | { .irq = 73 + OMAP44XX_IRQ_GIC_START }, | ||
531 | }; | ||
532 | |||
533 | static struct omap_hwmod_dma_info omap44xx_uart2_sdma_reqs[] = { | ||
534 | { .name = "tx", .dma_req = 50 + OMAP44XX_DMA_REQ_START }, | ||
535 | { .name = "rx", .dma_req = 51 + OMAP44XX_DMA_REQ_START }, | ||
536 | }; | ||
537 | |||
538 | static struct omap_hwmod_addr_space omap44xx_uart2_addrs[] = { | ||
539 | { | ||
540 | .pa_start = 0x4806c000, | ||
541 | .pa_end = 0x4806c0ff, | ||
542 | .flags = ADDR_TYPE_RT | ||
543 | }, | ||
544 | }; | ||
545 | |||
546 | /* l4_per -> uart2 */ | ||
547 | static struct omap_hwmod_ocp_if omap44xx_l4_per__uart2 = { | ||
548 | .master = &omap44xx_l4_per_hwmod, | ||
549 | .slave = &omap44xx_uart2_hwmod, | ||
550 | .clk = "l4_div_ck", | ||
551 | .addr = omap44xx_uart2_addrs, | ||
552 | .addr_cnt = ARRAY_SIZE(omap44xx_uart2_addrs), | ||
553 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
554 | }; | ||
555 | |||
556 | /* uart2 slave ports */ | ||
557 | static struct omap_hwmod_ocp_if *omap44xx_uart2_slaves[] = { | ||
558 | &omap44xx_l4_per__uart2, | ||
559 | }; | ||
560 | |||
561 | static struct omap_hwmod omap44xx_uart2_hwmod = { | ||
562 | .name = "uart2", | ||
563 | .class = &omap44xx_uart_hwmod_class, | ||
564 | .mpu_irqs = omap44xx_uart2_irqs, | ||
565 | .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_uart2_irqs), | ||
566 | .sdma_reqs = omap44xx_uart2_sdma_reqs, | ||
567 | .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_uart2_sdma_reqs), | ||
568 | .main_clk = "uart2_fck", | ||
569 | .prcm = { | ||
570 | .omap4 = { | ||
571 | .clkctrl_reg = OMAP4430_CM_L4PER_UART2_CLKCTRL, | ||
572 | }, | ||
573 | }, | ||
574 | .slaves = omap44xx_uart2_slaves, | ||
575 | .slaves_cnt = ARRAY_SIZE(omap44xx_uart2_slaves), | ||
576 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
577 | }; | ||
578 | |||
579 | /* uart3 */ | ||
580 | static struct omap_hwmod omap44xx_uart3_hwmod; | ||
581 | static struct omap_hwmod_irq_info omap44xx_uart3_irqs[] = { | ||
582 | { .irq = 74 + OMAP44XX_IRQ_GIC_START }, | ||
583 | }; | ||
584 | |||
585 | static struct omap_hwmod_dma_info omap44xx_uart3_sdma_reqs[] = { | ||
586 | { .name = "tx", .dma_req = 52 + OMAP44XX_DMA_REQ_START }, | ||
587 | { .name = "rx", .dma_req = 53 + OMAP44XX_DMA_REQ_START }, | ||
588 | }; | ||
589 | |||
590 | static struct omap_hwmod_addr_space omap44xx_uart3_addrs[] = { | ||
591 | { | ||
592 | .pa_start = 0x48020000, | ||
593 | .pa_end = 0x480200ff, | ||
594 | .flags = ADDR_TYPE_RT | ||
595 | }, | ||
596 | }; | ||
597 | |||
598 | /* l4_per -> uart3 */ | ||
599 | static struct omap_hwmod_ocp_if omap44xx_l4_per__uart3 = { | ||
600 | .master = &omap44xx_l4_per_hwmod, | ||
601 | .slave = &omap44xx_uart3_hwmod, | ||
602 | .clk = "l4_div_ck", | ||
603 | .addr = omap44xx_uart3_addrs, | ||
604 | .addr_cnt = ARRAY_SIZE(omap44xx_uart3_addrs), | ||
605 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
606 | }; | ||
607 | |||
608 | /* uart3 slave ports */ | ||
609 | static struct omap_hwmod_ocp_if *omap44xx_uart3_slaves[] = { | ||
610 | &omap44xx_l4_per__uart3, | ||
611 | }; | ||
612 | |||
613 | static struct omap_hwmod omap44xx_uart3_hwmod = { | ||
614 | .name = "uart3", | ||
615 | .class = &omap44xx_uart_hwmod_class, | ||
616 | .flags = (HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET), | ||
617 | .mpu_irqs = omap44xx_uart3_irqs, | ||
618 | .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_uart3_irqs), | ||
619 | .sdma_reqs = omap44xx_uart3_sdma_reqs, | ||
620 | .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_uart3_sdma_reqs), | ||
621 | .main_clk = "uart3_fck", | ||
622 | .prcm = { | ||
623 | .omap4 = { | ||
624 | .clkctrl_reg = OMAP4430_CM_L4PER_UART3_CLKCTRL, | ||
625 | }, | ||
626 | }, | ||
627 | .slaves = omap44xx_uart3_slaves, | ||
628 | .slaves_cnt = ARRAY_SIZE(omap44xx_uart3_slaves), | ||
629 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
630 | }; | ||
631 | |||
632 | /* uart4 */ | ||
633 | static struct omap_hwmod omap44xx_uart4_hwmod; | ||
634 | static struct omap_hwmod_irq_info omap44xx_uart4_irqs[] = { | ||
635 | { .irq = 70 + OMAP44XX_IRQ_GIC_START }, | ||
636 | }; | ||
637 | |||
638 | static struct omap_hwmod_dma_info omap44xx_uart4_sdma_reqs[] = { | ||
639 | { .name = "tx", .dma_req = 54 + OMAP44XX_DMA_REQ_START }, | ||
640 | { .name = "rx", .dma_req = 55 + OMAP44XX_DMA_REQ_START }, | ||
641 | }; | ||
642 | |||
643 | static struct omap_hwmod_addr_space omap44xx_uart4_addrs[] = { | ||
644 | { | ||
645 | .pa_start = 0x4806e000, | ||
646 | .pa_end = 0x4806e0ff, | ||
647 | .flags = ADDR_TYPE_RT | ||
648 | }, | ||
649 | }; | ||
650 | |||
651 | /* l4_per -> uart4 */ | ||
652 | static struct omap_hwmod_ocp_if omap44xx_l4_per__uart4 = { | ||
653 | .master = &omap44xx_l4_per_hwmod, | ||
654 | .slave = &omap44xx_uart4_hwmod, | ||
655 | .clk = "l4_div_ck", | ||
656 | .addr = omap44xx_uart4_addrs, | ||
657 | .addr_cnt = ARRAY_SIZE(omap44xx_uart4_addrs), | ||
658 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
659 | }; | ||
660 | |||
661 | /* uart4 slave ports */ | ||
662 | static struct omap_hwmod_ocp_if *omap44xx_uart4_slaves[] = { | ||
663 | &omap44xx_l4_per__uart4, | ||
664 | }; | ||
665 | |||
666 | static struct omap_hwmod omap44xx_uart4_hwmod = { | ||
667 | .name = "uart4", | ||
668 | .class = &omap44xx_uart_hwmod_class, | ||
669 | .mpu_irqs = omap44xx_uart4_irqs, | ||
670 | .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_uart4_irqs), | ||
671 | .sdma_reqs = omap44xx_uart4_sdma_reqs, | ||
672 | .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_uart4_sdma_reqs), | ||
673 | .main_clk = "uart4_fck", | ||
674 | .prcm = { | ||
675 | .omap4 = { | ||
676 | .clkctrl_reg = OMAP4430_CM_L4PER_UART4_CLKCTRL, | ||
677 | }, | ||
678 | }, | ||
679 | .slaves = omap44xx_uart4_slaves, | ||
680 | .slaves_cnt = ARRAY_SIZE(omap44xx_uart4_slaves), | ||
681 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
682 | }; | ||
683 | |||
455 | static __initdata struct omap_hwmod *omap44xx_hwmods[] = { | 684 | static __initdata struct omap_hwmod *omap44xx_hwmods[] = { |
456 | /* dmm class */ | 685 | /* dmm class */ |
457 | &omap44xx_dmm_hwmod, | 686 | &omap44xx_dmm_hwmod, |
@@ -472,6 +701,12 @@ static __initdata struct omap_hwmod *omap44xx_hwmods[] = { | |||
472 | 701 | ||
473 | /* mpu class */ | 702 | /* mpu class */ |
474 | &omap44xx_mpu_hwmod, | 703 | &omap44xx_mpu_hwmod, |
704 | |||
705 | /* uart class */ | ||
706 | &omap44xx_uart1_hwmod, | ||
707 | &omap44xx_uart2_hwmod, | ||
708 | &omap44xx_uart3_hwmod, | ||
709 | &omap44xx_uart4_hwmod, | ||
475 | NULL, | 710 | NULL, |
476 | }; | 711 | }; |
477 | 712 | ||