18bab661aSEmmanuel Vadot// SPDX-License-Identifier: BSD-3-Clause 28bab661aSEmmanuel Vadot/* 38bab661aSEmmanuel Vadot * Copyright (c) 2022, Linaro Limited 48bab661aSEmmanuel Vadot */ 58bab661aSEmmanuel Vadot 68bab661aSEmmanuel Vadot#include "msm8996.dtsi" 78bab661aSEmmanuel Vadot 88bab661aSEmmanuel Vadot/ { 98bab661aSEmmanuel Vadot /delete-node/ opp-table-cluster0; 108bab661aSEmmanuel Vadot /delete-node/ opp-table-cluster1; 118bab661aSEmmanuel Vadot 128bab661aSEmmanuel Vadot /* 138bab661aSEmmanuel Vadot * On MSM8996 Pro the cpufreq driver shifts speed bins into the high 148bab661aSEmmanuel Vadot * nibble of supported hw, so speed bin 0 becomes 0x10, speed bin 1 158bab661aSEmmanuel Vadot * becomes 0x20, speed 2 becomes 0x40. 168bab661aSEmmanuel Vadot */ 178bab661aSEmmanuel Vadot 188bab661aSEmmanuel Vadot cluster0_opp: opp-table-cluster0 { 198bab661aSEmmanuel Vadot compatible = "operating-points-v2-kryo-cpu"; 208bab661aSEmmanuel Vadot nvmem-cells = <&speedbin_efuse>; 218bab661aSEmmanuel Vadot opp-shared; 228bab661aSEmmanuel Vadot 238bab661aSEmmanuel Vadot opp-307200000 { 248bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <307200000>; 258bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 268bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 27*f126890aSEmmanuel Vadot opp-peak-kBps = <192000>; 288bab661aSEmmanuel Vadot }; 298bab661aSEmmanuel Vadot opp-384000000 { 308bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <384000000>; 318bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 328bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 33*f126890aSEmmanuel Vadot opp-peak-kBps = <192000>; 348bab661aSEmmanuel Vadot }; 358bab661aSEmmanuel Vadot opp-460800000 { 368bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <460800000>; 378bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 388bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 39*f126890aSEmmanuel Vadot opp-peak-kBps = <192000>; 408bab661aSEmmanuel Vadot }; 418bab661aSEmmanuel Vadot opp-537600000 { 428bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <537600000>; 438bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 448bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 45*f126890aSEmmanuel Vadot opp-peak-kBps = <192000>; 468bab661aSEmmanuel Vadot }; 478bab661aSEmmanuel Vadot opp-614400000 { 488bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <614400000>; 498bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 508bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 51*f126890aSEmmanuel Vadot opp-peak-kBps = <192000>; 528bab661aSEmmanuel Vadot }; 538bab661aSEmmanuel Vadot opp-691200000 { 548bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <691200000>; 558bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 568bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 57*f126890aSEmmanuel Vadot opp-peak-kBps = <307200>; 588bab661aSEmmanuel Vadot }; 598bab661aSEmmanuel Vadot opp-768000000 { 608bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <768000000>; 618bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 628bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 63*f126890aSEmmanuel Vadot opp-peak-kBps = <307200>; 648bab661aSEmmanuel Vadot }; 658bab661aSEmmanuel Vadot opp-844800000 { 668bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <844800000>; 678bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 688bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 69*f126890aSEmmanuel Vadot opp-peak-kBps = <384000>; 708bab661aSEmmanuel Vadot }; 718bab661aSEmmanuel Vadot opp-902400000 { 728bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <902400000>; 738bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 748bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 75*f126890aSEmmanuel Vadot opp-peak-kBps = <441600>; 768bab661aSEmmanuel Vadot }; 778bab661aSEmmanuel Vadot opp-979200000 { 788bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <979200000>; 798bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 808bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 81*f126890aSEmmanuel Vadot opp-peak-kBps = <537600>; 828bab661aSEmmanuel Vadot }; 838bab661aSEmmanuel Vadot opp-1056000000 { 848bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <1056000000>; 858bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 868bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 87*f126890aSEmmanuel Vadot opp-peak-kBps = <614400>; 888bab661aSEmmanuel Vadot }; 898bab661aSEmmanuel Vadot opp-1132800000 { 908bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <1132800000>; 918bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 928bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 93*f126890aSEmmanuel Vadot opp-peak-kBps = <691200>; 948bab661aSEmmanuel Vadot }; 958bab661aSEmmanuel Vadot opp-1209600000 { 968bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <1209600000>; 978bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 988bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 99*f126890aSEmmanuel Vadot opp-peak-kBps = <768000>; 1008bab661aSEmmanuel Vadot }; 1018bab661aSEmmanuel Vadot opp-1286400000 { 1028bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <1286400000>; 1038bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 1048bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 105*f126890aSEmmanuel Vadot opp-peak-kBps = <844800>; 1068bab661aSEmmanuel Vadot }; 1078bab661aSEmmanuel Vadot opp-1363200000 { 1088bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <1363200000>; 1098bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 1108bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 111*f126890aSEmmanuel Vadot opp-peak-kBps = <902400>; 1128bab661aSEmmanuel Vadot }; 1138bab661aSEmmanuel Vadot opp-1440000000 { 1148bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <1440000000>; 1158bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 1168bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 117*f126890aSEmmanuel Vadot opp-peak-kBps = <979200>; 1188bab661aSEmmanuel Vadot }; 1198bab661aSEmmanuel Vadot opp-1516800000 { 1208bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <1516800000>; 1218bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 1228bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 123*f126890aSEmmanuel Vadot opp-peak-kBps = <1132800>; 1248bab661aSEmmanuel Vadot }; 1258bab661aSEmmanuel Vadot opp-1593600000 { 1268bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <1593600000>; 1278bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 1288bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 129*f126890aSEmmanuel Vadot opp-peak-kBps = <1190400>; 1308bab661aSEmmanuel Vadot }; 1318bab661aSEmmanuel Vadot opp-1996800000 { 1328bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <1996800000>; 1338bab661aSEmmanuel Vadot opp-supported-hw = <0x20>; 1348bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 135*f126890aSEmmanuel Vadot opp-peak-kBps = <1516800>; 1368bab661aSEmmanuel Vadot }; 1378bab661aSEmmanuel Vadot opp-2188800000 { 1388bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <2188800000>; 1398bab661aSEmmanuel Vadot opp-supported-hw = <0x10>; 1408bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 141*f126890aSEmmanuel Vadot opp-peak-kBps = <1593600>; 1428bab661aSEmmanuel Vadot }; 1438bab661aSEmmanuel Vadot }; 1448bab661aSEmmanuel Vadot 1458bab661aSEmmanuel Vadot cluster1_opp: opp-table-cluster1 { 1468bab661aSEmmanuel Vadot compatible = "operating-points-v2-kryo-cpu"; 1478bab661aSEmmanuel Vadot nvmem-cells = <&speedbin_efuse>; 1488bab661aSEmmanuel Vadot opp-shared; 1498bab661aSEmmanuel Vadot 1508bab661aSEmmanuel Vadot opp-307200000 { 1518bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <307200000>; 1528bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 1538bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 154*f126890aSEmmanuel Vadot opp-peak-kBps = <192000>; 1558bab661aSEmmanuel Vadot }; 1568bab661aSEmmanuel Vadot opp-384000000 { 1578bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <384000000>; 1588bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 1598bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 160*f126890aSEmmanuel Vadot opp-peak-kBps = <192000>; 1618bab661aSEmmanuel Vadot }; 1628bab661aSEmmanuel Vadot opp-460800000 { 1638bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <460800000>; 1648bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 1658bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 166*f126890aSEmmanuel Vadot opp-peak-kBps = <192000>; 1678bab661aSEmmanuel Vadot }; 1688bab661aSEmmanuel Vadot opp-537600000 { 1698bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <537600000>; 1708bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 1718bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 172*f126890aSEmmanuel Vadot opp-peak-kBps = <192000>; 1738bab661aSEmmanuel Vadot }; 1748bab661aSEmmanuel Vadot opp-614400000 { 1758bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <614400000>; 1768bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 1778bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 178*f126890aSEmmanuel Vadot opp-peak-kBps = <192000>; 1798bab661aSEmmanuel Vadot }; 1808bab661aSEmmanuel Vadot opp-691200000 { 1818bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <691200000>; 1828bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 1838bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 184*f126890aSEmmanuel Vadot opp-peak-kBps = <307200>; 1858bab661aSEmmanuel Vadot }; 1868bab661aSEmmanuel Vadot opp-748800000 { 1878bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <748800000>; 1888bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 1898bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 190*f126890aSEmmanuel Vadot opp-peak-kBps = <307200>; 1918bab661aSEmmanuel Vadot }; 1928bab661aSEmmanuel Vadot opp-825600000 { 1938bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <825600000>; 1948bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 1958bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 196*f126890aSEmmanuel Vadot opp-peak-kBps = <384000>; 1978bab661aSEmmanuel Vadot }; 1988bab661aSEmmanuel Vadot opp-902400000 { 1998bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <902400000>; 2008bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 2018bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 202*f126890aSEmmanuel Vadot opp-peak-kBps = <441600>; 2038bab661aSEmmanuel Vadot }; 2048bab661aSEmmanuel Vadot opp-979200000 { 2058bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <979200000>; 2068bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 2078bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 208*f126890aSEmmanuel Vadot opp-peak-kBps = <441600>; 2098bab661aSEmmanuel Vadot }; 2108bab661aSEmmanuel Vadot opp-1056000000 { 2118bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <1056000000>; 2128bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 2138bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 214*f126890aSEmmanuel Vadot opp-peak-kBps = <537600>; 2158bab661aSEmmanuel Vadot }; 2168bab661aSEmmanuel Vadot opp-1132800000 { 2178bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <1132800000>; 2188bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 2198bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 220*f126890aSEmmanuel Vadot opp-peak-kBps = <614400>; 2218bab661aSEmmanuel Vadot }; 2228bab661aSEmmanuel Vadot opp-1209600000 { 2238bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <1209600000>; 2248bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 2258bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 226*f126890aSEmmanuel Vadot opp-peak-kBps = <691200>; 2278bab661aSEmmanuel Vadot }; 2288bab661aSEmmanuel Vadot opp-1286400000 { 2298bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <1286400000>; 2308bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 2318bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 232*f126890aSEmmanuel Vadot opp-peak-kBps = <768000>; 2338bab661aSEmmanuel Vadot }; 2348bab661aSEmmanuel Vadot opp-1363200000 { 2358bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <1363200000>; 2368bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 2378bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 238*f126890aSEmmanuel Vadot opp-peak-kBps = <844800>; 2398bab661aSEmmanuel Vadot }; 2408bab661aSEmmanuel Vadot opp-1440000000 { 2418bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <1440000000>; 2428bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 2438bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 244*f126890aSEmmanuel Vadot opp-peak-kBps = <902400>; 2458bab661aSEmmanuel Vadot }; 2468bab661aSEmmanuel Vadot opp-1516800000 { 2478bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <1516800000>; 2488bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 2498bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 250*f126890aSEmmanuel Vadot opp-peak-kBps = <979200>; 2518bab661aSEmmanuel Vadot }; 2528bab661aSEmmanuel Vadot opp-1593600000 { 2538bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <1593600000>; 2548bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 2558bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 256*f126890aSEmmanuel Vadot opp-peak-kBps = <1056000>; 2578bab661aSEmmanuel Vadot }; 2588bab661aSEmmanuel Vadot opp-1670400000 { 2598bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <1670400000>; 2608bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 2618bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 262*f126890aSEmmanuel Vadot opp-peak-kBps = <1132800>; 2638bab661aSEmmanuel Vadot }; 2648bab661aSEmmanuel Vadot opp-1747200000 { 2658bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <1747200000>; 2668bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 2678bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 268*f126890aSEmmanuel Vadot opp-peak-kBps = <1190400>; 2698bab661aSEmmanuel Vadot }; 2708bab661aSEmmanuel Vadot opp-1824000000 { 2718bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <1824000000>; 2728bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 2738bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 274*f126890aSEmmanuel Vadot opp-peak-kBps = <1286400>; 2758bab661aSEmmanuel Vadot }; 2768bab661aSEmmanuel Vadot opp-1900800000 { 2778bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <1900800000>; 2788bab661aSEmmanuel Vadot opp-supported-hw = <0x70>; 2798bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 280*f126890aSEmmanuel Vadot opp-peak-kBps = <1363200>; 2818bab661aSEmmanuel Vadot }; 2828bab661aSEmmanuel Vadot opp-1977600000 { 2838bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <1977600000>; 2848bab661aSEmmanuel Vadot opp-supported-hw = <0x30>; 2858bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 286*f126890aSEmmanuel Vadot opp-peak-kBps = <1440000>; 2878bab661aSEmmanuel Vadot }; 2888bab661aSEmmanuel Vadot opp-2054400000 { 2898bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <2054400000>; 2908bab661aSEmmanuel Vadot opp-supported-hw = <0x30>; 2918bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 292*f126890aSEmmanuel Vadot opp-peak-kBps = <1516800>; 2938bab661aSEmmanuel Vadot }; 2948bab661aSEmmanuel Vadot opp-2150400000 { 2958bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <2150400000>; 2968bab661aSEmmanuel Vadot opp-supported-hw = <0x30>; 2978bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 298*f126890aSEmmanuel Vadot opp-peak-kBps = <1593600>; 2998bab661aSEmmanuel Vadot }; 3008bab661aSEmmanuel Vadot opp-2246400000 { 3018bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <2246400000>; 3028bab661aSEmmanuel Vadot opp-supported-hw = <0x10>; 3038bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 304*f126890aSEmmanuel Vadot opp-peak-kBps = <1593600>; 3058bab661aSEmmanuel Vadot }; 3068bab661aSEmmanuel Vadot opp-2342400000 { 3078bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <2342400000>; 3088bab661aSEmmanuel Vadot opp-supported-hw = <0x10>; 3098bab661aSEmmanuel Vadot clock-latency-ns = <200000>; 310*f126890aSEmmanuel Vadot opp-peak-kBps = <1593600>; 3118bab661aSEmmanuel Vadot }; 3128bab661aSEmmanuel Vadot }; 3138bab661aSEmmanuel Vadot}; 3148bab661aSEmmanuel Vadot 3158bab661aSEmmanuel Vadot&gpu_opp_table { 3168bab661aSEmmanuel Vadot /* 3178bab661aSEmmanuel Vadot * Unlike CPU opp tables, the GPU driver does not shift speed bins. 3188bab661aSEmmanuel Vadot * 3198bab661aSEmmanuel Vadot * 652.8 Mhz is available on speed bin 0 only. 3208bab661aSEmmanuel Vadot * 624 Mhz and 560 Mhz are available on speed bins 0 and 1. 3218bab661aSEmmanuel Vadot * All the rest are available on all bins of the hardware (like on 3228bab661aSEmmanuel Vadot * plain 8996). 3238bab661aSEmmanuel Vadot */ 3248bab661aSEmmanuel Vadot 3258bab661aSEmmanuel Vadot opp-652800000 { 3268bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <652800000>; 3278bab661aSEmmanuel Vadot opp-supported-hw = <0x01>; 3288bab661aSEmmanuel Vadot }; 3298bab661aSEmmanuel Vadot opp-624000000 { 3308bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <624000000>; 3318bab661aSEmmanuel Vadot opp-supported-hw = <0x03>; 3328bab661aSEmmanuel Vadot }; 3338bab661aSEmmanuel Vadot opp-560000000 { 3348bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <560000000>; 3358bab661aSEmmanuel Vadot opp-supported-hw = <0x03>; 3368bab661aSEmmanuel Vadot }; 3378bab661aSEmmanuel Vadot /* The rest is inherited from msm8996 */ 3388bab661aSEmmanuel Vadot}; 339*f126890aSEmmanuel Vadot 340*f126890aSEmmanuel Vadot&cbf { 341*f126890aSEmmanuel Vadot compatible = "qcom,msm8996pro-cbf"; 342*f126890aSEmmanuel Vadot}; 343