Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'tegra-for-5.19-arm64-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into arm/dt

arm64: tegra: Device tree changes for v5.19-rc1

This adds some improvements on Tegra234 (QSPI, CCPLEX), improves the
SDMMC clock speed on Tegra194 and adds the ASRC audio block on various
chip generations. Memory controller channels are also added on Tegra186
and later and the missing DFLL reset is added for Tegra210.

* tag 'tegra-for-5.19-arm64-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux:
arm64: tegra: Add missing DFLL reset on Tegra210
arm64: tegra: Add memory controller channels
arm64: tegra: Enable ASRC on various platforms
arm64: tegra: Add ASRC device on Tegra186 and later
arm64: tegra: Update PWM fan node name
arm64: tegra: Add node for Tegra234 CCPLEX cluster
arm64: tegra: Add QSPI controllers on Tegra234
arm64: tegra: Update SDMMC1/3 clock source for Tegra194

Link: https://lore.kernel.org/r/20220506143005.3916655-5-thierry.reding@gmail.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>

+1038 -13
+223
arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts
··· 811 811 remote-endpoint = <&mixer_out5_ep>; 812 812 }; 813 813 }; 814 + 815 + xbar_asrc_in1_port: port@63 { 816 + reg = <0x63>; 817 + 818 + xbar_asrc_in1_ep: endpoint { 819 + remote-endpoint = <&asrc_in1_ep>; 820 + }; 821 + }; 822 + 823 + port@64 { 824 + reg = <0x64>; 825 + 826 + xbar_asrc_out1_ep: endpoint { 827 + remote-endpoint = <&asrc_out1_ep>; 828 + }; 829 + }; 830 + 831 + xbar_asrc_in2_port: port@65 { 832 + reg = <0x65>; 833 + 834 + xbar_asrc_in2_ep: endpoint { 835 + remote-endpoint = <&asrc_in2_ep>; 836 + }; 837 + }; 838 + 839 + port@66 { 840 + reg = <0x66>; 841 + 842 + xbar_asrc_out2_ep: endpoint { 843 + remote-endpoint = <&asrc_out2_ep>; 844 + }; 845 + }; 846 + 847 + xbar_asrc_in3_port: port@67 { 848 + reg = <0x67>; 849 + 850 + xbar_asrc_in3_ep: endpoint { 851 + remote-endpoint = <&asrc_in3_ep>; 852 + }; 853 + }; 854 + 855 + port@68 { 856 + reg = <0x68>; 857 + 858 + xbar_asrc_out3_ep: endpoint { 859 + remote-endpoint = <&asrc_out3_ep>; 860 + }; 861 + }; 862 + 863 + xbar_asrc_in4_port: port@69 { 864 + reg = <0x69>; 865 + 866 + xbar_asrc_in4_ep: endpoint { 867 + remote-endpoint = <&asrc_in4_ep>; 868 + }; 869 + }; 870 + 871 + port@6a { 872 + reg = <0x6a>; 873 + 874 + xbar_asrc_out4_ep: endpoint { 875 + remote-endpoint = <&asrc_out4_ep>; 876 + }; 877 + }; 878 + 879 + xbar_asrc_in5_port: port@6b { 880 + reg = <0x6b>; 881 + 882 + xbar_asrc_in5_ep: endpoint { 883 + remote-endpoint = <&asrc_in5_ep>; 884 + }; 885 + }; 886 + 887 + port@6c { 888 + reg = <0x6c>; 889 + 890 + xbar_asrc_out5_ep: endpoint { 891 + remote-endpoint = <&asrc_out5_ep>; 892 + }; 893 + }; 894 + 895 + xbar_asrc_in6_port: port@6d { 896 + reg = <0x6d>; 897 + 898 + xbar_asrc_in6_ep: endpoint { 899 + remote-endpoint = <&asrc_in6_ep>; 900 + }; 901 + }; 902 + 903 + port@6e { 904 + reg = <0x6e>; 905 + 906 + xbar_asrc_out6_ep: endpoint { 907 + remote-endpoint = <&asrc_out6_ep>; 908 + }; 909 + }; 910 + 911 + xbar_asrc_in7_port: port@6f { 912 + reg = <0x6f>; 913 + 914 + xbar_asrc_in7_ep: endpoint { 915 + remote-endpoint = <&asrc_in7_ep>; 916 + }; 917 + }; 814 918 }; 815 919 816 920 admaif@290f000 { ··· 2039 1935 }; 2040 1936 }; 2041 1937 }; 1938 + 1939 + asrc@2910000 { 1940 + status = "okay"; 1941 + 1942 + ports { 1943 + #address-cells = <1>; 1944 + #size-cells = <0>; 1945 + 1946 + port@0 { 1947 + reg = <0x0>; 1948 + 1949 + asrc_in1_ep: endpoint { 1950 + remote-endpoint = <&xbar_asrc_in1_ep>; 1951 + }; 1952 + }; 1953 + 1954 + port@1 { 1955 + reg = <0x1>; 1956 + 1957 + asrc_in2_ep: endpoint { 1958 + remote-endpoint = <&xbar_asrc_in2_ep>; 1959 + }; 1960 + }; 1961 + 1962 + port@2 { 1963 + reg = <0x2>; 1964 + 1965 + asrc_in3_ep: endpoint { 1966 + remote-endpoint = <&xbar_asrc_in3_ep>; 1967 + }; 1968 + }; 1969 + 1970 + port@3 { 1971 + reg = <0x3>; 1972 + 1973 + asrc_in4_ep: endpoint { 1974 + remote-endpoint = <&xbar_asrc_in4_ep>; 1975 + }; 1976 + }; 1977 + 1978 + port@4 { 1979 + reg = <0x4>; 1980 + 1981 + asrc_in5_ep: endpoint { 1982 + remote-endpoint = <&xbar_asrc_in5_ep>; 1983 + }; 1984 + }; 1985 + 1986 + port@5 { 1987 + reg = <0x5>; 1988 + 1989 + asrc_in6_ep: endpoint { 1990 + remote-endpoint = <&xbar_asrc_in6_ep>; 1991 + }; 1992 + }; 1993 + 1994 + port@6 { 1995 + reg = <0x6>; 1996 + 1997 + asrc_in7_ep: endpoint { 1998 + remote-endpoint = <&xbar_asrc_in7_ep>; 1999 + }; 2000 + }; 2001 + 2002 + asrc_out1_port: port@7 { 2003 + reg = <0x7>; 2004 + 2005 + asrc_out1_ep: endpoint { 2006 + remote-endpoint = <&xbar_asrc_out1_ep>; 2007 + }; 2008 + }; 2009 + 2010 + asrc_out2_port: port@8 { 2011 + reg = <0x8>; 2012 + 2013 + asrc_out2_ep: endpoint { 2014 + remote-endpoint = <&xbar_asrc_out2_ep>; 2015 + }; 2016 + }; 2017 + 2018 + asrc_out3_port: port@9 { 2019 + reg = <0x9>; 2020 + 2021 + asrc_out3_ep: endpoint { 2022 + remote-endpoint = <&xbar_asrc_out3_ep>; 2023 + }; 2024 + }; 2025 + 2026 + asrc_out4_port: port@a { 2027 + reg = <0xa>; 2028 + 2029 + asrc_out4_ep: endpoint { 2030 + remote-endpoint = <&xbar_asrc_out4_ep>; 2031 + }; 2032 + }; 2033 + 2034 + asrc_out5_port: port@b { 2035 + reg = <0xb>; 2036 + 2037 + asrc_out5_ep: endpoint { 2038 + remote-endpoint = <&xbar_asrc_out5_ep>; 2039 + }; 2040 + }; 2041 + 2042 + asrc_out6_port: port@c { 2043 + reg = <0xc>; 2044 + 2045 + asrc_out6_ep: endpoint { 2046 + remote-endpoint = <&xbar_asrc_out6_ep>; 2047 + }; 2048 + }; 2049 + }; 2050 + }; 2042 2051 }; 2043 2052 }; 2044 2053 ··· 2548 2331 <&xbar_mixer_in5_port>, <&xbar_mixer_in6_port>, 2549 2332 <&xbar_mixer_in7_port>, <&xbar_mixer_in8_port>, 2550 2333 <&xbar_mixer_in9_port>, <&xbar_mixer_in10_port>, 2334 + <&xbar_asrc_in1_port>, <&xbar_asrc_in2_port>, 2335 + <&xbar_asrc_in3_port>, <&xbar_asrc_in4_port>, 2336 + <&xbar_asrc_in5_port>, <&xbar_asrc_in6_port>, 2337 + <&xbar_asrc_in7_port>, 2551 2338 /* HW accelerators */ 2552 2339 <&sfc1_out_port>, <&sfc2_out_port>, 2553 2340 <&sfc3_out_port>, <&sfc4_out_port>, ··· 2569 2348 <&mixer_out1_port>, <&mixer_out2_port>, 2570 2349 <&mixer_out3_port>, <&mixer_out4_port>, 2571 2350 <&mixer_out5_port>, 2351 + <&asrc_out1_port>, <&asrc_out2_port>, <&asrc_out3_port>, 2352 + <&asrc_out4_port>, <&asrc_out5_port>, <&asrc_out6_port>, 2572 2353 /* I/O */ 2573 2354 <&i2s1_port>, <&i2s2_port>, <&i2s3_port>, <&i2s4_port>, 2574 2355 <&i2s5_port>, <&i2s6_port>, <&dmic1_port>, <&dmic2_port>,
+1 -1
arch/arm64/boot/dts/nvidia/tegra186-p3509-0000+p3636-0001.dts
··· 349 349 status = "okay"; 350 350 }; 351 351 352 - fan: fan { 352 + fan: pwm-fan { 353 353 compatible = "pwm-fan"; 354 354 pwms = <&pwm4 0 45334>; 355 355
+14 -1
arch/arm64/boot/dts/nvidia/tegra186.dtsi
··· 516 516 sound-name-prefix = "MIXER1"; 517 517 status = "disabled"; 518 518 }; 519 + 520 + tegra_asrc: asrc@2910000 { 521 + compatible = "nvidia,tegra186-asrc"; 522 + reg = <0x2910000 0x2000>; 523 + sound-name-prefix = "ASRC1"; 524 + status = "disabled"; 525 + }; 519 526 }; 520 527 }; 521 528 522 529 mc: memory-controller@2c00000 { 523 530 compatible = "nvidia,tegra186-mc"; 524 - reg = <0x0 0x02c00000 0x0 0xb0000>; 531 + reg = <0x0 0x02c00000 0x0 0x10000>, /* MC-SID */ 532 + <0x0 0x02c10000 0x0 0x10000>, /* Broadcast channel */ 533 + <0x0 0x02c20000 0x0 0x10000>, /* MC0 */ 534 + <0x0 0x02c30000 0x0 0x10000>, /* MC1 */ 535 + <0x0 0x02c40000 0x0 0x10000>, /* MC2 */ 536 + <0x0 0x02c50000 0x0 0x10000>; /* MC3 */ 537 + reg-names = "sid", "broadcast", "ch0", "ch1", "ch2", "ch3"; 525 538 interrupts = <GIC_SPI 223 IRQ_TYPE_LEVEL_HIGH>; 526 539 status = "disabled"; 527 540
+224 -1
arch/arm64/boot/dts/nvidia/tegra194-p2972-0000.dts
··· 764 764 remote-endpoint = <&mixer_out5_ep>; 765 765 }; 766 766 }; 767 + 768 + xbar_asrc_in1_port: port@63 { 769 + reg = <0x63>; 770 + 771 + xbar_asrc_in1_ep: endpoint { 772 + remote-endpoint = <&asrc_in1_ep>; 773 + }; 774 + }; 775 + 776 + port@64 { 777 + reg = <0x64>; 778 + 779 + xbar_asrc_out1_ep: endpoint { 780 + remote-endpoint = <&asrc_out1_ep>; 781 + }; 782 + }; 783 + 784 + xbar_asrc_in2_port: port@65 { 785 + reg = <0x65>; 786 + 787 + xbar_asrc_in2_ep: endpoint { 788 + remote-endpoint = <&asrc_in2_ep>; 789 + }; 790 + }; 791 + 792 + port@66 { 793 + reg = <0x66>; 794 + 795 + xbar_asrc_out2_ep: endpoint { 796 + remote-endpoint = <&asrc_out2_ep>; 797 + }; 798 + }; 799 + 800 + xbar_asrc_in3_port: port@67 { 801 + reg = <0x67>; 802 + 803 + xbar_asrc_in3_ep: endpoint { 804 + remote-endpoint = <&asrc_in3_ep>; 805 + }; 806 + }; 807 + 808 + port@68 { 809 + reg = <0x68>; 810 + 811 + xbar_asrc_out3_ep: endpoint { 812 + remote-endpoint = <&asrc_out3_ep>; 813 + }; 814 + }; 815 + 816 + xbar_asrc_in4_port: port@69 { 817 + reg = <0x69>; 818 + 819 + xbar_asrc_in4_ep: endpoint { 820 + remote-endpoint = <&asrc_in4_ep>; 821 + }; 822 + }; 823 + 824 + port@6a { 825 + reg = <0x6a>; 826 + 827 + xbar_asrc_out4_ep: endpoint { 828 + remote-endpoint = <&asrc_out4_ep>; 829 + }; 830 + }; 831 + 832 + xbar_asrc_in5_port: port@6b { 833 + reg = <0x6b>; 834 + 835 + xbar_asrc_in5_ep: endpoint { 836 + remote-endpoint = <&asrc_in5_ep>; 837 + }; 838 + }; 839 + 840 + port@6c { 841 + reg = <0x6c>; 842 + 843 + xbar_asrc_out5_ep: endpoint { 844 + remote-endpoint = <&asrc_out5_ep>; 845 + }; 846 + }; 847 + 848 + xbar_asrc_in6_port: port@6d { 849 + reg = <0x6d>; 850 + 851 + xbar_asrc_in6_ep: endpoint { 852 + remote-endpoint = <&asrc_in6_ep>; 853 + }; 854 + }; 855 + 856 + port@6e { 857 + reg = <0x6e>; 858 + 859 + xbar_asrc_out6_ep: endpoint { 860 + remote-endpoint = <&asrc_out6_ep>; 861 + }; 862 + }; 863 + 864 + xbar_asrc_in7_port: port@6f { 865 + reg = <0x6f>; 866 + 867 + xbar_asrc_in7_ep: endpoint { 868 + remote-endpoint = <&asrc_in7_ep>; 869 + }; 870 + }; 767 871 }; 768 872 769 873 admaif@290f000 { ··· 1838 1734 }; 1839 1735 }; 1840 1736 }; 1737 + 1738 + asrc@2910000 { 1739 + status = "okay"; 1740 + 1741 + ports { 1742 + #address-cells = <1>; 1743 + #size-cells = <0>; 1744 + 1745 + port@0 { 1746 + reg = <0x0>; 1747 + 1748 + asrc_in1_ep: endpoint { 1749 + remote-endpoint = <&xbar_asrc_in1_ep>; 1750 + }; 1751 + }; 1752 + 1753 + port@1 { 1754 + reg = <0x1>; 1755 + 1756 + asrc_in2_ep: endpoint { 1757 + remote-endpoint = <&xbar_asrc_in2_ep>; 1758 + }; 1759 + }; 1760 + 1761 + port@2 { 1762 + reg = <0x2>; 1763 + 1764 + asrc_in3_ep: endpoint { 1765 + remote-endpoint = <&xbar_asrc_in3_ep>; 1766 + }; 1767 + }; 1768 + 1769 + port@3 { 1770 + reg = <0x3>; 1771 + 1772 + asrc_in4_ep: endpoint { 1773 + remote-endpoint = <&xbar_asrc_in4_ep>; 1774 + }; 1775 + }; 1776 + 1777 + port@4 { 1778 + reg = <0x4>; 1779 + 1780 + asrc_in5_ep: endpoint { 1781 + remote-endpoint = <&xbar_asrc_in5_ep>; 1782 + }; 1783 + }; 1784 + 1785 + port@5 { 1786 + reg = <0x5>; 1787 + 1788 + asrc_in6_ep: endpoint { 1789 + remote-endpoint = <&xbar_asrc_in6_ep>; 1790 + }; 1791 + }; 1792 + 1793 + port@6 { 1794 + reg = <0x6>; 1795 + 1796 + asrc_in7_ep: endpoint { 1797 + remote-endpoint = <&xbar_asrc_in7_ep>; 1798 + }; 1799 + }; 1800 + 1801 + asrc_out1_port: port@7 { 1802 + reg = <0x7>; 1803 + 1804 + asrc_out1_ep: endpoint { 1805 + remote-endpoint = <&xbar_asrc_out1_ep>; 1806 + }; 1807 + }; 1808 + 1809 + asrc_out2_port: port@8 { 1810 + reg = <0x8>; 1811 + 1812 + asrc_out2_ep: endpoint { 1813 + remote-endpoint = <&xbar_asrc_out2_ep>; 1814 + }; 1815 + }; 1816 + 1817 + asrc_out3_port: port@9 { 1818 + reg = <0x9>; 1819 + 1820 + asrc_out3_ep: endpoint { 1821 + remote-endpoint = <&xbar_asrc_out3_ep>; 1822 + }; 1823 + }; 1824 + 1825 + asrc_out4_port: port@a { 1826 + reg = <0xa>; 1827 + 1828 + asrc_out4_ep: endpoint { 1829 + remote-endpoint = <&xbar_asrc_out4_ep>; 1830 + }; 1831 + }; 1832 + 1833 + asrc_out5_port: port@b { 1834 + reg = <0xb>; 1835 + 1836 + asrc_out5_ep: endpoint { 1837 + remote-endpoint = <&xbar_asrc_out5_ep>; 1838 + }; 1839 + }; 1840 + 1841 + asrc_out6_port: port@c { 1842 + reg = <0xc>; 1843 + 1844 + asrc_out6_ep: endpoint { 1845 + remote-endpoint = <&xbar_asrc_out6_ep>; 1846 + }; 1847 + }; 1848 + }; 1849 + }; 1841 1850 }; 1842 1851 }; 1843 1852 ··· 2206 1989 "p2u-5", "p2u-6", "p2u-7"; 2207 1990 }; 2208 1991 2209 - fan: fan { 1992 + fan: pwm-fan { 2210 1993 compatible = "pwm-fan"; 2211 1994 pwms = <&pwm4 0 45334>; 2212 1995 ··· 2269 2052 <&xbar_mixer_in5_port>, <&xbar_mixer_in6_port>, 2270 2053 <&xbar_mixer_in7_port>, <&xbar_mixer_in8_port>, 2271 2054 <&xbar_mixer_in9_port>, <&xbar_mixer_in10_port>, 2055 + <&xbar_asrc_in1_port>, <&xbar_asrc_in2_port>, 2056 + <&xbar_asrc_in3_port>, <&xbar_asrc_in4_port>, 2057 + <&xbar_asrc_in5_port>, <&xbar_asrc_in6_port>, 2058 + <&xbar_asrc_in7_port>, 2272 2059 /* HW accelerators */ 2273 2060 <&sfc1_out_port>, <&sfc2_out_port>, 2274 2061 <&sfc3_out_port>, <&sfc4_out_port>, ··· 2289 2068 <&adx4_out3_port>, <&adx4_out4_port>, 2290 2069 <&mixer_out1_port>, <&mixer_out2_port>, <&mixer_out3_port>, 2291 2070 <&mixer_out4_port>, <&mixer_out5_port>, 2071 + <&asrc_out1_port>, <&asrc_out2_port>, <&asrc_out3_port>, 2072 + <&asrc_out4_port>, <&asrc_out5_port>, <&asrc_out6_port>, 2292 2073 /* BE I/O Ports */ 2293 2074 <&i2s1_port>, <&i2s2_port>, <&i2s4_port>, <&i2s6_port>, 2294 2075 <&dmic3_port>;
+224 -1
arch/arm64/boot/dts/nvidia/tegra194-p3509-0000.dtsi
··· 774 774 remote-endpoint = <&mixer_out5_ep>; 775 775 }; 776 776 }; 777 + 778 + xbar_asrc_in1_port: port@63 { 779 + reg = <0x63>; 780 + 781 + xbar_asrc_in1_ep: endpoint { 782 + remote-endpoint = <&asrc_in1_ep>; 783 + }; 784 + }; 785 + 786 + port@64 { 787 + reg = <0x64>; 788 + 789 + xbar_asrc_out1_ep: endpoint { 790 + remote-endpoint = <&asrc_out1_ep>; 791 + }; 792 + }; 793 + 794 + xbar_asrc_in2_port: port@65 { 795 + reg = <0x65>; 796 + 797 + xbar_asrc_in2_ep: endpoint { 798 + remote-endpoint = <&asrc_in2_ep>; 799 + }; 800 + }; 801 + 802 + port@66 { 803 + reg = <0x66>; 804 + 805 + xbar_asrc_out2_ep: endpoint { 806 + remote-endpoint = <&asrc_out2_ep>; 807 + }; 808 + }; 809 + 810 + xbar_asrc_in3_port: port@67 { 811 + reg = <0x67>; 812 + 813 + xbar_asrc_in3_ep: endpoint { 814 + remote-endpoint = <&asrc_in3_ep>; 815 + }; 816 + }; 817 + 818 + port@68 { 819 + reg = <0x68>; 820 + 821 + xbar_asrc_out3_ep: endpoint { 822 + remote-endpoint = <&asrc_out3_ep>; 823 + }; 824 + }; 825 + 826 + xbar_asrc_in4_port: port@69 { 827 + reg = <0x69>; 828 + 829 + xbar_asrc_in4_ep: endpoint { 830 + remote-endpoint = <&asrc_in4_ep>; 831 + }; 832 + }; 833 + 834 + port@6a { 835 + reg = <0x6a>; 836 + 837 + xbar_asrc_out4_ep: endpoint { 838 + remote-endpoint = <&asrc_out4_ep>; 839 + }; 840 + }; 841 + 842 + xbar_asrc_in5_port: port@6b { 843 + reg = <0x6b>; 844 + 845 + xbar_asrc_in5_ep: endpoint { 846 + remote-endpoint = <&asrc_in5_ep>; 847 + }; 848 + }; 849 + 850 + port@6c { 851 + reg = <0x6c>; 852 + 853 + xbar_asrc_out5_ep: endpoint { 854 + remote-endpoint = <&asrc_out5_ep>; 855 + }; 856 + }; 857 + 858 + xbar_asrc_in6_port: port@6d { 859 + reg = <0x6d>; 860 + 861 + xbar_asrc_in6_ep: endpoint { 862 + remote-endpoint = <&asrc_in6_ep>; 863 + }; 864 + }; 865 + 866 + port@6e { 867 + reg = <0x6e>; 868 + 869 + xbar_asrc_out6_ep: endpoint { 870 + remote-endpoint = <&asrc_out6_ep>; 871 + }; 872 + }; 873 + 874 + xbar_asrc_in7_port: port@6f { 875 + reg = <0x6f>; 876 + 877 + xbar_asrc_in7_ep: endpoint { 878 + remote-endpoint = <&asrc_in7_ep>; 879 + }; 880 + }; 777 881 }; 778 882 779 883 admaif@290f000 { ··· 1898 1794 }; 1899 1795 }; 1900 1796 }; 1797 + 1798 + asrc@2910000 { 1799 + status = "okay"; 1800 + 1801 + ports { 1802 + #address-cells = <1>; 1803 + #size-cells = <0>; 1804 + 1805 + port@0 { 1806 + reg = <0x0>; 1807 + 1808 + asrc_in1_ep: endpoint { 1809 + remote-endpoint = <&xbar_asrc_in1_ep>; 1810 + }; 1811 + }; 1812 + 1813 + port@1 { 1814 + reg = <0x1>; 1815 + 1816 + asrc_in2_ep: endpoint { 1817 + remote-endpoint = <&xbar_asrc_in2_ep>; 1818 + }; 1819 + }; 1820 + 1821 + port@2 { 1822 + reg = <0x2>; 1823 + 1824 + asrc_in3_ep: endpoint { 1825 + remote-endpoint = <&xbar_asrc_in3_ep>; 1826 + }; 1827 + }; 1828 + 1829 + port@3 { 1830 + reg = <0x3>; 1831 + 1832 + asrc_in4_ep: endpoint { 1833 + remote-endpoint = <&xbar_asrc_in4_ep>; 1834 + }; 1835 + }; 1836 + 1837 + port@4 { 1838 + reg = <0x4>; 1839 + 1840 + asrc_in5_ep: endpoint { 1841 + remote-endpoint = <&xbar_asrc_in5_ep>; 1842 + }; 1843 + }; 1844 + 1845 + port@5 { 1846 + reg = <0x5>; 1847 + 1848 + asrc_in6_ep: endpoint { 1849 + remote-endpoint = <&xbar_asrc_in6_ep>; 1850 + }; 1851 + }; 1852 + 1853 + port@6 { 1854 + reg = <0x6>; 1855 + 1856 + asrc_in7_ep: endpoint { 1857 + remote-endpoint = <&xbar_asrc_in7_ep>; 1858 + }; 1859 + }; 1860 + 1861 + asrc_out1_port: port@7 { 1862 + reg = <0x7>; 1863 + 1864 + asrc_out1_ep: endpoint { 1865 + remote-endpoint = <&xbar_asrc_out1_ep>; 1866 + }; 1867 + }; 1868 + 1869 + asrc_out2_port: port@8 { 1870 + reg = <0x8>; 1871 + 1872 + asrc_out2_ep: endpoint { 1873 + remote-endpoint = <&xbar_asrc_out2_ep>; 1874 + }; 1875 + }; 1876 + 1877 + asrc_out3_port: port@9 { 1878 + reg = <0x9>; 1879 + 1880 + asrc_out3_ep: endpoint { 1881 + remote-endpoint = <&xbar_asrc_out3_ep>; 1882 + }; 1883 + }; 1884 + 1885 + asrc_out4_port: port@a { 1886 + reg = <0xa>; 1887 + 1888 + asrc_out4_ep: endpoint { 1889 + remote-endpoint = <&xbar_asrc_out4_ep>; 1890 + }; 1891 + }; 1892 + 1893 + asrc_out5_port: port@b { 1894 + reg = <0xb>; 1895 + 1896 + asrc_out5_ep: endpoint { 1897 + remote-endpoint = <&xbar_asrc_out5_ep>; 1898 + }; 1899 + }; 1900 + 1901 + asrc_out6_port: port@c { 1902 + reg = <0xc>; 1903 + 1904 + asrc_out6_ep: endpoint { 1905 + remote-endpoint = <&xbar_asrc_out6_ep>; 1906 + }; 1907 + }; 1908 + }; 1909 + }; 1901 1910 }; 1902 1911 }; 1903 1912 ··· 2210 1993 "p2u-5", "p2u-6", "p2u-7"; 2211 1994 }; 2212 1995 2213 - fan: fan { 1996 + fan: pwm-fan { 2214 1997 compatible = "pwm-fan"; 2215 1998 pwms = <&pwm6 0 45334>; 2216 1999 ··· 2319 2102 <&xbar_mixer_in5_port>, <&xbar_mixer_in6_port>, 2320 2103 <&xbar_mixer_in7_port>, <&xbar_mixer_in8_port>, 2321 2104 <&xbar_mixer_in9_port>, <&xbar_mixer_in10_port>, 2105 + <&xbar_asrc_in1_port>, <&xbar_asrc_in2_port>, 2106 + <&xbar_asrc_in3_port>, <&xbar_asrc_in4_port>, 2107 + <&xbar_asrc_in5_port>, <&xbar_asrc_in6_port>, 2108 + <&xbar_asrc_in7_port>, 2322 2109 /* HW accelerators */ 2323 2110 <&sfc1_out_port>, <&sfc2_out_port>, 2324 2111 <&sfc3_out_port>, <&sfc4_out_port>, ··· 2340 2119 <&mixer_out1_port>, <&mixer_out2_port>, 2341 2120 <&mixer_out3_port>, <&mixer_out4_port>, 2342 2121 <&mixer_out5_port>, 2122 + <&asrc_out1_port>, <&asrc_out2_port>, <&asrc_out3_port>, 2123 + <&asrc_out4_port>, <&asrc_out5_port>, <&asrc_out6_port>, 2343 2124 /* BE I/O Ports */ 2344 2125 <&i2s3_port>, <&i2s5_port>, 2345 2126 <&dmic1_port>, <&dmic2_port>, <&dmic4_port>,
+39 -3
arch/arm64/boot/dts/nvidia/tegra194.dtsi
··· 569 569 sound-name-prefix = "MIXER1"; 570 570 status = "disabled"; 571 571 }; 572 + 573 + tegra_asrc: asrc@2910000 { 574 + compatible = "nvidia,tegra194-asrc", 575 + "nvidia,tegra186-asrc"; 576 + reg = <0x2910000 0x2000>; 577 + sound-name-prefix = "ASRC1"; 578 + status = "disabled"; 579 + }; 572 580 }; 573 581 }; 574 582 ··· 612 604 613 605 mc: memory-controller@2c00000 { 614 606 compatible = "nvidia,tegra194-mc"; 615 - reg = <0x02c00000 0x100000>, 616 - <0x02b80000 0x040000>, 617 - <0x01700000 0x100000>; 607 + reg = <0x02c00000 0x10000>, /* MC-SID */ 608 + <0x02c10000 0x10000>, /* MC Broadcast*/ 609 + <0x02c20000 0x10000>, /* MC0 */ 610 + <0x02c30000 0x10000>, /* MC1 */ 611 + <0x02c40000 0x10000>, /* MC2 */ 612 + <0x02c50000 0x10000>, /* MC3 */ 613 + <0x02b80000 0x10000>, /* MC4 */ 614 + <0x02b90000 0x10000>, /* MC5 */ 615 + <0x02ba0000 0x10000>, /* MC6 */ 616 + <0x02bb0000 0x10000>, /* MC7 */ 617 + <0x01700000 0x10000>, /* MC8 */ 618 + <0x01710000 0x10000>, /* MC9 */ 619 + <0x01720000 0x10000>, /* MC10 */ 620 + <0x01730000 0x10000>, /* MC11 */ 621 + <0x01740000 0x10000>, /* MC12 */ 622 + <0x01750000 0x10000>, /* MC13 */ 623 + <0x01760000 0x10000>, /* MC14 */ 624 + <0x01770000 0x10000>; /* MC15 */ 625 + reg-names = "sid", "broadcast", "ch0", "ch1", "ch2", "ch3", 626 + "ch4", "ch5", "ch6", "ch7", "ch8", "ch9", "ch10", 627 + "ch11", "ch12", "ch13", "ch14", "ch15"; 618 628 interrupts = <GIC_SPI 223 IRQ_TYPE_LEVEL_HIGH>; 619 629 #interconnect-cells = <1>; 620 630 status = "disabled"; ··· 960 934 clocks = <&bpmp TEGRA194_CLK_SDMMC1>, 961 935 <&bpmp TEGRA194_CLK_SDMMC_LEGACY_TM>; 962 936 clock-names = "sdhci", "tmclk"; 937 + assigned-clocks = <&bpmp TEGRA194_CLK_SDMMC1>, 938 + <&bpmp TEGRA194_CLK_PLLC4_MUXED>; 939 + assigned-clock-parents = 940 + <&bpmp TEGRA194_CLK_PLLC4_MUXED>, 941 + <&bpmp TEGRA194_CLK_PLLC4_VCO_DIV2>; 963 942 resets = <&bpmp TEGRA194_RESET_SDMMC1>; 964 943 reset-names = "sdhci"; 965 944 interconnects = <&mc TEGRA194_MEMORY_CLIENT_SDMMCRA &emc>, ··· 999 968 clocks = <&bpmp TEGRA194_CLK_SDMMC3>, 1000 969 <&bpmp TEGRA194_CLK_SDMMC_LEGACY_TM>; 1001 970 clock-names = "sdhci", "tmclk"; 971 + assigned-clocks = <&bpmp TEGRA194_CLK_SDMMC3>, 972 + <&bpmp TEGRA194_CLK_PLLC4_MUXED>; 973 + assigned-clock-parents = 974 + <&bpmp TEGRA194_CLK_PLLC4_MUXED>, 975 + <&bpmp TEGRA194_CLK_PLLC4_VCO_DIV2>; 1002 976 resets = <&bpmp TEGRA194_RESET_SDMMC3>; 1003 977 reset-names = "sdhci"; 1004 978 interconnects = <&mc TEGRA194_MEMORY_CLIENT_SDMMCR &emc>,
+1 -1
arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts
··· 1657 1657 }; 1658 1658 }; 1659 1659 1660 - fan: fan { 1660 + fan: pwm-fan { 1661 1661 compatible = "pwm-fan"; 1662 1662 pwms = <&pwm 3 45334>; 1663 1663
+3 -2
arch/arm64/boot/dts/nvidia/tegra210.dtsi
··· 1366 1366 <&tegra_car TEGRA210_CLK_DFLL_REF>, 1367 1367 <&tegra_car TEGRA210_CLK_I2C5>; 1368 1368 clock-names = "soc", "ref", "i2c"; 1369 - resets = <&tegra_car TEGRA210_RST_DFLL_DVCO>; 1370 - reset-names = "dvco"; 1369 + resets = <&tegra_car TEGRA210_RST_DFLL_DVCO>, 1370 + <&tegra_car 155>; 1371 + reset-names = "dvco", "dfll"; 1371 1372 #clock-cells = <0>; 1372 1373 clock-output-names = "dfllCPU_out"; 1373 1374 status = "disabled";
+12
arch/arm64/boot/dts/nvidia/tegra234-p3701-0000.dtsi
··· 7 7 compatible = "nvidia,p3701-0000", "nvidia,tegra234"; 8 8 9 9 bus@0 { 10 + spi@3270000 { 11 + status = "okay"; 12 + 13 + flash@0 { 14 + compatible = "jedec,spi-nor"; 15 + reg = <0>; 16 + spi-max-frequency = <102000000>; 17 + spi-tx-bus-width = <4>; 18 + spi-rx-bus-width = <4>; 19 + }; 20 + }; 21 + 10 22 mmc@3460000 { 11 23 status = "okay"; 12 24 bus-width = <8>;
+223
arch/arm64/boot/dts/nvidia/tegra234-p3737-0000+p3701-0000.dts
··· 763 763 remote-endpoint = <&mix_out5>; 764 764 }; 765 765 }; 766 + 767 + xbar_asrc_in1_port: port@63 { 768 + reg = <0x63>; 769 + 770 + xbar_asrc_in1_ep: endpoint { 771 + remote-endpoint = <&asrc_in1_ep>; 772 + }; 773 + }; 774 + 775 + port@64 { 776 + reg = <0x64>; 777 + 778 + xbar_asrc_out1_ep: endpoint { 779 + remote-endpoint = <&asrc_out1_ep>; 780 + }; 781 + }; 782 + 783 + xbar_asrc_in2_port: port@65 { 784 + reg = <0x65>; 785 + 786 + xbar_asrc_in2_ep: endpoint { 787 + remote-endpoint = <&asrc_in2_ep>; 788 + }; 789 + }; 790 + 791 + port@66 { 792 + reg = <0x66>; 793 + 794 + xbar_asrc_out2_ep: endpoint { 795 + remote-endpoint = <&asrc_out2_ep>; 796 + }; 797 + }; 798 + 799 + xbar_asrc_in3_port: port@67 { 800 + reg = <0x67>; 801 + 802 + xbar_asrc_in3_ep: endpoint { 803 + remote-endpoint = <&asrc_in3_ep>; 804 + }; 805 + }; 806 + 807 + port@68 { 808 + reg = <0x68>; 809 + 810 + xbar_asrc_out3_ep: endpoint { 811 + remote-endpoint = <&asrc_out3_ep>; 812 + }; 813 + }; 814 + 815 + xbar_asrc_in4_port: port@69 { 816 + reg = <0x69>; 817 + 818 + xbar_asrc_in4_ep: endpoint { 819 + remote-endpoint = <&asrc_in4_ep>; 820 + }; 821 + }; 822 + 823 + port@6a { 824 + reg = <0x6a>; 825 + 826 + xbar_asrc_out4_ep: endpoint { 827 + remote-endpoint = <&asrc_out4_ep>; 828 + }; 829 + }; 830 + 831 + xbar_asrc_in5_port: port@6b { 832 + reg = <0x6b>; 833 + 834 + xbar_asrc_in5_ep: endpoint { 835 + remote-endpoint = <&asrc_in5_ep>; 836 + }; 837 + }; 838 + 839 + port@6c { 840 + reg = <0x6c>; 841 + 842 + xbar_asrc_out5_ep: endpoint { 843 + remote-endpoint = <&asrc_out5_ep>; 844 + }; 845 + }; 846 + 847 + xbar_asrc_in6_port: port@6d { 848 + reg = <0x6d>; 849 + 850 + xbar_asrc_in6_ep: endpoint { 851 + remote-endpoint = <&asrc_in6_ep>; 852 + }; 853 + }; 854 + 855 + port@6e { 856 + reg = <0x6e>; 857 + 858 + xbar_asrc_out6_ep: endpoint { 859 + remote-endpoint = <&asrc_out6_ep>; 860 + }; 861 + }; 862 + 863 + xbar_asrc_in7_port: port@6f { 864 + reg = <0x6f>; 865 + 866 + xbar_asrc_in7_ep: endpoint { 867 + remote-endpoint = <&asrc_in7_ep>; 868 + }; 869 + }; 766 870 }; 767 871 768 872 i2s@2901000 { ··· 1837 1733 }; 1838 1734 }; 1839 1735 }; 1736 + 1737 + asrc@2910000 { 1738 + status = "okay"; 1739 + 1740 + ports { 1741 + #address-cells = <1>; 1742 + #size-cells = <0>; 1743 + 1744 + port@0 { 1745 + reg = <0x0>; 1746 + 1747 + asrc_in1_ep: endpoint { 1748 + remote-endpoint = <&xbar_asrc_in1_ep>; 1749 + }; 1750 + }; 1751 + 1752 + port@1 { 1753 + reg = <0x1>; 1754 + 1755 + asrc_in2_ep: endpoint { 1756 + remote-endpoint = <&xbar_asrc_in2_ep>; 1757 + }; 1758 + }; 1759 + 1760 + port@2 { 1761 + reg = <0x2>; 1762 + 1763 + asrc_in3_ep: endpoint { 1764 + remote-endpoint = <&xbar_asrc_in3_ep>; 1765 + }; 1766 + }; 1767 + 1768 + port@3 { 1769 + reg = <0x3>; 1770 + 1771 + asrc_in4_ep: endpoint { 1772 + remote-endpoint = <&xbar_asrc_in4_ep>; 1773 + }; 1774 + }; 1775 + 1776 + port@4 { 1777 + reg = <0x4>; 1778 + 1779 + asrc_in5_ep: endpoint { 1780 + remote-endpoint = <&xbar_asrc_in5_ep>; 1781 + }; 1782 + }; 1783 + 1784 + port@5 { 1785 + reg = <0x5>; 1786 + 1787 + asrc_in6_ep: endpoint { 1788 + remote-endpoint = <&xbar_asrc_in6_ep>; 1789 + }; 1790 + }; 1791 + 1792 + port@6 { 1793 + reg = <0x6>; 1794 + 1795 + asrc_in7_ep: endpoint { 1796 + remote-endpoint = <&xbar_asrc_in7_ep>; 1797 + }; 1798 + }; 1799 + 1800 + asrc_out1_port: port@7 { 1801 + reg = <0x7>; 1802 + 1803 + asrc_out1_ep: endpoint { 1804 + remote-endpoint = <&xbar_asrc_out1_ep>; 1805 + }; 1806 + }; 1807 + 1808 + asrc_out2_port: port@8 { 1809 + reg = <0x8>; 1810 + 1811 + asrc_out2_ep: endpoint { 1812 + remote-endpoint = <&xbar_asrc_out2_ep>; 1813 + }; 1814 + }; 1815 + 1816 + asrc_out3_port: port@9 { 1817 + reg = <0x9>; 1818 + 1819 + asrc_out3_ep: endpoint { 1820 + remote-endpoint = <&xbar_asrc_out3_ep>; 1821 + }; 1822 + }; 1823 + 1824 + asrc_out4_port: port@a { 1825 + reg = <0xa>; 1826 + 1827 + asrc_out4_ep: endpoint { 1828 + remote-endpoint = <&xbar_asrc_out4_ep>; 1829 + }; 1830 + }; 1831 + 1832 + asrc_out5_port: port@b { 1833 + reg = <0xb>; 1834 + 1835 + asrc_out5_ep: endpoint { 1836 + remote-endpoint = <&xbar_asrc_out5_ep>; 1837 + }; 1838 + }; 1839 + 1840 + asrc_out6_port: port@c { 1841 + reg = <0xc>; 1842 + 1843 + asrc_out6_ep: endpoint { 1844 + remote-endpoint = <&xbar_asrc_out6_ep>; 1845 + }; 1846 + }; 1847 + }; 1848 + }; 1840 1849 }; 1841 1850 1842 1851 dma-controller@2930000 { ··· 2040 1823 <&xbar_mix_in5_port>, <&xbar_mix_in6_port>, 2041 1824 <&xbar_mix_in7_port>, <&xbar_mix_in8_port>, 2042 1825 <&xbar_mix_in9_port>, <&xbar_mix_in10_port>, 1826 + <&xbar_asrc_in1_port>, <&xbar_asrc_in2_port>, 1827 + <&xbar_asrc_in3_port>, <&xbar_asrc_in4_port>, 1828 + <&xbar_asrc_in5_port>, <&xbar_asrc_in6_port>, 1829 + <&xbar_asrc_in7_port>, 2043 1830 /* HW accelerators */ 2044 1831 <&sfc1_out_port>, <&sfc2_out_port>, 2045 1832 <&sfc3_out_port>, <&sfc4_out_port>, ··· 2060 1839 <&adx4_out3_port>, <&adx4_out4_port>, 2061 1840 <&mix_out1_port>, <&mix_out2_port>, <&mix_out3_port>, 2062 1841 <&mix_out4_port>, <&mix_out5_port>, 1842 + <&asrc_out1_port>, <&asrc_out2_port>, <&asrc_out3_port>, 1843 + <&asrc_out4_port>, <&asrc_out5_port>, <&asrc_out6_port>, 2063 1844 /* BE I/O Ports */ 2064 1845 <&i2s1_port>, <&i2s2_port>, <&i2s4_port>, <&i2s6_port>, 2065 1846 <&dmic3_port>;
+64 -3
arch/arm64/boot/dts/nvidia/tegra234.dtsi
··· 378 378 iommus = <&smmu_niso0 TEGRA234_SID_APE>; 379 379 status = "disabled"; 380 380 }; 381 + 382 + tegra_asrc: asrc@2910000 { 383 + compatible = "nvidia,tegra234-asrc", 384 + "nvidia,tegra186-asrc"; 385 + reg = <0x2910000 0x2000>; 386 + sound-name-prefix = "ASRC1"; 387 + status = "disabled"; 388 + }; 381 389 }; 382 390 383 391 adma: dma-controller@2930000 { ··· 515 507 516 508 mc: memory-controller@2c00000 { 517 509 compatible = "nvidia,tegra234-mc"; 518 - reg = <0x02c00000 0x100000>, 519 - <0x02b80000 0x040000>, 520 - <0x01700000 0x100000>; 510 + reg = <0x02c00000 0x10000>, /* MC-SID */ 511 + <0x02c10000 0x10000>, /* MC Broadcast*/ 512 + <0x02c20000 0x10000>, /* MC0 */ 513 + <0x02c30000 0x10000>, /* MC1 */ 514 + <0x02c40000 0x10000>, /* MC2 */ 515 + <0x02c50000 0x10000>, /* MC3 */ 516 + <0x02b80000 0x10000>, /* MC4 */ 517 + <0x02b90000 0x10000>, /* MC5 */ 518 + <0x02ba0000 0x10000>, /* MC6 */ 519 + <0x02bb0000 0x10000>, /* MC7 */ 520 + <0x01700000 0x10000>, /* MC8 */ 521 + <0x01710000 0x10000>, /* MC9 */ 522 + <0x01720000 0x10000>, /* MC10 */ 523 + <0x01730000 0x10000>, /* MC11 */ 524 + <0x01740000 0x10000>, /* MC12 */ 525 + <0x01750000 0x10000>, /* MC13 */ 526 + <0x01760000 0x10000>, /* MC14 */ 527 + <0x01770000 0x10000>; /* MC15 */ 528 + reg-names = "sid", "broadcast", "ch0", "ch1", "ch2", "ch3", 529 + "ch4", "ch5", "ch6", "ch7", "ch8", "ch9", "ch10", 530 + "ch11", "ch12", "ch13", "ch14", "ch15"; 521 531 interrupts = <GIC_SPI 223 IRQ_TYPE_LEVEL_HIGH>; 522 532 #interconnect-cells = <1>; 523 533 status = "okay"; ··· 680 654 reset-names = "i2c"; 681 655 }; 682 656 657 + spi@3270000 { 658 + compatible = "nvidia,tegra234-qspi"; 659 + reg = <0x3270000 0x1000>; 660 + interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>; 661 + #address-cells = <1>; 662 + #size-cells = <0>; 663 + clocks = <&bpmp TEGRA234_CLK_QSPI0_2X_PM>, 664 + <&bpmp TEGRA234_CLK_QSPI0_PM>; 665 + clock-names = "qspi", "qspi_out"; 666 + resets = <&bpmp TEGRA234_RESET_QSPI0>; 667 + reset-names = "qspi"; 668 + status = "disabled"; 669 + }; 670 + 683 671 pwm1: pwm@3280000 { 684 672 compatible = "nvidia,tegra194-pwm", 685 673 "nvidia,tegra186-pwm"; ··· 704 664 reset-names = "pwm"; 705 665 status = "disabled"; 706 666 #pwm-cells = <2>; 667 + }; 668 + 669 + spi@3300000 { 670 + compatible = "nvidia,tegra234-qspi"; 671 + reg = <0x3300000 0x1000>; 672 + interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>; 673 + #address-cells = <1>; 674 + #size-cells = <0>; 675 + clocks = <&bpmp TEGRA234_CLK_QSPI1_2X_PM>, 676 + <&bpmp TEGRA234_CLK_QSPI1_PM>; 677 + clock-names = "qspi", "qspi_out"; 678 + resets = <&bpmp TEGRA234_RESET_QSPI1>; 679 + reset-names = "qspi"; 680 + status = "disabled"; 707 681 }; 708 682 709 683 mmc@3460000 { ··· 1310 1256 nvidia,memory-controller = <&mc>; 1311 1257 status = "okay"; 1312 1258 }; 1259 + }; 1260 + 1261 + ccplex@e000000 { 1262 + compatible = "nvidia,tegra234-ccplex-cluster"; 1263 + reg = <0x0 0x0e000000 0x0 0x5ffff>; 1264 + nvidia,bpmp = <&bpmp>; 1265 + status = "okay"; 1313 1266 }; 1314 1267 1315 1268 sram@40000000 {
+8
include/dt-bindings/clock/tegra234-clock.h
··· 140 140 #define TEGRA234_CLK_PEX2_C9_CORE 173U 141 141 /** @brief output of gate CLK_ENB_PEX2_CORE_10 */ 142 142 #define TEGRA234_CLK_PEX2_C10_CORE 187U 143 + /** @brief CLK_RST_CONTROLLER_CLK_SOURCE_QSPI0 switch divider output */ 144 + #define TEGRA234_CLK_QSPI0_2X_PM 192U 145 + /** @brief CLK_RST_CONTROLLER_CLK_SOURCE_QSPI1 switch divider output */ 146 + #define TEGRA234_CLK_QSPI1_2X_PM 193U 147 + /** @brief output of the divider QSPI_CLK_DIV2_SEL in CLK_RST_CONTROLLER_CLK_SOURCE_QSPI0 */ 148 + #define TEGRA234_CLK_QSPI0_PM 194U 149 + /** @brief output of the divider QSPI_CLK_DIV2_SEL in CLK_RST_CONTROLLER_CLK_SOURCE_QSPI1 */ 150 + #define TEGRA234_CLK_QSPI1_PM 195U 143 151 /** @brief CLK_RST_CONTROLLER_CLK_SOURCE_SDMMC_LEGACY_TM switch divider output */ 144 152 #define TEGRA234_CLK_SDMMC_LEGACY_TM 219U 145 153 /** @brief output of gate CLK_ENB_PEX0_CORE_0 */
+2
include/dt-bindings/reset/tegra234-reset.h
··· 40 40 #define TEGRA234_RESET_PWM6 73U 41 41 #define TEGRA234_RESET_PWM7 74U 42 42 #define TEGRA234_RESET_PWM8 75U 43 + #define TEGRA234_RESET_QSPI0 76U 44 + #define TEGRA234_RESET_QSPI1 77U 43 45 #define TEGRA234_RESET_SDMMC4 85U 44 46 #define TEGRA234_RESET_UARTA 100U 45 47 #define TEGRA234_RESET_PEX0_CORE_0 116U