• Home
  • Raw
  • Download

Lines Matching +full:n +full:-

1 // SPDX-License-Identifier: GPL-2.0-or-later
5 * Copyright (c) 2011 - 2014 Cambridge Silicon Radio Limited, a CSR plc group
26 #include <linux/pinctrl/pinconf-generic.h>
30 #define N 0 macro
32 /* The Bank contains input-disable regisgers */
56 /* Raw value of Driver-Strength Bits */
63 /* Drive-Strength Intermediate Values */
64 #define DS_NULL -1
72 /* The Drive-Strength of 4WE Pad DS1 0 CO */
78 /* The Drive-Strength of 16st Pad DS3 2 1 0 CO */
96 /* The Drive-Strength of M31 Pad DS0 CO */
113 #define PULL_UNKNOWN -1
171 * struct atlas7_pad_conf - Atlas7 Pad Configuration
176 * @pupd_reg: The pull-up/down register offset.
177 * @drvstr_reg: The drive-strength register offset.
181 * @pupd_bit: The start bit of pull-up/down register.
182 * @drvstr_bit: The start bit of drive-strength register.
214 * struct atlas7_pad_status - Atlas7 Pad status
224 * struct atlas7_pad_mux - Atlas7 mux
228 * @dinput_reg: The Input-Disable register offset.
229 * @dinput_bit: The start bit of Input-Disable register.
230 * @dinput_val_reg: The Input-Disable-value register offset.
233 * @dinput_val_bit: The start bit of Input-Disable Value register.
263 * struct sirfsoc_pin_group - describes a SiRFprimaII pin group
266 * from the driver-local pin enumeration space
276 #define GROUP(n, p) \ argument
278 .name = n, \
290 #define FUNCTION(n, g, m) \ argument
292 .name = n, \
324 #define ATLAS7_GPIO_BASE(g, b) ((g)->reg + 0x100 * (b))
325 #define ATLAS7_GPIO_CTRL(b, i) ((b)->base + 4 * (i))
326 #define ATLAS7_GPIO_INT_STATUS(b) ((b)->base + 0x8C)
372 * refer to A7DA IO Summary - CS-314158-DD-4E.xls
548 PADCONF(0, 3, 0x0, 0x100, 0x200, -1, 0, 0, 0, 0),
549 PADCONF(1, 3, 0x0, 0x100, 0x200, -1, 4, 2, 2, 0),
550 PADCONF(2, 3, 0x0, 0x100, 0x200, -1, 8, 4, 4, 0),
551 PADCONF(3, 5, 0x0, 0x100, 0x200, -1, 12, 6, 6, 0),
552 PADCONF(4, 4, 0x0, 0x100, 0x200, -1, 16, 8, 8, 0),
553 PADCONF(5, 4, 0x0, 0x100, 0x200, -1, 20, 10, 10, 0),
554 PADCONF(6, 3, 0x0, 0x100, 0x200, -1, 24, 12, 12, 0),
555 PADCONF(7, 3, 0x0, 0x100, 0x200, -1, 28, 14, 14, 0),
556 PADCONF(8, 3, 0x8, 0x100, 0x200, -1, 0, 16, 16, 0),
557 PADCONF(9, 3, 0x8, 0x100, 0x200, -1, 4, 18, 18, 0),
558 PADCONF(10, 4, 0x8, 0x100, 0x200, -1, 8, 20, 20, 0),
559 PADCONF(11, 4, 0x8, 0x100, 0x200, -1, 12, 22, 22, 0),
560 PADCONF(12, 5, 0x8, 0x100, 0x200, -1, 16, 24, 24, 0),
561 PADCONF(13, 6, 0x8, 0x100, 0x200, -1, 20, 26, 26, 0),
562 PADCONF(14, 5, 0x8, 0x100, 0x200, -1, 24, 28, 28, 0),
563 PADCONF(15, 5, 0x8, 0x100, 0x200, -1, 28, 30, 30, 0),
564 PADCONF(16, 5, 0x10, 0x108, 0x208, -1, 0, 0, 0, 0),
565 PADCONF(17, 5, 0x10, 0x108, 0x208, -1, 4, 2, 2, 0),
567 PADCONF(18, 5, 0x80, 0x180, 0x300, -1, 0, 0, 0, 0),
568 PADCONF(19, 5, 0x80, 0x180, 0x300, -1, 4, 2, 2, 0),
569 PADCONF(20, 5, 0x80, 0x180, 0x300, -1, 8, 4, 4, 0),
570 PADCONF(21, 5, 0x80, 0x180, 0x300, -1, 12, 6, 6, 0),
571 PADCONF(22, 5, 0x88, 0x188, 0x308, -1, 0, 0, 0, 0),
572 PADCONF(23, 5, 0x88, 0x188, 0x308, -1, 4, 2, 2, 0),
573 PADCONF(24, 5, 0x88, 0x188, 0x308, -1, 8, 4, 4, 0),
574 PADCONF(25, 6, 0x88, 0x188, 0x308, -1, 12, 6, 6, 0),
575 PADCONF(26, 5, 0x88, 0x188, 0x308, -1, 16, 8, 8, 0),
576 PADCONF(27, 6, 0x88, 0x188, 0x308, -1, 20, 10, 10, 0),
577 PADCONF(28, 5, 0x88, 0x188, 0x308, -1, 24, 12, 12, 0),
578 PADCONF(29, 5, 0x88, 0x188, 0x308, -1, 28, 14, 14, 0),
579 PADCONF(30, 5, 0x90, 0x188, 0x308, -1, 0, 16, 16, 0),
580 PADCONF(31, 2, 0x98, 0x190, 0x310, -1, 0, 0, 0, 0),
581 PADCONF(32, 1, 0x98, 0x190, 0x310, -1, 4, 2, 4, 0),
582 PADCONF(33, 1, 0x98, 0x190, 0x310, -1, 8, 4, 6, 0),
583 PADCONF(34, 1, 0x98, 0x190, 0x310, -1, 12, 6, 8, 0),
584 PADCONF(35, 1, 0x98, 0x190, 0x310, -1, 16, 8, 10, 0),
585 PADCONF(36, 1, 0x98, 0x190, 0x310, -1, 20, 10, 12, 0),
586 PADCONF(37, 1, 0xa0, 0x198, 0x318, -1, 0, 0, 0, 0),
587 PADCONF(38, 1, 0xa0, 0x198, 0x318, -1, 4, 2, 2, 0),
588 PADCONF(39, 1, 0xa0, 0x198, 0x318, -1, 8, 4, 4, 0),
589 PADCONF(40, 1, 0xa0, 0x198, 0x318, -1, 12, 6, 6, 0),
590 PADCONF(41, 1, 0xa0, 0x198, 0x318, -1, 16, 8, 8, 0),
591 PADCONF(42, 1, 0xa0, 0x198, 0x318, -1, 20, 10, 10, 0),
592 PADCONF(43, 1, 0xa0, 0x198, 0x318, -1, 24, 12, 12, 0),
593 PADCONF(44, 1, 0xa0, 0x198, 0x318, -1, 28, 14, 14, 0),
594 PADCONF(45, 0, 0xa8, 0x198, 0x318, -1, 0, 16, 16, 0),
595 PADCONF(46, 0, 0xa8, 0x198, 0x318, -1, 4, 18, 18, 0),
596 PADCONF(47, 1, 0xa8, 0x198, 0x318, -1, 8, 20, 20, 0),
597 PADCONF(48, 1, 0xa8, 0x198, 0x318, -1, 12, 22, 22, 0),
598 PADCONF(49, 1, 0xa8, 0x198, 0x318, -1, 16, 24, 24, 0),
599 PADCONF(50, 1, 0xa8, 0x198, 0x318, -1, 20, 26, 26, 0),
600 PADCONF(51, 1, 0xa8, 0x198, 0x318, -1, 24, 28, 28, 0),
601 PADCONF(52, 1, 0xa8, 0x198, 0x318, -1, 28, 30, 30, 0),
602 PADCONF(53, 0, 0xb0, 0x1a0, 0x320, -1, 0, 0, 0, 0),
603 PADCONF(54, 0, 0xb0, 0x1a0, 0x320, -1, 4, 2, 2, 0),
604 PADCONF(55, 0, 0xb0, 0x1a0, 0x320, -1, 8, 4, 4, 0),
605 PADCONF(56, 0, 0xb0, 0x1a0, 0x320, -1, 12, 6, 6, 0),
606 PADCONF(57, 0, 0xb0, 0x1a0, 0x320, -1, 16, 8, 8, 0),
607 PADCONF(58, 0, 0xb0, 0x1a0, 0x320, -1, 20, 10, 10, 0),
608 PADCONF(59, 0, 0xb0, 0x1a0, 0x320, -1, 24, 12, 12, 0),
609 PADCONF(60, 0, 0xb0, 0x1a0, 0x320, -1, 28, 14, 14, 0),
610 PADCONF(61, 0, 0xb8, 0x1a0, 0x320, -1, 0, 16, 16, 0),
611 PADCONF(62, 0, 0xb8, 0x1a0, 0x320, -1, 4, 18, 18, 0),
612 PADCONF(63, 0, 0xb8, 0x1a0, 0x320, -1, 8, 20, 20, 0),
613 PADCONF(64, 0, 0xb8, 0x1a0, 0x320, -1, 12, 22, 22, 0),
614 PADCONF(65, 0, 0xb8, 0x1a0, 0x320, -1, 16, 24, 24, 0),
615 PADCONF(66, 0, 0xb8, 0x1a0, 0x320, -1, 20, 26, 26, 0),
616 PADCONF(67, 0, 0xb8, 0x1a0, 0x320, -1, 24, 28, 28, 0),
617 PADCONF(68, 0, 0xb8, 0x1a0, 0x320, -1, 28, 30, 30, 0),
618 PADCONF(69, 0, 0xc0, 0x1a8, 0x328, -1, 0, 0, 0, 0),
619 PADCONF(70, 0, 0xc0, 0x1a8, 0x328, -1, 4, 2, 2, 0),
620 PADCONF(71, 0, 0xc0, 0x1a8, 0x328, -1, 8, 4, 4, 0),
621 PADCONF(72, 0, 0xc0, 0x1a8, 0x328, -1, 12, 6, 6, 0),
622 PADCONF(73, 0, 0xc0, 0x1a8, 0x328, -1, 16, 8, 8, 0),
623 PADCONF(74, 0, 0xc8, 0x1b0, 0x330, -1, 0, 0, 0, 0),
624 PADCONF(75, 0, 0xc8, 0x1b0, 0x330, -1, 4, 2, 2, 0),
625 PADCONF(76, 0, 0xc8, 0x1b0, 0x330, -1, 8, 4, 4, 0),
626 PADCONF(77, 0, 0xc8, 0x1b0, 0x330, -1, 12, 6, 6, 0),
627 PADCONF(78, 0, 0xc8, 0x1b0, 0x330, -1, 16, 8, 8, 0),
628 PADCONF(79, 0, 0xc8, 0x1b0, 0x330, -1, 20, 10, 10, 0),
629 PADCONF(80, 0, 0xc8, 0x1b0, 0x330, -1, 24, 12, 12, 0),
630 PADCONF(81, 0, 0xc8, 0x1b0, 0x330, -1, 28, 14, 14, 0),
631 PADCONF(82, 0, 0xd0, 0x1b0, 0x330, -1, 0, 16, 16, 0),
632 PADCONF(83, 0, 0xd0, 0x1b0, 0x330, -1, 4, 18, 18, 0),
633 PADCONF(84, 0, 0xd0, 0x1b0, 0x330, -1, 8, 20, 20, 0),
634 PADCONF(85, 2, 0xd8, 0x1b8, 0x338, -1, 0, 0, 0, 0),
635 PADCONF(86, 1, 0xd8, 0x1b8, 0x338, -1, 4, 4, 4, 0),
636 PADCONF(87, 1, 0xd8, 0x1b8, 0x338, -1, 8, 6, 6, 0),
637 PADCONF(88, 1, 0xd8, 0x1b8, 0x338, -1, 12, 8, 8, 0),
638 PADCONF(89, 1, 0xd8, 0x1b8, 0x338, -1, 16, 10, 10, 0),
639 PADCONF(90, 1, 0xd8, 0x1b8, 0x338, -1, 20, 12, 12, 0),
640 PADCONF(91, 2, 0xe0, 0x1c0, 0x340, -1, 0, 0, 0, 0),
641 PADCONF(92, 1, 0xe0, 0x1c0, 0x340, -1, 4, 4, 4, 0),
642 PADCONF(93, 1, 0xe0, 0x1c0, 0x340, -1, 8, 6, 6, 0),
643 PADCONF(94, 1, 0xe0, 0x1c0, 0x340, -1, 12, 8, 8, 0),
644 PADCONF(95, 1, 0xe0, 0x1c0, 0x340, -1, 16, 10, 10, 0),
645 PADCONF(96, 1, 0xe0, 0x1c0, 0x340, -1, 20, 12, 12, 0),
646 PADCONF(97, 0, 0xe8, 0x1c8, 0x348, -1, 0, 0, 0, 0),
647 PADCONF(98, 0, 0xe8, 0x1c8, 0x348, -1, 4, 2, 2, 0),
648 PADCONF(99, 0, 0xe8, 0x1c8, 0x348, -1, 8, 4, 4, 0),
649 PADCONF(100, 0, 0xe8, 0x1c8, 0x348, -1, 12, 6, 6, 0),
650 PADCONF(101, 2, 0xe8, 0x1c8, 0x348, -1, 16, 8, 8, 0),
651 PADCONF(102, 0, 0xe8, 0x1c8, 0x348, -1, 20, 12, 12, 0),
652 PADCONF(103, 0, 0xe8, 0x1c8, 0x348, -1, 24, 14, 14, 0),
653 PADCONF(104, 0, 0xe8, 0x1c8, 0x348, -1, 28, 16, 16, 0),
654 PADCONF(105, 0, 0xf0, 0x1c8, 0x348, -1, 0, 18, 18, 0),
655 PADCONF(106, 0, 0xf0, 0x1c8, 0x348, -1, 4, 20, 20, 0),
656 PADCONF(107, 0, 0xf0, 0x1c8, 0x348, -1, 8, 22, 22, 0),
657 PADCONF(108, 0, 0xf0, 0x1c8, 0x348, -1, 12, 24, 24, 0),
658 PADCONF(109, 1, 0xf0, 0x1c8, 0x348, -1, 16, 26, 26, 0),
659 PADCONF(110, 0, 0xf0, 0x1c8, 0x348, -1, 20, 28, 28, 0),
660 PADCONF(111, 1, 0xf0, 0x1c8, 0x348, -1, 24, 30, 30, 0),
661 PADCONF(112, 5, 0xf8, 0x200, 0x350, -1, 0, 0, 0, 0),
662 PADCONF(113, 5, 0xf8, 0x200, 0x350, -1, 4, 2, 2, 0),
663 PADCONF(114, 5, 0xf8, 0x200, 0x350, -1, 8, 4, 4, 0),
664 PADCONF(115, 5, 0xf8, 0x200, 0x350, -1, 12, 6, 6, 0),
665 PADCONF(116, 5, 0xf8, 0x200, 0x350, -1, 16, 8, 8, 0),
666 PADCONF(117, 5, 0xf8, 0x200, 0x350, -1, 20, 10, 10, 0),
667 PADCONF(118, 5, 0xf8, 0x200, 0x350, -1, 24, 12, 12, 0),
668 PADCONF(119, 5, 0x100, 0x250, 0x358, -1, 0, 0, 0, 0),
669 PADCONF(120, 5, 0x100, 0x250, 0x358, -1, 4, 2, 2, 0),
670 PADCONF(121, 5, 0x100, 0x250, 0x358, -1, 8, 4, 4, 0),
671 PADCONF(122, 5, 0x100, 0x250, 0x358, -1, 12, 6, 6, 0),
672 PADCONF(123, 6, 0x100, 0x250, 0x358, -1, 16, 8, 8, 0),
673 PADCONF(124, 6, 0x100, 0x250, 0x358, -1, 20, 10, 10, 0),
674 PADCONF(125, 6, 0x100, 0x250, 0x358, -1, 24, 12, 12, 0),
675 PADCONF(126, 6, 0x100, 0x250, 0x358, -1, 28, 14, 14, 0),
676 PADCONF(127, 6, 0x108, 0x250, 0x358, -1, 16, 24, 24, 0),
677 PADCONF(128, 6, 0x108, 0x250, 0x358, -1, 20, 26, 26, 0),
678 PADCONF(129, 0, 0x110, 0x258, 0x360, -1, 0, 0, 0, 0),
679 PADCONF(130, 0, 0x110, 0x258, 0x360, -1, 4, 2, 2, 0),
680 PADCONF(131, 0, 0x110, 0x258, 0x360, -1, 8, 4, 4, 0),
681 PADCONF(132, 0, 0x110, 0x258, 0x360, -1, 12, 6, 6, 0),
682 PADCONF(133, 6, 0x118, 0x260, 0x368, -1, 0, 0, 0, 0),
683 PADCONF(134, 6, 0x118, 0x260, 0x368, -1, 4, 2, 2, 0),
684 PADCONF(135, 6, 0x118, 0x260, 0x368, -1, 16, 8, 8, 0),
685 PADCONF(136, 6, 0x118, 0x260, 0x368, -1, 20, 10, 10, 0),
686 PADCONF(137, 6, 0x118, 0x260, 0x368, -1, 24, 12, 12, 0),
687 PADCONF(138, 6, 0x118, 0x260, 0x368, -1, 28, 14, 14, 0),
688 PADCONF(139, 6, 0x120, 0x260, 0x368, -1, 0, 16, 16, 0),
689 PADCONF(140, 6, 0x120, 0x260, 0x368, -1, 4, 18, 18, 0),
690 PADCONF(141, 5, 0x128, 0x268, 0x378, -1, 0, 0, 0, 0),
691 PADCONF(142, 5, 0x128, 0x268, 0x378, -1, 4, 2, 2, 0),
692 PADCONF(143, 5, 0x128, 0x268, 0x378, -1, 8, 4, 4, 0),
693 PADCONF(144, 5, 0x128, 0x268, 0x378, -1, 12, 6, 6, 0),
694 PADCONF(145, 5, 0x128, 0x268, 0x378, -1, 16, 8, 8, 0),
695 PADCONF(146, 5, 0x128, 0x268, 0x378, -1, 20, 10, 10, 0),
696 PADCONF(147, 5, 0x128, 0x268, 0x378, -1, 24, 12, 12, 0),
697 PADCONF(148, 5, 0x128, 0x268, 0x378, -1, 28, 14, 14, 0),
698 PADCONF(149, 7, 0x130, 0x270, -1, 0x480, 0, 0, 0, 0),
699 PADCONF(150, 7, 0x130, 0x270, -1, 0x480, 4, 2, 0, 1),
700 PADCONF(151, 7, 0x130, 0x270, -1, 0x480, 8, 4, 0, 2),
701 PADCONF(152, 7, 0x130, 0x270, -1, 0x480, 12, 6, 0, 3),
702 PADCONF(153, 7, 0x130, 0x270, -1, 0x480, 16, 8, 0, 4),
703 PADCONF(154, 7, 0x130, 0x270, -1, 0x480, 20, 10, 0, 5),
704 PADCONF(155, 7, 0x130, 0x270, -1, 0x480, 24, 12, 0, 6),
705 PADCONF(156, 7, 0x130, 0x270, -1, 0x480, 28, 14, 0, 7),
706 PADCONF(157, 7, 0x138, 0x278, -1, 0x480, 0, 0, 0, 8),
707 PADCONF(158, 7, 0x138, 0x278, -1, 0x480, 4, 2, 0, 9),
708 PADCONF(159, 5, 0x140, 0x280, 0x380, -1, 0, 0, 0, 0),
709 PADCONF(160, 6, 0x140, 0x280, 0x380, -1, 4, 2, 2, 0),
710 PADCONF(161, 5, 0x140, 0x280, 0x380, -1, 8, 4, 4, 0),
711 PADCONF(162, 6, 0x140, 0x280, 0x380, -1, 12, 6, 6, 0),
712 PADCONF(163, 6, 0x140, 0x280, 0x380, -1, 16, 8, 8, 0),
1529 MUX(1, 119, 0, N, N, N, N),
1530 MUX(1, 120, 0, N, N, N, N),
1531 MUX(1, 121, 0, N, N, N, N),
1532 MUX(1, 122, 0, N, N, N, N),
1533 MUX(1, 123, 0, N, N, N, N),
1534 MUX(1, 124, 0, N, N, N, N),
1535 MUX(1, 125, 0, N, N, N, N),
1536 MUX(1, 126, 0, N, N, N, N),
1537 MUX(1, 127, 0, N, N, N, N),
1538 MUX(1, 128, 0, N, N, N, N),
1539 MUX(1, 22, 0, N, N, N, N),
1540 MUX(1, 23, 0, N, N, N, N),
1541 MUX(1, 24, 0, N, N, N, N),
1542 MUX(1, 25, 0, N, N, N, N),
1543 MUX(1, 26, 0, N, N, N, N),
1544 MUX(1, 27, 0, N, N, N, N),
1545 MUX(1, 28, 0, N, N, N, N),
1546 MUX(1, 29, 0, N, N, N, N),
1547 MUX(1, 30, 0, N, N, N, N),
1556 MUX(1, 74, 0, N, N, N, N),
1557 MUX(1, 75, 0, N, N, N, N),
1558 MUX(1, 76, 0, N, N, N, N),
1559 MUX(1, 77, 0, N, N, N, N),
1560 MUX(1, 78, 0, N, N, N, N),
1561 MUX(1, 79, 0, N, N, N, N),
1562 MUX(1, 80, 0, N, N, N, N),
1563 MUX(1, 81, 0, N, N, N, N),
1564 MUX(1, 82, 0, N, N, N, N),
1565 MUX(1, 83, 0, N, N, N, N),
1566 MUX(1, 84, 0, N, N, N, N),
1567 MUX(1, 53, 0, N, N, N, N),
1568 MUX(1, 54, 0, N, N, N, N),
1569 MUX(1, 55, 0, N, N, N, N),
1570 MUX(1, 56, 0, N, N, N, N),
1571 MUX(1, 57, 0, N, N, N, N),
1572 MUX(1, 58, 0, N, N, N, N),
1573 MUX(1, 59, 0, N, N, N, N),
1574 MUX(1, 60, 0, N, N, N, N),
1575 MUX(1, 61, 0, N, N, N, N),
1576 MUX(1, 62, 0, N, N, N, N),
1577 MUX(1, 63, 0, N, N, N, N),
1578 MUX(1, 64, 0, N, N, N, N),
1579 MUX(1, 65, 0, N, N, N, N),
1580 MUX(1, 66, 0, N, N, N, N),
1581 MUX(1, 67, 0, N, N, N, N),
1582 MUX(1, 68, 0, N, N, N, N),
1583 MUX(1, 69, 0, N, N, N, N),
1584 MUX(1, 70, 0, N, N, N, N),
1585 MUX(1, 71, 0, N, N, N, N),
1586 MUX(1, 72, 0, N, N, N, N),
1587 MUX(1, 73, 0, N, N, N, N),
1596 MUX(1, 31, 0, N, N, N, N),
1597 MUX(1, 32, 0, N, N, N, N),
1598 MUX(1, 33, 0, N, N, N, N),
1599 MUX(1, 34, 0, N, N, N, N),
1600 MUX(1, 35, 0, N, N, N, N),
1601 MUX(1, 36, 0, N, N, N, N),
1602 MUX(1, 85, 0, N, N, N, N),
1603 MUX(1, 86, 0, N, N, N, N),
1604 MUX(1, 87, 0, N, N, N, N),
1605 MUX(1, 88, 0, N, N, N, N),
1606 MUX(1, 89, 0, N, N, N, N),
1607 MUX(1, 90, 0, N, N, N, N),
1608 MUX(1, 129, 0, N, N, N, N),
1609 MUX(1, 130, 0, N, N, N, N),
1610 MUX(1, 131, 0, N, N, N, N),
1611 MUX(1, 132, 0, N, N, N, N),
1612 MUX(1, 91, 0, N, N, N, N),
1613 MUX(1, 92, 0, N, N, N, N),
1614 MUX(1, 93, 0, N, N, N, N),
1615 MUX(1, 94, 0, N, N, N, N),
1616 MUX(1, 95, 0, N, N, N, N),
1617 MUX(1, 96, 0, N, N, N, N),
1618 MUX(1, 112, 0, N, N, N, N),
1619 MUX(1, 113, 0, N, N, N, N),
1620 MUX(1, 114, 0, N, N, N, N),
1621 MUX(1, 115, 0, N, N, N, N),
1622 MUX(1, 116, 0, N, N, N, N),
1623 MUX(1, 117, 0, N, N, N, N),
1624 MUX(1, 118, 0, N, N, N, N),
1633 MUX(1, 97, 0, N, N, N, N),
1634 MUX(1, 98, 0, N, N, N, N),
1635 MUX(1, 99, 0, N, N, N, N),
1636 MUX(1, 100, 0, N, N, N, N),
1637 MUX(1, 101, 0, N, N, N, N),
1638 MUX(1, 102, 0, N, N, N, N),
1639 MUX(1, 103, 0, N, N, N, N),
1640 MUX(1, 104, 0, N, N, N, N),
1641 MUX(1, 105, 0, N, N, N, N),
1642 MUX(1, 106, 0, N, N, N, N),
1643 MUX(1, 107, 0, N, N, N, N),
1644 MUX(1, 108, 0, N, N, N, N),
1645 MUX(1, 109, 0, N, N, N, N),
1646 MUX(1, 110, 0, N, N, N, N),
1647 MUX(1, 111, 0, N, N, N, N),
1648 MUX(1, 18, 0, N, N, N, N),
1649 MUX(1, 19, 0, N, N, N, N),
1650 MUX(1, 20, 0, N, N, N, N),
1651 MUX(1, 21, 0, N, N, N, N),
1652 MUX(1, 141, 0, N, N, N, N),
1653 MUX(1, 142, 0, N, N, N, N),
1654 MUX(1, 143, 0, N, N, N, N),
1655 MUX(1, 144, 0, N, N, N, N),
1656 MUX(1, 145, 0, N, N, N, N),
1657 MUX(1, 146, 0, N, N, N, N),
1658 MUX(1, 147, 0, N, N, N, N),
1659 MUX(1, 148, 0, N, N, N, N),
1668 MUX(1, 157, 0, N, N, N, N),
1669 MUX(1, 158, 0, N, N, N, N),
1670 MUX(1, 155, 0, N, N, N, N),
1671 MUX(1, 156, 0, N, N, N, N),
1672 MUX(1, 153, 0, N, N, N, N),
1673 MUX(1, 154, 0, N, N, N, N),
1674 MUX(1, 151, 0, N, N, N, N),
1675 MUX(1, 152, 0, N, N, N, N),
1676 MUX(1, 149, 0, N, N, N, N),
1677 MUX(1, 150, 0, N, N, N, N),
1686 MUX(1, 44, 0, N, N, N, N),
1687 MUX(1, 43, 0, N, N, N, N),
1688 MUX(1, 42, 0, N, N, N, N),
1689 MUX(1, 41, 0, N, N, N, N),
1690 MUX(1, 40, 0, N, N, N, N),
1691 MUX(1, 39, 0, N, N, N, N),
1692 MUX(1, 38, 0, N, N, N, N),
1693 MUX(1, 37, 0, N, N, N, N),
1694 MUX(1, 46, 0, N, N, N, N),
1695 MUX(1, 47, 0, N, N, N, N),
1696 MUX(1, 48, 0, N, N, N, N),
1697 MUX(1, 49, 0, N, N, N, N),
1698 MUX(1, 50, 0, N, N, N, N),
1699 MUX(1, 52, 0, N, N, N, N),
1700 MUX(1, 51, 0, N, N, N, N),
1701 MUX(1, 45, 0, N, N, N, N),
1702 MUX(1, 133, 0, N, N, N, N),
1703 MUX(1, 134, 0, N, N, N, N),
1704 MUX(1, 135, 0, N, N, N, N),
1705 MUX(1, 136, 0, N, N, N, N),
1706 MUX(1, 137, 0, N, N, N, N),
1707 MUX(1, 138, 0, N, N, N, N),
1708 MUX(1, 139, 0, N, N, N, N),
1709 MUX(1, 140, 0, N, N, N, N),
1710 MUX(1, 159, 0, N, N, N, N),
1711 MUX(1, 160, 0, N, N, N, N),
1712 MUX(1, 161, 0, N, N, N, N),
1713 MUX(1, 162, 0, N, N, N, N),
1714 MUX(1, 163, 0, N, N, N, N),
1723 MUX(0, 0, 0, N, N, N, N),
1724 MUX(0, 1, 0, N, N, N, N),
1725 MUX(0, 2, 0, N, N, N, N),
1726 MUX(0, 3, 0, N, N, N, N),
1727 MUX(0, 4, 0, N, N, N, N),
1728 MUX(0, 10, 0, N, N, N, N),
1729 MUX(0, 11, 0, N, N, N, N),
1730 MUX(0, 12, 0, N, N, N, N),
1731 MUX(0, 13, 0, N, N, N, N),
1732 MUX(0, 14, 0, N, N, N, N),
1733 MUX(0, 15, 0, N, N, N, N),
1734 MUX(0, 16, 0, N, N, N, N),
1735 MUX(0, 17, 0, N, N, N, N),
1736 MUX(0, 9, 0, N, N, N, N),
1745 MUX(1, 113, 2, N, N, N, N),
1746 MUX(1, 118, 2, N, N, N, N),
1747 MUX(1, 115, 2, N, N, N, N),
1748 MUX(1, 114, 2, N, N, N, N),
1784 MUX(1, 141, 4, N, N, N, N),
1785 MUX(1, 144, 4, N, N, N, N),
1786 MUX(1, 44, 6, N, N, N, N),
1787 MUX(1, 43, 6, N, N, N, N),
1788 MUX(1, 42, 6, N, N, N, N),
1789 MUX(1, 41, 6, N, N, N, N),
1790 MUX(1, 40, 6, N, N, N, N),
1791 MUX(1, 39, 6, N, N, N, N),
1792 MUX(1, 38, 6, N, N, N, N),
1793 MUX(1, 37, 6, N, N, N, N),
1794 MUX(1, 74, 6, N, N, N, N),
1795 MUX(1, 75, 6, N, N, N, N),
1796 MUX(1, 76, 6, N, N, N, N),
1797 MUX(1, 77, 6, N, N, N, N),
1798 MUX(1, 78, 6, N, N, N, N),
1799 MUX(1, 79, 6, N, N, N, N),
1800 MUX(1, 81, 6, N, N, N, N),
1801 MUX(1, 113, 6, N, N, N, N),
1802 MUX(1, 114, 6, N, N, N, N),
1803 MUX(1, 118, 6, N, N, N, N),
1804 MUX(1, 115, 6, N, N, N, N),
1805 MUX(1, 49, 6, N, N, N, N),
1806 MUX(1, 50, 6, N, N, N, N),
1807 MUX(1, 142, 4, N, N, N, N),
1808 MUX(1, 143, 4, N, N, N, N),
1809 MUX(1, 80, 6, N, N, N, N),
1818 MUX(1, 118, 1, N, N, N, N),
1819 MUX(1, 115, 1, N, N, N, N),
1820 MUX(1, 116, 1, N, N, N, N),
1821 MUX(1, 117, 1, N, N, N, N),
1822 MUX(1, 112, 1, N, N, N, N),
1823 MUX(1, 113, 1, N, N, N, N),
1824 MUX(1, 114, 1, N, N, N, N),
1833 MUX(1, 118, 1, N, N, N, N),
1834 MUX(1, 115, 1, N, N, N, N),
1835 MUX(1, 112, 1, N, N, N, N),
1836 MUX(1, 113, 1, N, N, N, N),
1837 MUX(1, 114, 1, N, N, N, N),
1846 MUX(1, 112, 2, N, N, N, N),
1855 MUX(1, 112, 3, N, N, N, N),
1864 MUX(1, 116, 3, N, N, N, N),
1873 MUX(1, 142, 3, N, N, N, N),
1882 MUX(1, 143, 1, N, N, N, N),
1883 MUX(1, 142, 1, N, N, N, N),
1884 MUX(1, 141, 1, N, N, N, N),
1885 MUX(1, 144, 1, N, N, N, N),
2104 MUX(0, 2, 6, N, N, N, N),
2113 MUX(0, 0, 2, N, N, N, N),
2122 MUX(0, 1, 2, N, N, N, N),
2131 MUX(0, 3, 6, N, N, N, N),
2158 MUX(0, 10, 1, N, N, N, N),
2167 MUX(0, 3, 5, N, N, N, N),
2212 MUX(1, 137, 2, N, N, N, N),
2221 MUX(1, 146, 2, N, N, N, N),
2230 MUX(0, 3, 2, N, N, N, N),
2239 MUX(1, 161, 4, N, N, N, N),
2248 MUX(1, 62, 4, N, N, N, N),
2249 MUX(1, 63, 4, N, N, N, N),
2250 MUX(1, 64, 4, N, N, N, N),
2251 MUX(1, 65, 4, N, N, N, N),
2252 MUX(1, 66, 4, N, N, N, N),
2253 MUX(1, 67, 4, N, N, N, N),
2254 MUX(1, 68, 4, N, N, N, N),
2255 MUX(1, 69, 4, N, N, N, N),
2256 MUX(1, 70, 4, N, N, N, N),
2257 MUX(1, 71, 4, N, N, N, N),
2266 MUX(1, 85, 5, N, N, N, N),
2267 MUX(1, 86, 5, N, N, N, N),
2268 MUX(1, 87, 5, N, N, N, N),
2269 MUX(1, 88, 5, N, N, N, N),
2270 MUX(1, 89, 5, N, N, N, N),
2271 MUX(1, 90, 5, N, N, N, N),
2280 MUX(1, 129, 1, N, N, N, N),
2281 MUX(1, 130, 1, N, N, N, N),
2282 MUX(1, 131, 1, N, N, N, N),
2283 MUX(1, 132, 1, N, N, N, N),
2292 MUX(1, 57, 4, N, N, N, N),
2293 MUX(1, 58, 4, N, N, N, N),
2294 MUX(1, 59, 4, N, N, N, N),
2295 MUX(1, 60, 4, N, N, N, N),
2304 MUX(1, 91, 5, N, N, N, N),
2305 MUX(1, 93, 5, N, N, N, N),
2306 MUX(1, 94, 5, N, N, N, N),
2307 MUX(1, 92, 5, N, N, N, N),
2316 MUX(1, 121, 2, N, N, N, N),
2317 MUX(1, 122, 2, N, N, N, N),
2318 MUX(1, 125, 6, N, N, N, N),
2319 MUX(1, 126, 6, N, N, N, N),
2320 MUX(1, 38, 5, N, N, N, N),
2321 MUX(1, 37, 5, N, N, N, N),
2322 MUX(1, 47, 5, N, N, N, N),
2323 MUX(1, 49, 5, N, N, N, N),
2324 MUX(1, 50, 5, N, N, N, N),
2325 MUX(1, 54, 4, N, N, N, N),
2326 MUX(1, 55, 4, N, N, N, N),
2327 MUX(1, 56, 4, N, N, N, N),
2336 MUX(1, 40, 5, N, N, N, N),
2337 MUX(1, 39, 5, N, N, N, N),
2338 MUX(1, 44, 5, N, N, N, N),
2339 MUX(1, 43, 5, N, N, N, N),
2340 MUX(1, 42, 5, N, N, N, N),
2341 MUX(1, 41, 5, N, N, N, N),
2350 MUX(1, 82, 5, N, N, N, N),
2352 MUX(1, 80, 5, N, N, N, N),
2353 MUX(1, 81, 5, N, N, N, N),
2362 MUX(1, 91, 4, N, N, N, N),
2363 MUX(1, 93, 4, N, N, N, N),
2364 MUX(1, 94, 4, N, N, N, N),
2365 MUX(1, 95, 4, N, N, N, N),
2366 MUX(1, 96, 4, N, N, N, N),
2367 MUX(1, 78, 5, N, N, N, N),
2368 MUX(1, 74, 5, N, N, N, N),
2369 MUX(1, 75, 5, N, N, N, N),
2370 MUX(1, 76, 5, N, N, N, N),
2371 MUX(1, 77, 5, N, N, N, N),
2380 MUX(1, 136, 3, N, N, N, N),
2381 MUX(1, 135, 3, N, N, N, N),
2382 MUX(1, 134, 3, N, N, N, N),
2383 MUX(1, 133, 3, N, N, N, N),
2393 MUX(1, 47, 6, N, N, N, N),
2403 MUX(1, 54, 5, N, N, N, N),
2412 MUX(1, 128, 2, N, N, N, N),
2413 MUX(1, 127, 2, N, N, N, N),
2422 MUX(1, 134, 4, N, N, N, N),
2423 MUX(1, 133, 4, N, N, N, N),
2432 MUX(1, 134, 4, N, N, N, N),
2433 MUX(1, 133, 4, N, N, N, N),
2434 MUX(1, 136, 4, N, N, N, N),
2435 MUX(1, 135, 4, N, N, N, N),
2444 MUX(1, 22, 1, N, N, N, N),
2445 MUX(1, 25, 1, N, N, N, N),
2447 MUX(1, 24, 1, N, N, N, N),
2456 MUX(1, 82, 3, N, N, N, N),
2457 MUX(1, 79, 3, N, N, N, N),
2459 MUX(1, 81, 3, N, N, N, N),
2468 MUX(1, 54, 3, N, N, N, N),
2469 MUX(1, 53, 3, N, N, N, N),
2470 MUX(1, 82, 7, N, N, N, N),
2471 MUX(1, 74, 7, N, N, N, N),
2472 MUX(1, 75, 7, N, N, N, N),
2473 MUX(1, 76, 7, N, N, N, N),
2474 MUX(1, 77, 7, N, N, N, N),
2475 MUX(1, 78, 7, N, N, N, N),
2476 MUX(1, 79, 7, N, N, N, N),
2477 MUX(1, 80, 7, N, N, N, N),
2478 MUX(1, 81, 7, N, N, N, N),
2479 MUX(1, 83, 7, N, N, N, N),
2480 MUX(1, 84, 7, N, N, N, N),
2481 MUX(1, 73, 3, N, N, N, N),
2482 MUX(1, 55, 3, N, N, N, N),
2483 MUX(1, 56, 3, N, N, N, N),
2492 MUX(1, 57, 3, N, N, N, N),
2501 MUX(1, 58, 3, N, N, N, N),
2510 MUX(1, 59, 3, N, N, N, N),
2519 MUX(1, 60, 3, N, N, N, N),
2528 MUX(1, 61, 3, N, N, N, N),
2537 MUX(1, 62, 3, N, N, N, N),
2546 MUX(1, 63, 3, N, N, N, N),
2555 MUX(1, 64, 3, N, N, N, N),
2564 MUX(1, 65, 3, N, N, N, N),
2573 MUX(1, 66, 3, N, N, N, N),
2582 MUX(1, 67, 3, N, N, N, N),
2591 MUX(1, 68, 3, N, N, N, N),
2600 MUX(1, 69, 3, N, N, N, N),
2609 MUX(1, 70, 3, N, N, N, N),
2618 MUX(1, 71, 3, N, N, N, N),
2627 MUX(1, 72, 3, N, N, N, N),
2636 MUX(1, 123, 7, N, N, N, N),
2637 MUX(1, 124, 7, N, N, N, N),
2638 MUX(1, 121, 7, N, N, N, N),
2639 MUX(1, 122, 7, N, N, N, N),
2640 MUX(1, 125, 7, N, N, N, N),
2641 MUX(1, 120, 7, N, N, N, N),
2650 MUX(1, 57, 7, N, N, N, N),
2651 MUX(1, 58, 7, N, N, N, N),
2652 MUX(1, 59, 7, N, N, N, N),
2653 MUX(1, 60, 7, N, N, N, N),
2654 MUX(1, 61, 7, N, N, N, N),
2655 MUX(1, 62, 7, N, N, N, N),
2656 MUX(1, 63, 7, N, N, N, N),
2657 MUX(1, 64, 7, N, N, N, N),
2658 MUX(1, 65, 7, N, N, N, N),
2659 MUX(1, 66, 7, N, N, N, N),
2660 MUX(1, 67, 7, N, N, N, N),
2661 MUX(1, 68, 7, N, N, N, N),
2662 MUX(1, 69, 7, N, N, N, N),
2663 MUX(1, 70, 7, N, N, N, N),
2664 MUX(1, 71, 7, N, N, N, N),
2665 MUX(1, 72, 7, N, N, N, N),
2666 MUX(1, 53, 7, N, N, N, N),
2667 MUX(1, 55, 7, N, N, N, N),
2669 MUX(1, 54, 7, N, N, N, N),
2678 MUX(1, 113, 4, N, N, N, N),
2705 MUX(1, 115, 4, N, N, N, N),
2714 MUX(1, 114, 4, N, N, N, N),
2723 MUX(1, 44, 7, N, N, N, N),
2724 MUX(1, 43, 7, N, N, N, N),
2725 MUX(1, 42, 7, N, N, N, N),
2726 MUX(1, 41, 7, N, N, N, N),
2727 MUX(1, 40, 7, N, N, N, N),
2728 MUX(1, 39, 7, N, N, N, N),
2729 MUX(1, 38, 7, N, N, N, N),
2730 MUX(1, 37, 7, N, N, N, N),
2731 MUX(1, 49, 7, N, N, N, N),
2732 MUX(1, 50, 7, N, N, N, N),
2733 MUX(1, 91, 7, N, N, N, N),
2734 MUX(1, 92, 7, N, N, N, N),
2735 MUX(1, 93, 7, N, N, N, N),
2736 MUX(1, 94, 7, N, N, N, N),
2737 MUX(1, 95, 7, N, N, N, N),
2738 MUX(1, 96, 7, N, N, N, N),
2771 MUX(1, 30, 1, N, N, N, N),
2780 MUX(1, 83, 3, N, N, N, N),
2789 MUX(1, 117, 4, N, N, N, N),
2798 MUX(1, 123, 5, N, N, N, N),
2807 MUX(1, 128, 1, N, N, N, N),
2808 MUX(1, 127, 1, N, N, N, N),
2817 MUX(1, 126, 4, N, N, N, N),
2818 MUX(1, 125, 4, N, N, N, N),
3020 MUX(0, 3, 3, N, N, N, N),
3029 MUX(1, 159, 1, N, N, N, N),
3038 MUX(1, 141, 2, N, N, N, N),
3040 MUX(1, 143, 2, N, N, N, N),
3041 MUX(1, 142, 2, N, N, N, N),
3050 MUX(1, 57, 1, N, N, N, N),
3051 MUX(1, 58, 1, N, N, N, N),
3052 MUX(1, 59, 1, N, N, N, N),
3053 MUX(1, 60, 1, N, N, N, N),
3054 MUX(1, 61, 1, N, N, N, N),
3055 MUX(1, 62, 1, N, N, N, N),
3056 MUX(1, 63, 1, N, N, N, N),
3057 MUX(1, 64, 1, N, N, N, N),
3058 MUX(1, 65, 1, N, N, N, N),
3059 MUX(1, 66, 1, N, N, N, N),
3060 MUX(1, 67, 1, N, N, N, N),
3061 MUX(1, 68, 1, N, N, N, N),
3062 MUX(1, 69, 1, N, N, N, N),
3063 MUX(1, 70, 1, N, N, N, N),
3064 MUX(1, 71, 1, N, N, N, N),
3065 MUX(1, 72, 1, N, N, N, N),
3066 MUX(1, 74, 2, N, N, N, N),
3067 MUX(1, 75, 2, N, N, N, N),
3068 MUX(1, 76, 2, N, N, N, N),
3069 MUX(1, 77, 2, N, N, N, N),
3070 MUX(1, 78, 2, N, N, N, N),
3071 MUX(1, 79, 2, N, N, N, N),
3072 MUX(1, 80, 2, N, N, N, N),
3073 MUX(1, 81, 2, N, N, N, N),
3074 MUX(1, 56, 1, N, N, N, N),
3075 MUX(1, 53, 1, N, N, N, N),
3084 MUX(1, 57, 1, N, N, N, N),
3085 MUX(1, 58, 1, N, N, N, N),
3086 MUX(1, 59, 1, N, N, N, N),
3087 MUX(1, 60, 1, N, N, N, N),
3088 MUX(1, 61, 1, N, N, N, N),
3089 MUX(1, 62, 1, N, N, N, N),
3090 MUX(1, 63, 1, N, N, N, N),
3091 MUX(1, 64, 1, N, N, N, N),
3092 MUX(1, 65, 1, N, N, N, N),
3093 MUX(1, 66, 1, N, N, N, N),
3094 MUX(1, 67, 1, N, N, N, N),
3095 MUX(1, 68, 1, N, N, N, N),
3096 MUX(1, 69, 1, N, N, N, N),
3097 MUX(1, 70, 1, N, N, N, N),
3098 MUX(1, 71, 1, N, N, N, N),
3099 MUX(1, 72, 1, N, N, N, N),
3100 MUX(1, 56, 1, N, N, N, N),
3101 MUX(1, 53, 1, N, N, N, N),
3110 MUX(1, 55, 1, N, N, N, N),
3119 MUX(1, 54, 1, N, N, N, N),
3128 MUX(1, 73, 2, N, N, N, N),
3129 MUX(1, 54, 2, N, N, N, N),
3130 MUX(1, 57, 2, N, N, N, N),
3131 MUX(1, 58, 2, N, N, N, N),
3132 MUX(1, 59, 2, N, N, N, N),
3133 MUX(1, 60, 2, N, N, N, N),
3134 MUX(1, 61, 2, N, N, N, N),
3135 MUX(1, 62, 2, N, N, N, N),
3136 MUX(1, 63, 2, N, N, N, N),
3137 MUX(1, 64, 2, N, N, N, N),
3138 MUX(1, 65, 2, N, N, N, N),
3139 MUX(1, 66, 2, N, N, N, N),
3140 MUX(1, 67, 2, N, N, N, N),
3141 MUX(1, 68, 2, N, N, N, N),
3142 MUX(1, 69, 2, N, N, N, N),
3143 MUX(1, 70, 2, N, N, N, N),
3144 MUX(1, 71, 2, N, N, N, N),
3145 MUX(1, 72, 2, N, N, N, N),
3146 MUX(1, 56, 2, N, N, N, N),
3147 MUX(1, 53, 2, N, N, N, N),
3148 MUX(1, 55, 2, N, N, N, N),
3157 MUX(1, 149, 8, N, N, N, N),
3158 MUX(1, 150, 8, N, N, N, N),
3159 MUX(1, 151, 8, N, N, N, N),
3160 MUX(1, 152, 8, N, N, N, N),
3161 MUX(1, 153, 8, N, N, N, N),
3162 MUX(1, 154, 8, N, N, N, N),
3163 MUX(1, 155, 8, N, N, N, N),
3164 MUX(1, 156, 8, N, N, N, N),
3165 MUX(1, 157, 8, N, N, N, N),
3166 MUX(1, 158, 8, N, N, N, N),
3175 MUX(1, 44, 1, N, N, N, N),
3176 MUX(1, 43, 1, N, N, N, N),
3177 MUX(1, 42, 1, N, N, N, N),
3178 MUX(1, 41, 1, N, N, N, N),
3179 MUX(1, 40, 1, N, N, N, N),
3180 MUX(1, 39, 1, N, N, N, N),
3181 MUX(1, 38, 1, N, N, N, N),
3182 MUX(1, 37, 1, N, N, N, N),
3183 MUX(1, 47, 1, N, N, N, N),
3184 MUX(1, 46, 1, N, N, N, N),
3185 MUX(1, 52, 1, N, N, N, N),
3186 MUX(1, 45, 1, N, N, N, N),
3187 MUX(1, 49, 1, N, N, N, N),
3188 MUX(1, 50, 1, N, N, N, N),
3189 MUX(1, 48, 1, N, N, N, N),
3198 MUX(1, 124, 4, N, N, N, N),
3207 MUX(1, 51, 1, N, N, N, N),
3216 MUX(1, 120, 2, N, N, N, N),
3217 MUX(1, 119, 2, N, N, N, N),
3218 MUX(1, 121, 5, N, N, N, N),
3227 MUX(1, 119, 2, N, N, N, N),
3236 MUX(0, 8, 1, N, N, N, N),
3245 MUX(0, 6, 1, N, N, N, N),
3254 MUX(0, 3, 4, N, N, N, N),
3263 MUX(0, 9, 1, N, N, N, N),
3281 MUX(0, 7, 1, N, N, N, N),
3299 MUX(0, 0, 1, N, N, N, N),
3308 MUX(0, 1, 1, N, N, N, N),
3317 MUX(0, 2, 1, N, N, N, N),
3326 MUX(0, 3, 1, N, N, N, N),
3335 MUX(1, 123, 3, N, N, N, N),
3344 MUX(1, 101, 4, N, N, N, N),
3353 MUX(1, 82, 2, N, N, N, N),
3362 MUX(1, 162, 5, N, N, N, N),
3371 MUX(1, 124, 3, N, N, N, N),
3380 MUX(1, 110, 4, N, N, N, N),
3389 MUX(1, 163, 5, N, N, N, N),
3398 MUX(1, 125, 3, N, N, N, N),
3407 MUX(1, 117, 3, N, N, N, N),
3416 MUX(1, 132, 2, N, N, N, N),
3425 MUX(1, 119, 3, N, N, N, N),
3434 MUX(1, 159, 5, N, N, N, N),
3443 MUX(1, 120, 3, N, N, N, N),
3452 MUX(1, 160, 5, N, N, N, N),
3461 MUX(1, 131, 2, N, N, N, N),
3470 MUX(1, 121, 3, N, N, N, N),
3479 MUX(1, 98, 3, N, N, N, N),
3488 MUX(1, 161, 5, N, N, N, N),
3497 MUX(1, 122, 3, N, N, N, N),
3506 MUX(1, 73, 4, N, N, N, N),
3515 MUX(1, 121, 3, N, N, N, N),
3524 MUX(1, 98, 3, N, N, N, N),
3533 MUX(1, 161, 5, N, N, N, N),
3542 MUX(1, 122, 3, N, N, N, N),
3551 MUX(1, 73, 4, N, N, N, N),
3560 MUX(1, 108, 1, N, N, N, N),
3561 MUX(1, 103, 1, N, N, N, N),
3562 MUX(1, 104, 1, N, N, N, N),
3563 MUX(1, 105, 1, N, N, N, N),
3564 MUX(1, 106, 1, N, N, N, N),
3565 MUX(1, 107, 1, N, N, N, N),
3566 MUX(1, 102, 1, N, N, N, N),
3567 MUX(1, 97, 1, N, N, N, N),
3568 MUX(1, 98, 1, N, N, N, N),
3569 MUX(1, 99, 1, N, N, N, N),
3570 MUX(1, 100, 1, N, N, N, N),
3571 MUX(1, 101, 1, N, N, N, N),
3589 MUX(1, 109, 1, N, N, N, N),
3590 MUX(1, 110, 1, N, N, N, N),
3599 MUX(1, 111, 5, N, N, N, N),
3608 MUX(1, 53, 4, N, N, N, N),
3617 MUX(1, 46, 2, N, N, N, N),
3618 MUX(1, 47, 2, N, N, N, N),
3619 MUX(1, 44, 2, N, N, N, N),
3620 MUX(1, 43, 2, N, N, N, N),
3621 MUX(1, 42, 2, N, N, N, N),
3622 MUX(1, 41, 2, N, N, N, N),
3623 MUX(1, 40, 2, N, N, N, N),
3624 MUX(1, 39, 2, N, N, N, N),
3625 MUX(1, 38, 2, N, N, N, N),
3626 MUX(1, 37, 2, N, N, N, N),
3635 MUX(1, 46, 2, N, N, N, N),
3636 MUX(1, 47, 2, N, N, N, N),
3637 MUX(1, 44, 2, N, N, N, N),
3638 MUX(1, 43, 2, N, N, N, N),
3639 MUX(1, 42, 2, N, N, N, N),
3640 MUX(1, 41, 2, N, N, N, N),
3649 MUX(1, 48, 3, N, N, N, N),
3650 MUX(1, 49, 3, N, N, N, N),
3655 MUX(1, 40, 3, N, N, N, N),
3656 MUX(1, 39, 3, N, N, N, N),
3657 MUX(1, 38, 3, N, N, N, N),
3658 MUX(1, 37, 3, N, N, N, N),
3667 MUX(1, 48, 3, N, N, N, N),
3668 MUX(1, 49, 3, N, N, N, N),
3681 MUX(1, 48, 3, N, N, N, N),
3682 MUX(1, 49, 3, N, N, N, N),
3695 MUX(1, 31, 1, N, N, N, N),
3696 MUX(1, 32, 1, N, N, N, N),
3697 MUX(1, 33, 1, N, N, N, N),
3698 MUX(1, 34, 1, N, N, N, N),
3699 MUX(1, 35, 1, N, N, N, N),
3700 MUX(1, 36, 1, N, N, N, N),
3745 MUX(1, 85, 1, N, N, N, N),
3746 MUX(1, 86, 1, N, N, N, N),
3747 MUX(1, 87, 1, N, N, N, N),
3748 MUX(1, 88, 1, N, N, N, N),
3749 MUX(1, 89, 1, N, N, N, N),
3750 MUX(1, 90, 1, N, N, N, N),
3759 MUX(1, 91, 1, N, N, N, N),
3760 MUX(1, 92, 1, N, N, N, N),
3761 MUX(1, 93, 1, N, N, N, N),
3762 MUX(1, 94, 1, N, N, N, N),
3763 MUX(1, 95, 1, N, N, N, N),
3764 MUX(1, 96, 1, N, N, N, N),
3801 MUX(0, 4, 2, N, N, N, N),
3810 MUX(0, 12, 1, N, N, N, N),
3811 MUX(0, 13, 1, N, N, N, N),
3812 MUX(0, 14, 1, N, N, N, N),
3813 MUX(0, 15, 1, N, N, N, N),
3814 MUX(0, 16, 1, N, N, N, N),
3815 MUX(0, 17, 1, N, N, N, N),
3824 MUX(1, 19, 1, N, N, N, N),
3825 MUX(1, 20, 1, N, N, N, N),
3826 MUX(1, 21, 1, N, N, N, N),
3827 MUX(1, 18, 1, N, N, N, N),
3836 MUX(1, 53, 5, N, N, N, N),
3837 MUX(1, 56, 5, N, N, N, N),
3838 MUX(1, 57, 5, N, N, N, N),
3839 MUX(1, 58, 5, N, N, N, N),
3840 MUX(1, 59, 5, N, N, N, N),
3841 MUX(1, 60, 5, N, N, N, N),
3842 MUX(1, 61, 5, N, N, N, N),
3843 MUX(1, 62, 5, N, N, N, N),
3844 MUX(1, 63, 5, N, N, N, N),
3845 MUX(1, 64, 5, N, N, N, N),
3846 MUX(1, 65, 5, N, N, N, N),
3847 MUX(1, 66, 5, N, N, N, N),
3848 MUX(1, 67, 5, N, N, N, N),
3849 MUX(1, 68, 5, N, N, N, N),
3850 MUX(1, 69, 5, N, N, N, N),
3851 MUX(1, 70, 5, N, N, N, N),
3852 MUX(1, 71, 5, N, N, N, N),
3853 MUX(1, 72, 5, N, N, N, N),
3862 MUX(1, 121, 4, N, N, N, N),
3863 MUX(1, 120, 4, N, N, N, N),
3864 MUX(1, 134, 1, N, N, N, N),
3865 MUX(1, 133, 1, N, N, N, N),
3874 MUX(1, 134, 1, N, N, N, N),
3875 MUX(1, 133, 1, N, N, N, N),
3884 MUX(1, 136, 1, N, N, N, N),
3885 MUX(1, 135, 1, N, N, N, N),
3912 MUX(1, 131, 3, N, N, N, N),
3921 MUX(1, 161, 2, N, N, N, N),
3957 MUX(0, 10, 2, N, N, N, N),
3966 MUX(1, 159, 2, N, N, N, N),
3975 MUX(1, 129, 3, N, N, N, N),
4011 MUX(1, 126, 2, N, N, N, N),
4020 MUX(1, 109, 4, N, N, N, N),
4029 MUX(1, 139, 2, N, N, N, N),
4065 MUX(1, 137, 1, N, N, N, N),
4074 MUX(1, 83, 2, N, N, N, N),
4083 MUX(1, 161, 3, N, N, N, N),
4092 MUX(1, 140, 1, N, N, N, N),
4093 MUX(1, 139, 1, N, N, N, N),
4129 MUX(1, 123, 4, N, N, N, N),
4138 MUX(1, 99, 4, N, N, N, N),
4147 MUX(1, 116, 2, N, N, N, N),
4156 MUX(1, 51, 2, N, N, N, N),
4165 MUX(1, 162, 7, N, N, N, N),
4174 MUX(1, 134, 2, N, N, N, N),
4183 MUX(1, 163, 2, N, N, N, N),
4192 MUX(1, 57, 6, N, N, N, N),
4193 MUX(1, 58, 6, N, N, N, N),
4194 MUX(1, 59, 6, N, N, N, N),
4195 MUX(1, 60, 6, N, N, N, N),
4196 MUX(1, 61, 6, N, N, N, N),
4197 MUX(1, 62, 6, N, N, N, N),
4198 MUX(1, 63, 6, N, N, N, N),
4199 MUX(1, 64, 6, N, N, N, N),
4200 MUX(1, 65, 6, N, N, N, N),
4201 MUX(1, 66, 6, N, N, N, N),
4202 MUX(1, 67, 6, N, N, N, N),
4203 MUX(1, 68, 6, N, N, N, N),
4204 MUX(1, 69, 6, N, N, N, N),
4205 MUX(1, 70, 6, N, N, N, N),
4206 MUX(1, 71, 6, N, N, N, N),
4207 MUX(1, 72, 6, N, N, N, N),
4208 MUX(1, 53, 6, N, N, N, N),
4209 MUX(1, 54, 6, N, N, N, N),
4210 MUX(1, 55, 6, N, N, N, N),
4211 MUX(1, 56, 6, N, N, N, N),
4212 MUX(1, 85, 6, N, N, N, N),
4213 MUX(1, 86, 6, N, N, N, N),
4214 MUX(1, 87, 6, N, N, N, N),
4215 MUX(1, 88, 6, N, N, N, N),
4216 MUX(1, 89, 6, N, N, N, N),
4217 MUX(1, 90, 6, N, N, N, N),
4218 MUX(1, 91, 6, N, N, N, N),
4219 MUX(1, 92, 6, N, N, N, N),
4220 MUX(1, 93, 6, N, N, N, N),
4221 MUX(1, 94, 6, N, N, N, N),
4222 MUX(1, 95, 6, N, N, N, N),
4223 MUX(1, 96, 6, N, N, N, N),
4232 MUX(1, 74, 1, N, N, N, N),
4233 MUX(1, 75, 1, N, N, N, N),
4234 MUX(1, 76, 1, N, N, N, N),
4235 MUX(1, 77, 1, N, N, N, N),
4236 MUX(1, 78, 1, N, N, N, N),
4237 MUX(1, 79, 1, N, N, N, N),
4238 MUX(1, 80, 1, N, N, N, N),
4239 MUX(1, 81, 1, N, N, N, N),
4240 MUX(1, 82, 1, N, N, N, N),
4241 MUX(1, 83, 1, N, N, N, N),
4242 MUX(1, 84, 1, N, N, N, N),
4243 MUX(1, 103, 2, N, N, N, N),
4244 MUX(1, 104, 2, N, N, N, N),
4245 MUX(1, 105, 2, N, N, N, N),
4246 MUX(1, 106, 2, N, N, N, N),
4247 MUX(1, 107, 2, N, N, N, N),
4248 MUX(1, 102, 2, N, N, N, N),
4249 MUX(1, 97, 2, N, N, N, N),
4250 MUX(1, 98, 2, N, N, N, N),
4259 MUX(1, 74, 1, N, N, N, N),
4260 MUX(1, 75, 1, N, N, N, N),
4261 MUX(1, 76, 1, N, N, N, N),
4262 MUX(1, 77, 1, N, N, N, N),
4263 MUX(1, 78, 1, N, N, N, N),
4264 MUX(1, 79, 1, N, N, N, N),
4265 MUX(1, 80, 1, N, N, N, N),
4266 MUX(1, 81, 1, N, N, N, N),
4267 MUX(1, 82, 1, N, N, N, N),
4268 MUX(1, 83, 1, N, N, N, N),
4269 MUX(1, 84, 1, N, N, N, N),
4270 MUX(1, 108, 2, N, N, N, N),
4271 MUX(1, 103, 2, N, N, N, N),
4272 MUX(1, 104, 2, N, N, N, N),
4273 MUX(1, 105, 2, N, N, N, N),
4274 MUX(1, 106, 2, N, N, N, N),
4275 MUX(1, 107, 2, N, N, N, N),
4276 MUX(1, 102, 2, N, N, N, N),
4277 MUX(1, 97, 2, N, N, N, N),
4278 MUX(1, 98, 2, N, N, N, N),
4279 MUX(1, 99, 2, N, N, N, N),
4280 MUX(1, 100, 2, N, N, N, N),
4289 MUX(1, 74, 1, N, N, N, N),
4290 MUX(1, 75, 1, N, N, N, N),
4291 MUX(1, 76, 1, N, N, N, N),
4292 MUX(1, 77, 1, N, N, N, N),
4293 MUX(1, 78, 1, N, N, N, N),
4294 MUX(1, 79, 1, N, N, N, N),
4295 MUX(1, 80, 1, N, N, N, N),
4296 MUX(1, 81, 1, N, N, N, N),
4297 MUX(1, 82, 1, N, N, N, N),
4298 MUX(1, 83, 1, N, N, N, N),
4299 MUX(1, 84, 1, N, N, N, N),
4308 MUX(1, 82, 1, N, N, N, N),
4309 MUX(1, 83, 1, N, N, N, N),
4310 MUX(1, 84, 1, N, N, N, N),
4311 MUX(1, 103, 2, N, N, N, N),
4312 MUX(1, 104, 2, N, N, N, N),
4313 MUX(1, 105, 2, N, N, N, N),
4314 MUX(1, 106, 2, N, N, N, N),
4315 MUX(1, 107, 2, N, N, N, N),
4316 MUX(1, 102, 2, N, N, N, N),
4317 MUX(1, 97, 2, N, N, N, N),
4318 MUX(1, 98, 2, N, N, N, N),
4779 * struct atlas7_pull_info - Atlas7 Pad pull info
4825 { PULL_DISABLE, -1 },
4826 { PULL_ENABLE, -1 },
4831 { HIGH_HYSTERESIS, -1 },
4834 { PULL_DISABLE, -1 },
4835 { PULL_ENABLE, -1 },
4840 { HIGH_HYSTERESIS, -1 },
4841 { HIGH_Z, -1 },
4843 { PULL_DISABLE, -1 },
4844 { PULL_ENABLE, -1 },
4849 { HIGH_HYSTERESIS, -1 },
4852 { PULL_DISABLE, -1 },
4853 { PULL_ENABLE, -1 },
4868 * struct atlas7_ds_ma_info - Atlas7 Pad DriveStrength & currents info
4903 * struct atlas7_ds_info - Atlas7 Pad DriveStrength info
4936 return pmx->pctl_data->funcs_cnt; in atlas7_pmx_get_funcs_count()
4944 return pmx->pctl_data->funcs[selector].name; in atlas7_pmx_get_func_name()
4953 *groups = pmx->pctl_data->funcs[selector].groups; in atlas7_pmx_get_func_groups()
4954 *num_groups = pmx->pctl_data->funcs[selector].num_groups; in atlas7_pmx_get_func_groups()
4964 * All Input-Disable Control registers are located on IOCRTC. in __atlas7_pmx_pin_input_disable_set()
4968 if (mux->dinput_reg && mux->dinput_val_reg) { in __atlas7_pmx_pin_input_disable_set()
4969 writel(DI_MASK << mux->dinput_bit, in __atlas7_pmx_pin_input_disable_set()
4970 pmx->regs[BANK_DS] + CLR_REG(mux->dinput_reg)); in __atlas7_pmx_pin_input_disable_set()
4971 writel(DI_DISABLE << mux->dinput_bit, in __atlas7_pmx_pin_input_disable_set()
4972 pmx->regs[BANK_DS] + mux->dinput_reg); in __atlas7_pmx_pin_input_disable_set()
4975 writel(DIV_MASK << mux->dinput_val_bit, in __atlas7_pmx_pin_input_disable_set()
4976 pmx->regs[BANK_DS] + CLR_REG(mux->dinput_val_reg)); in __atlas7_pmx_pin_input_disable_set()
4977 writel(DIV_DISABLE << mux->dinput_val_bit, in __atlas7_pmx_pin_input_disable_set()
4978 pmx->regs[BANK_DS] + mux->dinput_val_reg); in __atlas7_pmx_pin_input_disable_set()
4986 if (mux->dinput_reg && mux->dinput_val_reg) { in __atlas7_pmx_pin_input_disable_clr()
4987 writel(DI_MASK << mux->dinput_bit, in __atlas7_pmx_pin_input_disable_clr()
4988 pmx->regs[BANK_DS] + CLR_REG(mux->dinput_reg)); in __atlas7_pmx_pin_input_disable_clr()
4989 writel(DI_ENABLE << mux->dinput_bit, in __atlas7_pmx_pin_input_disable_clr()
4990 pmx->regs[BANK_DS] + mux->dinput_reg); in __atlas7_pmx_pin_input_disable_clr()
4992 writel(DIV_MASK << mux->dinput_val_bit, in __atlas7_pmx_pin_input_disable_clr()
4993 pmx->regs[BANK_DS] + CLR_REG(mux->dinput_val_reg)); in __atlas7_pmx_pin_input_disable_clr()
4994 writel(DIV_ENABLE << mux->dinput_val_bit, in __atlas7_pmx_pin_input_disable_clr()
4995 pmx->regs[BANK_DS] + mux->dinput_val_reg); in __atlas7_pmx_pin_input_disable_clr()
5006 writel(ANA_CLEAR_MASK << conf->ad_ctrl_bit, in __atlas7_pmx_pin_ad_sel()
5007 pmx->regs[bank] + CLR_REG(conf->ad_ctrl_reg)); in __atlas7_pmx_pin_ad_sel()
5010 regv = readl(pmx->regs[bank] + conf->ad_ctrl_reg); in __atlas7_pmx_pin_ad_sel()
5011 regv &= ~(ANA_CLEAR_MASK << conf->ad_ctrl_bit); in __atlas7_pmx_pin_ad_sel()
5012 writel(regv | (ad_sel << conf->ad_ctrl_bit), in __atlas7_pmx_pin_ad_sel()
5013 pmx->regs[bank] + conf->ad_ctrl_reg); in __atlas7_pmx_pin_ad_sel()
5015 regv = readl(pmx->regs[bank] + conf->ad_ctrl_reg); in __atlas7_pmx_pin_ad_sel()
5016 pr_debug("bank:%d reg:0x%04x val:0x%08lx\n", in __atlas7_pmx_pin_ad_sel()
5017 bank, conf->ad_ctrl_reg, regv); in __atlas7_pmx_pin_ad_sel()
5025 if (conf->type != PAD_T_AD) in __atlas7_pmx_pin_analog_enable()
5026 return -EINVAL; in __atlas7_pmx_pin_analog_enable()
5035 if (conf->type != PAD_T_AD) in __atlas7_pmx_pin_digital_enable()
5049 pr_debug("PMX DUMP ### pin#%d func:%d #### START >>>\n", in __atlas7_pmx_pin_enable()
5053 conf = &pmx->pctl_data->confs[pin]; in __atlas7_pmx_pin_enable()
5060 dev_err(pmx->dev, in __atlas7_pmx_pin_enable()
5061 "Convert pad#%d to analog failed, ret=%d\n", in __atlas7_pmx_pin_enable()
5069 dev_err(pmx->dev, in __atlas7_pmx_pin_enable()
5070 "Convert pad#%d to digital failed, ret=%d\n", in __atlas7_pmx_pin_enable()
5076 writel(FUNC_CLEAR_MASK << conf->mux_bit, in __atlas7_pmx_pin_enable()
5077 pmx->regs[bank] + CLR_REG(conf->mux_reg)); in __atlas7_pmx_pin_enable()
5080 regv = readl(pmx->regs[bank] + conf->mux_reg); in __atlas7_pmx_pin_enable()
5081 regv &= ~(FUNC_CLEAR_MASK << conf->mux_bit); in __atlas7_pmx_pin_enable()
5082 writel(regv | (func << conf->mux_bit), in __atlas7_pmx_pin_enable()
5083 pmx->regs[bank] + conf->mux_reg); in __atlas7_pmx_pin_enable()
5085 regv = readl(pmx->regs[bank] + conf->mux_reg); in __atlas7_pmx_pin_enable()
5086 pr_debug("bank:%d reg:0x%04x val:0x%08lx\n", in __atlas7_pmx_pin_enable()
5087 bank, conf->mux_reg, regv); in __atlas7_pmx_pin_enable()
5102 pmx_func = &pmx->pctl_data->funcs[func_selector]; in atlas7_pmx_set_mux()
5103 pin_grp = &pmx->pctl_data->grps[group_selector]; in atlas7_pmx_set_mux()
5105 pr_debug("PMX DUMP ### Function:[%s] Group:[%s] #### START >>>\n", in atlas7_pmx_set_mux()
5106 pmx_func->name, pin_grp->name); in atlas7_pmx_set_mux()
5109 if (pin_grp->pins == (unsigned int *)&sd3_9_pins) { in atlas7_pmx_set_mux()
5110 if (!strcmp(pmx_func->name, "sd9")) in atlas7_pmx_set_mux()
5111 writel(1, pmx->sys2pci_base + SYS2PCI_SDIO9SEL); in atlas7_pmx_set_mux()
5113 writel(0, pmx->sys2pci_base + SYS2PCI_SDIO9SEL); in atlas7_pmx_set_mux()
5116 grp_mux = pmx_func->grpmux; in atlas7_pmx_set_mux()
5118 for (idx = 0; idx < grp_mux->pad_mux_count; idx++) { in atlas7_pmx_set_mux()
5119 mux = &grp_mux->pad_mux_list[idx]; in atlas7_pmx_set_mux()
5121 ret = __atlas7_pmx_pin_enable(pmx, mux->pin, mux->func); in atlas7_pmx_set_mux()
5123 dev_err(pmx->dev, in atlas7_pmx_set_mux()
5124 "FUNC:%s GRP:%s PIN#%d.%d failed, ret=%d\n", in atlas7_pmx_set_mux()
5125 pmx_func->name, pin_grp->name, in atlas7_pmx_set_mux()
5126 mux->pin, mux->func, ret); in atlas7_pmx_set_mux()
5131 pr_debug("PMX DUMP ### Function:[%s] Group:[%s] #### END <<<\n", in atlas7_pmx_set_mux()
5132 pmx_func->name, pin_grp->name); in atlas7_pmx_set_mux()
5162 struct atlas7_pad_config *conf = &pmx->pctl_data->confs[pin]; in altas7_pinctrl_set_pull_sel()
5169 pull_info = &atlas7_pull_map[conf->type]; in altas7_pinctrl_set_pull_sel()
5170 pull_sel_reg = pmx->regs[bank] + conf->pupd_reg; in altas7_pinctrl_set_pull_sel()
5173 regv = pull_info->s2v[sel].data & pull_info->mask; in altas7_pinctrl_set_pull_sel()
5176 writel(pull_info->mask << conf->pupd_bit, CLR_REG(pull_sel_reg)); in altas7_pinctrl_set_pull_sel()
5177 writel(regv << conf->pupd_bit, pull_sel_reg); in altas7_pinctrl_set_pull_sel()
5179 pr_debug("PIN_CFG ### SET PIN#%d PULL SELECTOR:%d == OK ####\n", in altas7_pinctrl_set_pull_sel()
5188 struct atlas7_pad_config *conf = &pmx->pctl_data->confs[pin]; in __altas7_pinctrl_set_drive_strength_sel()
5193 ds_info = &atlas7_ds_map[conf->type]; in __altas7_pinctrl_set_drive_strength_sel()
5194 if (sel & (~(ds_info->mask))) in __altas7_pinctrl_set_drive_strength_sel()
5198 ds_sel_reg = pmx->regs[bank] + conf->drvstr_reg; in __altas7_pinctrl_set_drive_strength_sel()
5200 writel(ds_info->imval << conf->drvstr_bit, CLR_REG(ds_sel_reg)); in __altas7_pinctrl_set_drive_strength_sel()
5201 writel(sel << conf->drvstr_bit, ds_sel_reg); in __altas7_pinctrl_set_drive_strength_sel()
5206 pr_err("Pad#%d type[%d] doesn't support ds code[%d]!\n", in __altas7_pinctrl_set_drive_strength_sel()
5207 pin, conf->type, sel); in __altas7_pinctrl_set_drive_strength_sel()
5208 return -ENOTSUPP; in __altas7_pinctrl_set_drive_strength_sel()
5215 struct atlas7_pad_config *conf = &pmx->pctl_data->confs[pin]; in altas7_pinctrl_set_drive_strength_sel()
5216 u32 type = conf->type; in altas7_pinctrl_set_drive_strength_sel()
5220 sel = convert_current_to_drive_strength(conf->type, ma); in altas7_pinctrl_set_drive_strength_sel()
5222 pr_err("Pad#%d type[%d] doesn't support ds current[%d]!\n", in altas7_pinctrl_set_drive_strength_sel()
5224 return -ENOTSUPP; in altas7_pinctrl_set_drive_strength_sel()
5229 pr_debug("PIN_CFG ### SET PIN#%d DS:%d MA:%d == %s ####\n", in altas7_pinctrl_set_drive_strength_sel()
5240 dev_dbg(pmx->dev, in atlas7_pmx_gpio_request_enable()
5241 "atlas7_pmx_gpio_request_enable: pin=%d\n", pin); in atlas7_pmx_gpio_request_enable()
5242 for (idx = 0; idx < range->npins; idx++) { in atlas7_pmx_gpio_request_enable()
5243 if (pin == range->pins[idx]) in atlas7_pmx_gpio_request_enable()
5247 if (idx >= range->npins) { in atlas7_pmx_gpio_request_enable()
5248 dev_err(pmx->dev, in atlas7_pmx_gpio_request_enable()
5249 "The pin#%d could not be requested as GPIO!!\n", in atlas7_pmx_gpio_request_enable()
5251 return -EPERM; in atlas7_pmx_gpio_request_enable()
5271 return pmx->pctl_data->grps_cnt; in atlas7_pinctrl_get_groups_count()
5279 return pmx->pctl_data->grps[group].name; in atlas7_pinctrl_get_group_name()
5287 *num_pins = pmx->pctl_data->grps[group].num_pins; in atlas7_pinctrl_get_group_pins()
5288 *pins = pmx->pctl_data->grps[group].pins; in atlas7_pinctrl_get_group_pins()
5328 pr_debug("PMX CFG###### ATLAS7 PIN#%d [%s] CONFIG PARAM:%d ARG:%d >>>>>\n", in atlas7_pin_config_set()
5365 return -ENOTSUPP; in atlas7_pin_config_set()
5367 pr_debug("PMX CFG###### ATLAS7 PIN#%d [%s] CONFIG PARAM:%d ARG:%d <<<<\n", in atlas7_pin_config_set()
5388 return -ENOTSUPP; in atlas7_pin_config_group_set()
5403 struct device_node *np = pdev->dev.of_node; in atlas7_pinmux_probe()
5409 pmx = devm_kzalloc(&pdev->dev, sizeof(*pmx), GFP_KERNEL); in atlas7_pinmux_probe()
5411 return -ENOMEM; in atlas7_pinmux_probe()
5418 return -EINVAL; in atlas7_pinmux_probe()
5425 pmx->sys2pci_base = devm_ioremap_resource(&pdev->dev, &res); in atlas7_pinmux_probe()
5426 if (IS_ERR(pmx->sys2pci_base)) in atlas7_pinmux_probe()
5427 return -ENOMEM; in atlas7_pinmux_probe()
5429 pmx->dev = &pdev->dev; in atlas7_pinmux_probe()
5431 pmx->pctl_data = &atlas7_ioc_data; in atlas7_pinmux_probe()
5432 pmx->pctl_desc.name = "pinctrl-atlas7"; in atlas7_pinmux_probe()
5433 pmx->pctl_desc.pins = pmx->pctl_data->pads; in atlas7_pinmux_probe()
5434 pmx->pctl_desc.npins = pmx->pctl_data->pads_cnt; in atlas7_pinmux_probe()
5435 pmx->pctl_desc.pctlops = &atlas7_pinctrl_ops; in atlas7_pinmux_probe()
5436 pmx->pctl_desc.pmxops = &atlas7_pinmux_ops; in atlas7_pinmux_probe()
5437 pmx->pctl_desc.confops = &atlas7_pinconf_ops; in atlas7_pinmux_probe()
5440 pmx->regs[idx] = of_iomap(np, idx); in atlas7_pinmux_probe()
5441 if (!pmx->regs[idx]) { in atlas7_pinmux_probe()
5442 dev_err(&pdev->dev, in atlas7_pinmux_probe()
5443 "can't map ioc bank#%d registers\n", idx); in atlas7_pinmux_probe()
5444 ret = -ENOMEM; in atlas7_pinmux_probe()
5450 pmx->pctl = pinctrl_register(&pmx->pctl_desc, &pdev->dev, pmx); in atlas7_pinmux_probe()
5451 if (IS_ERR(pmx->pctl)) { in atlas7_pinmux_probe()
5452 dev_err(&pdev->dev, "could not register atlas7 pinmux driver\n"); in atlas7_pinmux_probe()
5453 ret = PTR_ERR(pmx->pctl); in atlas7_pinmux_probe()
5459 dev_info(&pdev->dev, "initialized atlas7 pinmux driver\n"); in atlas7_pinmux_probe()
5465 if (!pmx->regs[idx]) in atlas7_pinmux_probe()
5467 iounmap(pmx->regs[idx]); in atlas7_pinmux_probe()
5485 for (idx = 0; idx < pmx->pctl_desc.npins; idx++) { in atlas7_pinmux_suspend_noirq()
5487 conf = &pmx->pctl_data->confs[idx]; in atlas7_pinmux_suspend_noirq()
5489 status = &pmx->sleep_data[idx]; in atlas7_pinmux_suspend_noirq()
5492 regv = readl(pmx->regs[bank] + conf->mux_reg); in atlas7_pinmux_suspend_noirq()
5493 status->func = (regv >> conf->mux_bit) & FUNC_CLEAR_MASK; in atlas7_pinmux_suspend_noirq()
5496 if (conf->ad_ctrl_reg == -1) in atlas7_pinmux_suspend_noirq()
5499 regv = readl(pmx->regs[bank] + conf->ad_ctrl_reg); in atlas7_pinmux_suspend_noirq()
5500 if (!(regv & (conf->ad_ctrl_bit << ANA_CLEAR_MASK))) in atlas7_pinmux_suspend_noirq()
5501 status->func = FUNC_ANALOGUE; in atlas7_pinmux_suspend_noirq()
5504 if (conf->drvstr_reg == -1) in atlas7_pinmux_suspend_noirq()
5508 ds_info = &atlas7_ds_map[conf->type]; in atlas7_pinmux_suspend_noirq()
5509 regv = readl(pmx->regs[bank] + conf->drvstr_reg); in atlas7_pinmux_suspend_noirq()
5510 status->dstr = (regv >> conf->drvstr_bit) & ds_info->mask; in atlas7_pinmux_suspend_noirq()
5514 pull_info = &atlas7_pull_map[conf->type]; in atlas7_pinmux_suspend_noirq()
5515 regv = readl(pmx->regs[bank] + conf->pupd_reg); in atlas7_pinmux_suspend_noirq()
5516 regv = (regv >> conf->pupd_bit) & pull_info->mask; in atlas7_pinmux_suspend_noirq()
5517 status->pull = pull_info->v2s[regv].data; in atlas7_pinmux_suspend_noirq()
5525 pmx->status_ds[idx] = readl(pmx->regs[BANK_DS] + in atlas7_pinmux_suspend_noirq()
5527 pmx->status_dsv[idx] = readl(pmx->regs[BANK_DS] + in atlas7_pinmux_suspend_noirq()
5540 for (idx = 0; idx < pmx->pctl_desc.npins; idx++) { in atlas7_pinmux_resume_noirq()
5542 status = &pmx->sleep_data[idx]; in atlas7_pinmux_resume_noirq()
5545 __atlas7_pmx_pin_enable(pmx, idx, (u32)status->func & 0xff); in atlas7_pinmux_resume_noirq()
5547 if (FUNC_ANALOGUE == status->func) in atlas7_pinmux_resume_noirq()
5551 __altas7_pinctrl_set_drive_strength_sel(pmx->pctl, idx, in atlas7_pinmux_resume_noirq()
5552 (u32)status->dstr & 0xff); in atlas7_pinmux_resume_noirq()
5556 altas7_pinctrl_set_pull_sel(pmx->pctl, idx, in atlas7_pinmux_resume_noirq()
5557 (u32)status->pull & 0xff); in atlas7_pinmux_resume_noirq()
5565 writel(~0, pmx->regs[BANK_DS] + in atlas7_pinmux_resume_noirq()
5567 writel(pmx->status_ds[idx], pmx->regs[BANK_DS] + in atlas7_pinmux_resume_noirq()
5569 writel(~0, pmx->regs[BANK_DS] + in atlas7_pinmux_resume_noirq()
5571 writel(pmx->status_dsv[idx], pmx->regs[BANK_DS] + in atlas7_pinmux_resume_noirq()
5587 { .compatible = "sirf,atlas7-ioc",},
5593 .name = "atlas7-ioc",
5615 return &a7gc->banks[GPIO_TO_BANK(gpio)]; in atlas7_gpio_to_bank()
5624 ofs = gpio - bank->gpio_offset; in __atlas7_gpio_to_pin()
5625 if (ofs >= bank->ngpio) in __atlas7_gpio_to_pin()
5626 return -ENODEV; in __atlas7_gpio_to_pin()
5628 return bank->gpio_pins[ofs]; in __atlas7_gpio_to_pin()
5640 bank = atlas7_gpio_to_bank(a7gc, d->hwirq); in atlas7_gpio_irq_ack()
5641 pin_in_bank = d->hwirq - bank->gpio_offset; in atlas7_gpio_irq_ack()
5644 raw_spin_lock_irqsave(&a7gc->lock, flags); in atlas7_gpio_irq_ack()
5650 raw_spin_unlock_irqrestore(&a7gc->lock, flags); in atlas7_gpio_irq_ack()
5660 pin_in_bank = idx - bank->gpio_offset; in __atlas7_gpio_irq_mask()
5675 raw_spin_lock_irqsave(&a7gc->lock, flags); in atlas7_gpio_irq_mask()
5677 __atlas7_gpio_irq_mask(a7gc, d->hwirq); in atlas7_gpio_irq_mask()
5679 raw_spin_unlock_irqrestore(&a7gc->lock, flags); in atlas7_gpio_irq_mask()
5691 bank = atlas7_gpio_to_bank(a7gc, d->hwirq); in atlas7_gpio_irq_unmask()
5692 pin_in_bank = d->hwirq - bank->gpio_offset; in atlas7_gpio_irq_unmask()
5695 raw_spin_lock_irqsave(&a7gc->lock, flags); in atlas7_gpio_irq_unmask()
5702 raw_spin_unlock_irqrestore(&a7gc->lock, flags); in atlas7_gpio_irq_unmask()
5715 bank = atlas7_gpio_to_bank(a7gc, d->hwirq); in atlas7_gpio_irq_type()
5716 pin_in_bank = d->hwirq - bank->gpio_offset; in atlas7_gpio_irq_type()
5719 raw_spin_lock_irqsave(&a7gc->lock, flags); in atlas7_gpio_irq_type()
5762 raw_spin_unlock_irqrestore(&a7gc->lock, flags); in atlas7_gpio_irq_type()
5768 .name = "atlas7-gpio-irq",
5785 for (idx = 0; idx < a7gc->nbank; idx++) { in atlas7_gpio_handle_irq()
5786 bank = &a7gc->banks[idx]; in atlas7_gpio_handle_irq()
5787 if (bank->irq == irq) in atlas7_gpio_handle_irq()
5790 BUG_ON(idx == a7gc->nbank); in atlas7_gpio_handle_irq()
5796 pr_warn("%s: gpio [%s] status %#x no interrupt is flagged\n", in atlas7_gpio_handle_irq()
5797 __func__, gc->label, status); in atlas7_gpio_handle_irq()
5810 pr_debug("%s: chip[%s] gpio:%d happens\n", in atlas7_gpio_handle_irq()
5811 __func__, gc->label, in atlas7_gpio_handle_irq()
5812 bank->gpio_offset + pin_in_bank); in atlas7_gpio_handle_irq()
5814 irq_find_mapping(gc->irq.domain, in atlas7_gpio_handle_irq()
5815 bank->gpio_offset + pin_in_bank)); in atlas7_gpio_handle_irq()
5818 if (++pin_in_bank >= bank->ngpio) in atlas7_gpio_handle_irq()
5835 pin_in_bank = gpio - bank->gpio_offset; in __atlas7_gpio_set_input()
5854 if (pinctrl_gpio_request(chip->base + gpio)) in atlas7_gpio_request()
5855 return -ENODEV; in atlas7_gpio_request()
5857 raw_spin_lock_irqsave(&a7gc->lock, flags); in atlas7_gpio_request()
5866 raw_spin_unlock_irqrestore(&a7gc->lock, flags); in atlas7_gpio_request()
5877 raw_spin_lock_irqsave(&a7gc->lock, flags); in atlas7_gpio_free()
5882 raw_spin_unlock_irqrestore(&a7gc->lock, flags); in atlas7_gpio_free()
5884 pinctrl_gpio_free(chip->base + gpio); in atlas7_gpio_free()
5893 raw_spin_lock_irqsave(&a7gc->lock, flags); in atlas7_gpio_direction_input()
5897 raw_spin_unlock_irqrestore(&a7gc->lock, flags); in atlas7_gpio_direction_input()
5910 pin_in_bank = gpio - bank->gpio_offset; in __atlas7_gpio_set_output()
5930 raw_spin_lock_irqsave(&a7gc->lock, flags); in atlas7_gpio_direction_output()
5934 raw_spin_unlock_irqrestore(&a7gc->lock, flags); in atlas7_gpio_direction_output()
5948 pin_in_bank = gpio - bank->gpio_offset; in atlas7_gpio_get_value()
5950 raw_spin_lock_irqsave(&a7gc->lock, flags); in atlas7_gpio_get_value()
5954 raw_spin_unlock_irqrestore(&a7gc->lock, flags); in atlas7_gpio_get_value()
5969 pin_in_bank = gpio - bank->gpio_offset; in atlas7_gpio_set_value()
5972 raw_spin_lock_irqsave(&a7gc->lock, flags); in atlas7_gpio_set_value()
5981 raw_spin_unlock_irqrestore(&a7gc->lock, flags); in atlas7_gpio_set_value()
5985 { .compatible = "sirf,atlas7-gpio", },
5991 struct device_node *np = pdev->dev.of_node; in atlas7_gpio_probe()
5998 ret = of_property_read_u32(np, "gpio-banks", &nbank); in atlas7_gpio_probe()
6000 dev_err(&pdev->dev, in atlas7_gpio_probe()
6001 "Could not find GPIO bank info,ret=%d!\n", in atlas7_gpio_probe()
6007 a7gc = devm_kzalloc(&pdev->dev, struct_size(a7gc, banks, nbank), in atlas7_gpio_probe()
6010 return -ENOMEM; in atlas7_gpio_probe()
6013 a7gc->clk = of_clk_get(np, 0); in atlas7_gpio_probe()
6014 if (!IS_ERR(a7gc->clk)) { in atlas7_gpio_probe()
6015 ret = clk_prepare_enable(a7gc->clk); in atlas7_gpio_probe()
6017 dev_err(&pdev->dev, in atlas7_gpio_probe()
6018 "Could not enable clock!\n"); in atlas7_gpio_probe()
6024 a7gc->reg = of_iomap(np, 0); in atlas7_gpio_probe()
6025 if (!a7gc->reg) { in atlas7_gpio_probe()
6026 dev_err(&pdev->dev, "Could not map GPIO Registers!\n"); in atlas7_gpio_probe()
6027 return -ENOMEM; in atlas7_gpio_probe()
6030 a7gc->nbank = nbank; in atlas7_gpio_probe()
6031 raw_spin_lock_init(&a7gc->lock); in atlas7_gpio_probe()
6034 chip = &a7gc->chip; in atlas7_gpio_probe()
6035 chip->request = atlas7_gpio_request; in atlas7_gpio_probe()
6036 chip->free = atlas7_gpio_free; in atlas7_gpio_probe()
6037 chip->direction_input = atlas7_gpio_direction_input; in atlas7_gpio_probe()
6038 chip->get = atlas7_gpio_get_value; in atlas7_gpio_probe()
6039 chip->direction_output = atlas7_gpio_direction_output; in atlas7_gpio_probe()
6040 chip->set = atlas7_gpio_set_value; in atlas7_gpio_probe()
6041 chip->base = -1; in atlas7_gpio_probe()
6043 chip->ngpio = NGPIO_OF_BANK * nbank; in atlas7_gpio_probe()
6044 chip->label = kstrdup(np->name, GFP_KERNEL); in atlas7_gpio_probe()
6045 chip->of_node = np; in atlas7_gpio_probe()
6046 chip->of_gpio_n_cells = 2; in atlas7_gpio_probe()
6047 chip->parent = &pdev->dev; in atlas7_gpio_probe()
6049 girq = &chip->irq; in atlas7_gpio_probe()
6050 girq->chip = &atlas7_gpio_irq_chip; in atlas7_gpio_probe()
6051 girq->parent_handler = atlas7_gpio_handle_irq; in atlas7_gpio_probe()
6052 girq->num_parents = nbank; in atlas7_gpio_probe()
6053 girq->parents = devm_kcalloc(&pdev->dev, nbank, in atlas7_gpio_probe()
6054 sizeof(*girq->parents), in atlas7_gpio_probe()
6056 if (!girq->parents) in atlas7_gpio_probe()
6057 return -ENOMEM; in atlas7_gpio_probe()
6061 bank = &a7gc->banks[idx]; in atlas7_gpio_probe()
6063 bank->base = ATLAS7_GPIO_BASE(a7gc, idx); in atlas7_gpio_probe()
6064 bank->gpio_offset = idx * NGPIO_OF_BANK; in atlas7_gpio_probe()
6069 dev_err(&pdev->dev, in atlas7_gpio_probe()
6070 "Unable to find IRQ number. ret=%d\n", ret); in atlas7_gpio_probe()
6072 ret = -ENXIO; in atlas7_gpio_probe()
6075 bank->irq = ret; in atlas7_gpio_probe()
6076 girq->parents[idx] = ret; in atlas7_gpio_probe()
6078 girq->default_type = IRQ_TYPE_NONE; in atlas7_gpio_probe()
6079 girq->handler = handle_level_irq; in atlas7_gpio_probe()
6084 dev_err(&pdev->dev, in atlas7_gpio_probe()
6085 "%pOF: error in probe function with status %d\n", in atlas7_gpio_probe()
6091 dev_info(&pdev->dev, "add to system.\n"); in atlas7_gpio_probe()
6105 for (idx = 0; idx < a7gc->nbank; idx++) { in atlas7_gpio_suspend_noirq()
6106 bank = &a7gc->banks[idx]; in atlas7_gpio_suspend_noirq()
6107 for (pin = 0; pin < bank->ngpio; pin++) { in atlas7_gpio_suspend_noirq()
6109 bank->sleep_data[pin] = readl(ctrl_reg); in atlas7_gpio_suspend_noirq()
6123 for (idx = 0; idx < a7gc->nbank; idx++) { in atlas7_gpio_resume_noirq()
6124 bank = &a7gc->banks[idx]; in atlas7_gpio_resume_noirq()
6125 for (pin = 0; pin < bank->ngpio; pin++) { in atlas7_gpio_resume_noirq()
6127 writel(bank->sleep_data[pin], ctrl_reg); in atlas7_gpio_resume_noirq()
6144 .name = "atlas7-gpio",