18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Topro TP6800/6810 webcam driver. 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (C) 2011 Jean-François Moine (http://moinejf.free.fr) 68c2ecf20Sopenharmony_ci * Copyright (C) 2009 Anders Blomdell (anders.blomdell@control.lth.se) 78c2ecf20Sopenharmony_ci * Copyright (C) 2008 Thomas Champagne (lafeuil@gmail.com) 88c2ecf20Sopenharmony_ci */ 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_ci#include "gspca.h" 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ciMODULE_DESCRIPTION("Topro TP6800/6810 gspca webcam driver"); 158c2ecf20Sopenharmony_ciMODULE_AUTHOR("Jean-Francois Moine <http://moinejf.free.fr>, Anders Blomdell <anders.blomdell@control.lth.se>"); 168c2ecf20Sopenharmony_ciMODULE_LICENSE("GPL"); 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_cistatic int force_sensor = -1; 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ci/* JPEG header */ 218c2ecf20Sopenharmony_cistatic const u8 jpeg_head[] = { 228c2ecf20Sopenharmony_ci 0xff, 0xd8, /* jpeg */ 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ci/* quantization table quality 50% */ 258c2ecf20Sopenharmony_ci 0xff, 0xdb, 0x00, 0x84, /* DQT */ 268c2ecf20Sopenharmony_ci0, 278c2ecf20Sopenharmony_ci#define JPEG_QT0_OFFSET 7 288c2ecf20Sopenharmony_ci 0x10, 0x0b, 0x0c, 0x0e, 0x0c, 0x0a, 0x10, 0x0e, 298c2ecf20Sopenharmony_ci 0x0d, 0x0e, 0x12, 0x11, 0x10, 0x13, 0x18, 0x28, 308c2ecf20Sopenharmony_ci 0x1a, 0x18, 0x16, 0x16, 0x18, 0x31, 0x23, 0x25, 318c2ecf20Sopenharmony_ci 0x1d, 0x28, 0x3a, 0x33, 0x3d, 0x3c, 0x39, 0x33, 328c2ecf20Sopenharmony_ci 0x38, 0x37, 0x40, 0x48, 0x5c, 0x4e, 0x40, 0x44, 338c2ecf20Sopenharmony_ci 0x57, 0x45, 0x37, 0x38, 0x50, 0x6d, 0x51, 0x57, 348c2ecf20Sopenharmony_ci 0x5f, 0x62, 0x67, 0x68, 0x67, 0x3e, 0x4d, 0x71, 358c2ecf20Sopenharmony_ci 0x79, 0x70, 0x64, 0x78, 0x5c, 0x65, 0x67, 0x63, 368c2ecf20Sopenharmony_ci1, 378c2ecf20Sopenharmony_ci#define JPEG_QT1_OFFSET 72 388c2ecf20Sopenharmony_ci 0x11, 0x12, 0x12, 0x18, 0x15, 0x18, 0x2f, 0x1a, 398c2ecf20Sopenharmony_ci 0x1a, 0x2f, 0x63, 0x42, 0x38, 0x42, 0x63, 0x63, 408c2ecf20Sopenharmony_ci 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 418c2ecf20Sopenharmony_ci 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 428c2ecf20Sopenharmony_ci 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 438c2ecf20Sopenharmony_ci 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 448c2ecf20Sopenharmony_ci 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 458c2ecf20Sopenharmony_ci 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_ci /* Define Huffman table (thanks to Thomas Kaiser) */ 488c2ecf20Sopenharmony_ci 0xff, 0xc4, 0x01, 0x5e, 498c2ecf20Sopenharmony_ci 0x00, 0x00, 0x02, 0x03, 508c2ecf20Sopenharmony_ci 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 518c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 528c2ecf20Sopenharmony_ci 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10, 538c2ecf20Sopenharmony_ci 0x00, 0x02, 0x01, 0x02, 0x04, 0x04, 0x03, 0x04, 548c2ecf20Sopenharmony_ci 0x07, 0x05, 0x04, 0x06, 0x01, 0x00, 0x00, 0x57, 558c2ecf20Sopenharmony_ci 0x01, 0x02, 0x03, 0x00, 0x11, 0x04, 0x12, 0x21, 568c2ecf20Sopenharmony_ci 0x31, 0x13, 0x41, 0x51, 0x61, 0x05, 0x22, 0x32, 578c2ecf20Sopenharmony_ci 0x14, 0x71, 0x81, 0x91, 0x15, 0x23, 0x42, 0x52, 588c2ecf20Sopenharmony_ci 0x62, 0xa1, 0xb1, 0x06, 0x33, 0x72, 0xc1, 0xd1, 598c2ecf20Sopenharmony_ci 0x24, 0x43, 0x53, 0x82, 0x16, 0x34, 0x92, 0xa2, 608c2ecf20Sopenharmony_ci 0xe1, 0xf1, 0xf0, 0x07, 0x08, 0x17, 0x18, 0x25, 618c2ecf20Sopenharmony_ci 0x26, 0x27, 0x28, 0x35, 0x36, 0x37, 0x38, 0x44, 628c2ecf20Sopenharmony_ci 0x45, 0x46, 0x47, 0x48, 0x54, 0x55, 0x56, 0x57, 638c2ecf20Sopenharmony_ci 0x58, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x73, 648c2ecf20Sopenharmony_ci 0x74, 0x75, 0x76, 0x77, 0x78, 0x83, 0x84, 0x85, 658c2ecf20Sopenharmony_ci 0x86, 0x87, 0x88, 0x93, 0x94, 0x95, 0x96, 0x97, 668c2ecf20Sopenharmony_ci 0x98, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xb2, 678c2ecf20Sopenharmony_ci 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xc2, 0xc3, 688c2ecf20Sopenharmony_ci 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xd2, 0xd3, 0xd4, 698c2ecf20Sopenharmony_ci 0xd5, 0xd6, 0xd7, 0xd8, 0xe2, 0xe3, 0xe4, 0xe5, 708c2ecf20Sopenharmony_ci 0xe6, 0xe7, 0xe8, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 718c2ecf20Sopenharmony_ci 0xf7, 0xf8, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 728c2ecf20Sopenharmony_ci 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 738c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 748c2ecf20Sopenharmony_ci 0x05, 0x06, 0x07, 0x08, 0x09, 0x11, 0x00, 0x02, 758c2ecf20Sopenharmony_ci 0x01, 0x02, 0x04, 0x04, 0x03, 0x04, 0x07, 0x05, 768c2ecf20Sopenharmony_ci 0x04, 0x06, 0x01, 0x00, 0x00, 0x57, 0x00, 0x01, 778c2ecf20Sopenharmony_ci 0x11, 0x02, 0x21, 0x03, 0x12, 0x31, 0x41, 0x13, 788c2ecf20Sopenharmony_ci 0x22, 0x51, 0x61, 0x04, 0x32, 0x71, 0x05, 0x14, 798c2ecf20Sopenharmony_ci 0x23, 0x42, 0x33, 0x52, 0x81, 0x91, 0xa1, 0xb1, 808c2ecf20Sopenharmony_ci 0xf0, 0x06, 0x15, 0xc1, 0xd1, 0xe1, 0x24, 0x43, 818c2ecf20Sopenharmony_ci 0x62, 0xf1, 0x16, 0x25, 0x34, 0x53, 0x72, 0x82, 828c2ecf20Sopenharmony_ci 0x92, 0x07, 0x08, 0x17, 0x18, 0x26, 0x27, 0x28, 838c2ecf20Sopenharmony_ci 0x35, 0x36, 0x37, 0x38, 0x44, 0x45, 0x46, 0x47, 848c2ecf20Sopenharmony_ci 0x48, 0x54, 0x55, 0x56, 0x57, 0x58, 0x63, 0x64, 858c2ecf20Sopenharmony_ci 0x65, 0x66, 0x67, 0x68, 0x73, 0x74, 0x75, 0x76, 868c2ecf20Sopenharmony_ci 0x77, 0x78, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 878c2ecf20Sopenharmony_ci 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0xa2, 0xa3, 888c2ecf20Sopenharmony_ci 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xb2, 0xb3, 0xb4, 898c2ecf20Sopenharmony_ci 0xb5, 0xb6, 0xb7, 0xb8, 0xc2, 0xc3, 0xc4, 0xc5, 908c2ecf20Sopenharmony_ci 0xc6, 0xc7, 0xc8, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 918c2ecf20Sopenharmony_ci 0xd7, 0xd8, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 928c2ecf20Sopenharmony_ci 0xe8, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 938c2ecf20Sopenharmony_ci 0xff, 0xc0, 0x00, 0x11, /* SOF0 (start of frame 0 */ 948c2ecf20Sopenharmony_ci 0x08, /* data precision */ 958c2ecf20Sopenharmony_ci#define JPEG_HEIGHT_OFFSET 493 968c2ecf20Sopenharmony_ci 0x01, 0xe0, /* height */ 978c2ecf20Sopenharmony_ci 0x02, 0x80, /* width */ 988c2ecf20Sopenharmony_ci 0x03, /* component number */ 998c2ecf20Sopenharmony_ci 0x01, 1008c2ecf20Sopenharmony_ci 0x21, /* samples Y = jpeg 422 */ 1018c2ecf20Sopenharmony_ci 0x00, /* quant Y */ 1028c2ecf20Sopenharmony_ci 0x02, 0x11, 0x01, /* samples CbCr - quant CbCr */ 1038c2ecf20Sopenharmony_ci 0x03, 0x11, 0x01, 1048c2ecf20Sopenharmony_ci 1058c2ecf20Sopenharmony_ci 0xff, 0xda, 0x00, 0x0c, /* SOS (start of scan) */ 1068c2ecf20Sopenharmony_ci 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, 0x00, 0x3f, 0x00 1078c2ecf20Sopenharmony_ci#define JPEG_HDR_SZ 521 1088c2ecf20Sopenharmony_ci}; 1098c2ecf20Sopenharmony_ci 1108c2ecf20Sopenharmony_cistruct sd { 1118c2ecf20Sopenharmony_ci struct gspca_dev gspca_dev; /* !! must be the first item */ 1128c2ecf20Sopenharmony_ci struct v4l2_ctrl *jpegqual; 1138c2ecf20Sopenharmony_ci struct v4l2_ctrl *sharpness; 1148c2ecf20Sopenharmony_ci struct v4l2_ctrl *gamma; 1158c2ecf20Sopenharmony_ci struct v4l2_ctrl *blue; 1168c2ecf20Sopenharmony_ci struct v4l2_ctrl *red; 1178c2ecf20Sopenharmony_ci 1188c2ecf20Sopenharmony_ci u8 framerate; 1198c2ecf20Sopenharmony_ci u8 quality; /* webcam current JPEG quality (0..16) */ 1208c2ecf20Sopenharmony_ci s8 ag_cnt; /* autogain / start counter for tp6810 */ 1218c2ecf20Sopenharmony_ci#define AG_CNT_START 13 /* check gain every N frames */ 1228c2ecf20Sopenharmony_ci 1238c2ecf20Sopenharmony_ci u8 bridge; 1248c2ecf20Sopenharmony_ci u8 sensor; 1258c2ecf20Sopenharmony_ci 1268c2ecf20Sopenharmony_ci u8 jpeg_hdr[JPEG_HDR_SZ]; 1278c2ecf20Sopenharmony_ci}; 1288c2ecf20Sopenharmony_ci 1298c2ecf20Sopenharmony_cienum bridges { 1308c2ecf20Sopenharmony_ci BRIDGE_TP6800, 1318c2ecf20Sopenharmony_ci BRIDGE_TP6810, 1328c2ecf20Sopenharmony_ci}; 1338c2ecf20Sopenharmony_ci 1348c2ecf20Sopenharmony_cienum sensors { 1358c2ecf20Sopenharmony_ci SENSOR_CX0342, 1368c2ecf20Sopenharmony_ci SENSOR_SOI763A, /* ~= ov7630 / ov7648 */ 1378c2ecf20Sopenharmony_ci NSENSORS 1388c2ecf20Sopenharmony_ci}; 1398c2ecf20Sopenharmony_ci 1408c2ecf20Sopenharmony_cistatic const struct v4l2_pix_format vga_mode[] = { 1418c2ecf20Sopenharmony_ci {320, 240, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE, 1428c2ecf20Sopenharmony_ci .bytesperline = 320, 1438c2ecf20Sopenharmony_ci .sizeimage = 320 * 240 * 4 / 8 + 590, 1448c2ecf20Sopenharmony_ci .colorspace = V4L2_COLORSPACE_JPEG}, 1458c2ecf20Sopenharmony_ci {640, 480, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE, 1468c2ecf20Sopenharmony_ci .bytesperline = 640, 1478c2ecf20Sopenharmony_ci .sizeimage = 640 * 480 * 3 / 8 + 590, 1488c2ecf20Sopenharmony_ci .colorspace = V4L2_COLORSPACE_JPEG} 1498c2ecf20Sopenharmony_ci}; 1508c2ecf20Sopenharmony_ci 1518c2ecf20Sopenharmony_ci/* 1528c2ecf20Sopenharmony_ci * JPEG quality 1538c2ecf20Sopenharmony_ci * index: webcam compression 1548c2ecf20Sopenharmony_ci * value: JPEG quality in % 1558c2ecf20Sopenharmony_ci */ 1568c2ecf20Sopenharmony_cistatic const u8 jpeg_q[17] = { 1578c2ecf20Sopenharmony_ci 88, 77, 67, 57, 55, 55, 45, 45, 36, 36, 30, 30, 26, 26, 22, 22, 94 1588c2ecf20Sopenharmony_ci}; 1598c2ecf20Sopenharmony_ci 1608c2ecf20Sopenharmony_ci#define BULK_OUT_SIZE 0x20 1618c2ecf20Sopenharmony_ci#if BULK_OUT_SIZE > USB_BUF_SZ 1628c2ecf20Sopenharmony_ci#error "USB buffer too small" 1638c2ecf20Sopenharmony_ci#endif 1648c2ecf20Sopenharmony_ci 1658c2ecf20Sopenharmony_ci#define DEFAULT_FRAME_RATE 30 1668c2ecf20Sopenharmony_ci 1678c2ecf20Sopenharmony_cistatic const u8 rates[] = {30, 20, 15, 10, 7, 5}; 1688c2ecf20Sopenharmony_cistatic const struct framerates framerates[] = { 1698c2ecf20Sopenharmony_ci { 1708c2ecf20Sopenharmony_ci .rates = rates, 1718c2ecf20Sopenharmony_ci .nrates = ARRAY_SIZE(rates) 1728c2ecf20Sopenharmony_ci }, 1738c2ecf20Sopenharmony_ci { 1748c2ecf20Sopenharmony_ci .rates = rates, 1758c2ecf20Sopenharmony_ci .nrates = ARRAY_SIZE(rates) 1768c2ecf20Sopenharmony_ci } 1778c2ecf20Sopenharmony_ci}; 1788c2ecf20Sopenharmony_cistatic const u8 rates_6810[] = {30, 15, 10, 7, 5}; 1798c2ecf20Sopenharmony_cistatic const struct framerates framerates_6810[] = { 1808c2ecf20Sopenharmony_ci { 1818c2ecf20Sopenharmony_ci .rates = rates_6810, 1828c2ecf20Sopenharmony_ci .nrates = ARRAY_SIZE(rates_6810) 1838c2ecf20Sopenharmony_ci }, 1848c2ecf20Sopenharmony_ci { 1858c2ecf20Sopenharmony_ci .rates = rates_6810, 1868c2ecf20Sopenharmony_ci .nrates = ARRAY_SIZE(rates_6810) 1878c2ecf20Sopenharmony_ci } 1888c2ecf20Sopenharmony_ci}; 1898c2ecf20Sopenharmony_ci 1908c2ecf20Sopenharmony_ci/* 1918c2ecf20Sopenharmony_ci * webcam quality in % 1928c2ecf20Sopenharmony_ci * the last value is the ultra fine quality 1938c2ecf20Sopenharmony_ci */ 1948c2ecf20Sopenharmony_ci 1958c2ecf20Sopenharmony_ci/* TP6800 register offsets */ 1968c2ecf20Sopenharmony_ci#define TP6800_R10_SIF_TYPE 0x10 1978c2ecf20Sopenharmony_ci#define TP6800_R11_SIF_CONTROL 0x11 1988c2ecf20Sopenharmony_ci#define TP6800_R12_SIF_ADDR_S 0x12 1998c2ecf20Sopenharmony_ci#define TP6800_R13_SIF_TX_DATA 0x13 2008c2ecf20Sopenharmony_ci#define TP6800_R14_SIF_RX_DATA 0x14 2018c2ecf20Sopenharmony_ci#define TP6800_R15_GPIO_PU 0x15 2028c2ecf20Sopenharmony_ci#define TP6800_R16_GPIO_PD 0x16 2038c2ecf20Sopenharmony_ci#define TP6800_R17_GPIO_IO 0x17 2048c2ecf20Sopenharmony_ci#define TP6800_R18_GPIO_DATA 0x18 2058c2ecf20Sopenharmony_ci#define TP6800_R19_SIF_ADDR_S2 0x19 2068c2ecf20Sopenharmony_ci#define TP6800_R1A_SIF_TX_DATA2 0x1a 2078c2ecf20Sopenharmony_ci#define TP6800_R1B_SIF_RX_DATA2 0x1b 2088c2ecf20Sopenharmony_ci#define TP6800_R21_ENDP_1_CTL 0x21 2098c2ecf20Sopenharmony_ci#define TP6800_R2F_TIMING_CFG 0x2f 2108c2ecf20Sopenharmony_ci#define TP6800_R30_SENSOR_CFG 0x30 2118c2ecf20Sopenharmony_ci#define TP6800_R31_PIXEL_START 0x31 2128c2ecf20Sopenharmony_ci#define TP6800_R32_PIXEL_END_L 0x32 2138c2ecf20Sopenharmony_ci#define TP6800_R33_PIXEL_END_H 0x33 2148c2ecf20Sopenharmony_ci#define TP6800_R34_LINE_START 0x34 2158c2ecf20Sopenharmony_ci#define TP6800_R35_LINE_END_L 0x35 2168c2ecf20Sopenharmony_ci#define TP6800_R36_LINE_END_H 0x36 2178c2ecf20Sopenharmony_ci#define TP6800_R37_FRONT_DARK_ST 0x37 2188c2ecf20Sopenharmony_ci#define TP6800_R38_FRONT_DARK_END 0x38 2198c2ecf20Sopenharmony_ci#define TP6800_R39_REAR_DARK_ST_L 0x39 2208c2ecf20Sopenharmony_ci#define TP6800_R3A_REAR_DARK_ST_H 0x3a 2218c2ecf20Sopenharmony_ci#define TP6800_R3B_REAR_DARK_END_L 0x3b 2228c2ecf20Sopenharmony_ci#define TP6800_R3C_REAR_DARK_END_H 0x3c 2238c2ecf20Sopenharmony_ci#define TP6800_R3D_HORIZ_DARK_LINE_L 0x3d 2248c2ecf20Sopenharmony_ci#define TP6800_R3E_HORIZ_DARK_LINE_H 0x3e 2258c2ecf20Sopenharmony_ci#define TP6800_R3F_FRAME_RATE 0x3f 2268c2ecf20Sopenharmony_ci#define TP6800_R50 0x50 2278c2ecf20Sopenharmony_ci#define TP6800_R51 0x51 2288c2ecf20Sopenharmony_ci#define TP6800_R52 0x52 2298c2ecf20Sopenharmony_ci#define TP6800_R53 0x53 2308c2ecf20Sopenharmony_ci#define TP6800_R54_DARK_CFG 0x54 2318c2ecf20Sopenharmony_ci#define TP6800_R55_GAMMA_R 0x55 2328c2ecf20Sopenharmony_ci#define TP6800_R56_GAMMA_G 0x56 2338c2ecf20Sopenharmony_ci#define TP6800_R57_GAMMA_B 0x57 2348c2ecf20Sopenharmony_ci#define TP6800_R5C_EDGE_THRLD 0x5c 2358c2ecf20Sopenharmony_ci#define TP6800_R5D_DEMOSAIC_CFG 0x5d 2368c2ecf20Sopenharmony_ci#define TP6800_R78_FORMAT 0x78 2378c2ecf20Sopenharmony_ci#define TP6800_R79_QUALITY 0x79 2388c2ecf20Sopenharmony_ci#define TP6800_R7A_BLK_THRLD 0x7a 2398c2ecf20Sopenharmony_ci 2408c2ecf20Sopenharmony_ci/* CX0342 register offsets */ 2418c2ecf20Sopenharmony_ci 2428c2ecf20Sopenharmony_ci#define CX0342_SENSOR_ID 0x00 2438c2ecf20Sopenharmony_ci#define CX0342_VERSION_NO 0x01 2448c2ecf20Sopenharmony_ci#define CX0342_ORG_X_L 0x02 2458c2ecf20Sopenharmony_ci#define CX0342_ORG_X_H 0x03 2468c2ecf20Sopenharmony_ci#define CX0342_ORG_Y_L 0x04 2478c2ecf20Sopenharmony_ci#define CX0342_ORG_Y_H 0x05 2488c2ecf20Sopenharmony_ci#define CX0342_STOP_X_L 0x06 2498c2ecf20Sopenharmony_ci#define CX0342_STOP_X_H 0x07 2508c2ecf20Sopenharmony_ci#define CX0342_STOP_Y_L 0x08 2518c2ecf20Sopenharmony_ci#define CX0342_STOP_Y_H 0x09 2528c2ecf20Sopenharmony_ci#define CX0342_FRAME_WIDTH_L 0x0a 2538c2ecf20Sopenharmony_ci#define CX0342_FRAME_WIDTH_H 0x0b 2548c2ecf20Sopenharmony_ci#define CX0342_FRAME_HEIGH_L 0x0c 2558c2ecf20Sopenharmony_ci#define CX0342_FRAME_HEIGH_H 0x0d 2568c2ecf20Sopenharmony_ci#define CX0342_EXPO_LINE_L 0x10 2578c2ecf20Sopenharmony_ci#define CX0342_EXPO_LINE_H 0x11 2588c2ecf20Sopenharmony_ci#define CX0342_EXPO_CLK_L 0x12 2598c2ecf20Sopenharmony_ci#define CX0342_EXPO_CLK_H 0x13 2608c2ecf20Sopenharmony_ci#define CX0342_RAW_GRGAIN_L 0x14 2618c2ecf20Sopenharmony_ci#define CX0342_RAW_GRGAIN_H 0x15 2628c2ecf20Sopenharmony_ci#define CX0342_RAW_GBGAIN_L 0x16 2638c2ecf20Sopenharmony_ci#define CX0342_RAW_GBGAIN_H 0x17 2648c2ecf20Sopenharmony_ci#define CX0342_RAW_RGAIN_L 0x18 2658c2ecf20Sopenharmony_ci#define CX0342_RAW_RGAIN_H 0x19 2668c2ecf20Sopenharmony_ci#define CX0342_RAW_BGAIN_L 0x1a 2678c2ecf20Sopenharmony_ci#define CX0342_RAW_BGAIN_H 0x1b 2688c2ecf20Sopenharmony_ci#define CX0342_GLOBAL_GAIN 0x1c 2698c2ecf20Sopenharmony_ci#define CX0342_SYS_CTRL_0 0x20 2708c2ecf20Sopenharmony_ci#define CX0342_SYS_CTRL_1 0x21 2718c2ecf20Sopenharmony_ci#define CX0342_SYS_CTRL_2 0x22 2728c2ecf20Sopenharmony_ci#define CX0342_BYPASS_MODE 0x23 2738c2ecf20Sopenharmony_ci#define CX0342_SYS_CTRL_3 0x24 2748c2ecf20Sopenharmony_ci#define CX0342_TIMING_EN 0x25 2758c2ecf20Sopenharmony_ci#define CX0342_OUTPUT_CTRL 0x26 2768c2ecf20Sopenharmony_ci#define CX0342_AUTO_ADC_CALIB 0x27 2778c2ecf20Sopenharmony_ci#define CX0342_SYS_CTRL_4 0x28 2788c2ecf20Sopenharmony_ci#define CX0342_ADCGN 0x30 2798c2ecf20Sopenharmony_ci#define CX0342_SLPCR 0x31 2808c2ecf20Sopenharmony_ci#define CX0342_SLPFN_LO 0x32 2818c2ecf20Sopenharmony_ci#define CX0342_ADC_CTL 0x33 2828c2ecf20Sopenharmony_ci#define CX0342_LVRST_BLBIAS 0x34 2838c2ecf20Sopenharmony_ci#define CX0342_VTHSEL 0x35 2848c2ecf20Sopenharmony_ci#define CX0342_RAMP_RIV 0x36 2858c2ecf20Sopenharmony_ci#define CX0342_LDOSEL 0x37 2868c2ecf20Sopenharmony_ci#define CX0342_CLOCK_GEN 0x40 2878c2ecf20Sopenharmony_ci#define CX0342_SOFT_RESET 0x41 2888c2ecf20Sopenharmony_ci#define CX0342_PLL 0x42 2898c2ecf20Sopenharmony_ci#define CX0342_DR_ENH_PULSE_OFFSET_L 0x43 2908c2ecf20Sopenharmony_ci#define CX0342_DR_ENH_PULSE_OFFSET_H 0x44 2918c2ecf20Sopenharmony_ci#define CX0342_DR_ENH_PULSE_POS_L 0x45 2928c2ecf20Sopenharmony_ci#define CX0342_DR_ENH_PULSE_POS_H 0x46 2938c2ecf20Sopenharmony_ci#define CX0342_DR_ENH_PULSE_WIDTH 0x47 2948c2ecf20Sopenharmony_ci#define CX0342_AS_CURRENT_CNT_L 0x48 2958c2ecf20Sopenharmony_ci#define CX0342_AS_CURRENT_CNT_H 0x49 2968c2ecf20Sopenharmony_ci#define CX0342_AS_PREVIOUS_CNT_L 0x4a 2978c2ecf20Sopenharmony_ci#define CX0342_AS_PREVIOUS_CNT_H 0x4b 2988c2ecf20Sopenharmony_ci#define CX0342_SPV_VALUE_L 0x4c 2998c2ecf20Sopenharmony_ci#define CX0342_SPV_VALUE_H 0x4d 3008c2ecf20Sopenharmony_ci#define CX0342_GPXLTHD_L 0x50 3018c2ecf20Sopenharmony_ci#define CX0342_GPXLTHD_H 0x51 3028c2ecf20Sopenharmony_ci#define CX0342_RBPXLTHD_L 0x52 3038c2ecf20Sopenharmony_ci#define CX0342_RBPXLTHD_H 0x53 3048c2ecf20Sopenharmony_ci#define CX0342_PLANETHD_L 0x54 3058c2ecf20Sopenharmony_ci#define CX0342_PLANETHD_H 0x55 3068c2ecf20Sopenharmony_ci#define CX0342_ROWDARK_TH 0x56 3078c2ecf20Sopenharmony_ci#define CX0342_ROWDARK_TOL 0x57 3088c2ecf20Sopenharmony_ci#define CX0342_RB_GAP_L 0x58 3098c2ecf20Sopenharmony_ci#define CX0342_RB_GAP_H 0x59 3108c2ecf20Sopenharmony_ci#define CX0342_G_GAP_L 0x5a 3118c2ecf20Sopenharmony_ci#define CX0342_G_GAP_H 0x5b 3128c2ecf20Sopenharmony_ci#define CX0342_AUTO_ROW_DARK 0x60 3138c2ecf20Sopenharmony_ci#define CX0342_MANUAL_DARK_VALUE 0x61 3148c2ecf20Sopenharmony_ci#define CX0342_GB_DARK_OFFSET 0x62 3158c2ecf20Sopenharmony_ci#define CX0342_GR_DARK_OFFSET 0x63 3168c2ecf20Sopenharmony_ci#define CX0342_RED_DARK_OFFSET 0x64 3178c2ecf20Sopenharmony_ci#define CX0342_BLUE_DARK_OFFSET 0x65 3188c2ecf20Sopenharmony_ci#define CX0342_DATA_SCALING_MULTI 0x66 3198c2ecf20Sopenharmony_ci#define CX0342_AUTOD_Q_FRAME 0x67 3208c2ecf20Sopenharmony_ci#define CX0342_AUTOD_ALLOW_VARI 0x68 3218c2ecf20Sopenharmony_ci#define CX0342_AUTO_DARK_VALUE_L 0x69 3228c2ecf20Sopenharmony_ci#define CX0342_AUTO_DARK_VALUE_H 0x6a 3238c2ecf20Sopenharmony_ci#define CX0342_IO_CTRL_0 0x70 3248c2ecf20Sopenharmony_ci#define CX0342_IO_CTRL_1 0x71 3258c2ecf20Sopenharmony_ci#define CX0342_IO_CTRL_2 0x72 3268c2ecf20Sopenharmony_ci#define CX0342_IDLE_CTRL 0x73 3278c2ecf20Sopenharmony_ci#define CX0342_TEST_MODE 0x74 3288c2ecf20Sopenharmony_ci#define CX0342_FRAME_FIX_DATA_TEST 0x75 3298c2ecf20Sopenharmony_ci#define CX0342_FRAME_CNT_TEST 0x76 3308c2ecf20Sopenharmony_ci#define CX0342_RST_OVERFLOW_L 0x80 3318c2ecf20Sopenharmony_ci#define CX0342_RST_OVERFLOW_H 0x81 3328c2ecf20Sopenharmony_ci#define CX0342_RST_UNDERFLOW_L 0x82 3338c2ecf20Sopenharmony_ci#define CX0342_RST_UNDERFLOW_H 0x83 3348c2ecf20Sopenharmony_ci#define CX0342_DATA_OVERFLOW_L 0x84 3358c2ecf20Sopenharmony_ci#define CX0342_DATA_OVERFLOW_H 0x85 3368c2ecf20Sopenharmony_ci#define CX0342_DATA_UNDERFLOW_L 0x86 3378c2ecf20Sopenharmony_ci#define CX0342_DATA_UNDERFLOW_H 0x87 3388c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_0_0_L_irst 0x90 3398c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_0_0_H_irst 0x91 3408c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_0_1_L_irst 0x92 3418c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_0_1_H_irst 0x93 3428c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_0_2_L_irst 0x94 3438c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_0_2_H_irst 0x95 3448c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_0_3_L_irst 0x96 3458c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_0_3_H_irst 0x97 3468c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_0_4_L_irst 0x98 3478c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_0_4_H_irst 0x99 3488c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_0_5_L_irst 0x9a 3498c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_0_5_H_irst 0x9b 3508c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_0_6_L_irst 0x9c 3518c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_0_6_H_irst 0x9d 3528c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_0_7_L_irst 0x9e 3538c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_0_7_H_irst 0x9f 3548c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_1_0_L_itx 0xa0 3558c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_1_0_H_itx 0xa1 3568c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_1_1_L_itx 0xa2 3578c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_1_1_H_itx 0xa3 3588c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_1_2_L_itx 0xa4 3598c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_1_2_H_itx 0xa5 3608c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_1_3_L_itx 0xa6 3618c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_1_3_H_itx 0xa7 3628c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_1_4_L_itx 0xa8 3638c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_1_4_H_itx 0xa9 3648c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_1_5_L_itx 0xaa 3658c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_1_5_H_itx 0xab 3668c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_1_6_L_itx 0xac 3678c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_1_6_H_itx 0xad 3688c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_1_7_L_itx 0xae 3698c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_1_7_H_itx 0xaf 3708c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_2_0_L_iwl 0xb0 3718c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_2_0_H_iwl 0xb1 3728c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_2_1_L_iwl 0xb2 3738c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_2_1_H_iwl 0xb3 3748c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_2_2_L_iwl 0xb4 3758c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_2_2_H_iwl 0xb5 3768c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_2_3_L_iwl 0xb6 3778c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_2_3_H_iwl 0xb7 3788c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_2_4_L_iwl 0xb8 3798c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_2_4_H_iwl 0xb9 3808c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_2_5_L_iwl 0xba 3818c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_2_5_H_iwl 0xbb 3828c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_2_6_L_iwl 0xbc 3838c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_2_6_H_iwl 0xbd 3848c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_2_7_L_iwl 0xbe 3858c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_2_7_H_iwl 0xbf 3868c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_3_0_L_ensp 0xc0 3878c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_3_0_H_ensp 0xc1 3888c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_3_1_L_ensp 0xc2 3898c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_3_1_H_ensp 0xc3 3908c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_3_2_L_ensp 0xc4 3918c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_3_2_H_ensp 0xc5 3928c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_3_3_L_ensp 0xc6 3938c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_3_3_H_ensp 0xc7 3948c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_3_4_L_ensp 0xc8 3958c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_3_4_H_ensp 0xc9 3968c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_3_5_L_ensp 0xca 3978c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_3_5_H_ensp 0xcb 3988c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_3_6_L_ensp 0xcc 3998c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_3_6_H_ensp 0xcd 4008c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_3_7_L_ensp 0xce 4018c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_3_7_H_ensp 0xcf 4028c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_4_0_L_sela 0xd0 4038c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_4_0_H_sela 0xd1 4048c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_4_1_L_sela 0xd2 4058c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_4_1_H_sela 0xd3 4068c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_5_0_L_intla 0xe0 4078c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_5_0_H_intla 0xe1 4088c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_5_1_L_intla 0xe2 4098c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_5_1_H_intla 0xe3 4108c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_5_2_L_intla 0xe4 4118c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_5_2_H_intla 0xe5 4128c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_5_3_L_intla 0xe6 4138c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_5_3_H_intla 0xe7 4148c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_6_0_L_xa_sel_pos 0xf0 4158c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_6_0_H_xa_sel_pos 0xf1 4168c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_7_1_L_cds_pos 0xf2 4178c2ecf20Sopenharmony_ci#define CX0342_CHANNEL_7_1_H_cds_pos 0xf3 4188c2ecf20Sopenharmony_ci#define CX0342_SENSOR_HEIGHT_L 0xfb 4198c2ecf20Sopenharmony_ci#define CX0342_SENSOR_HEIGHT_H 0xfc 4208c2ecf20Sopenharmony_ci#define CX0342_SENSOR_WIDTH_L 0xfd 4218c2ecf20Sopenharmony_ci#define CX0342_SENSOR_WIDTH_H 0xfe 4228c2ecf20Sopenharmony_ci#define CX0342_VSYNC_HSYNC_READ 0xff 4238c2ecf20Sopenharmony_ci 4248c2ecf20Sopenharmony_cistruct cmd { 4258c2ecf20Sopenharmony_ci u8 reg; 4268c2ecf20Sopenharmony_ci u8 val; 4278c2ecf20Sopenharmony_ci}; 4288c2ecf20Sopenharmony_ci 4298c2ecf20Sopenharmony_cistatic const u8 DQT[17][130] = { 4308c2ecf20Sopenharmony_ci /* Define quantization table (thanks to Thomas Kaiser) */ 4318c2ecf20Sopenharmony_ci { /* Quality 0 */ 4328c2ecf20Sopenharmony_ci 0x00, 4338c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 4348c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 4358c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 4368c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 4378c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 4388c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 4398c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 4408c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 4418c2ecf20Sopenharmony_ci 0x01, 4428c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x06, 0x05, 0x06, 0x0b, 0x06, 4438c2ecf20Sopenharmony_ci 0x06, 0x0b, 0x18, 0x10, 0x0e, 0x10, 0x18, 0x18, 4448c2ecf20Sopenharmony_ci 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 4458c2ecf20Sopenharmony_ci 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 4468c2ecf20Sopenharmony_ci 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 4478c2ecf20Sopenharmony_ci 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 4488c2ecf20Sopenharmony_ci 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 4498c2ecf20Sopenharmony_ci 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 4508c2ecf20Sopenharmony_ci }, 4518c2ecf20Sopenharmony_ci { /* Quality 1 */ 4528c2ecf20Sopenharmony_ci 0x00, 4538c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 4548c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 4558c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 4568c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 4578c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 4588c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x09, 0x09, 0x09, 0x09, 0x09, 4598c2ecf20Sopenharmony_ci 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 4608c2ecf20Sopenharmony_ci 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 4618c2ecf20Sopenharmony_ci 0x01, 4628c2ecf20Sopenharmony_ci 0x08, 0x09, 0x09, 0x0c, 0x0a, 0x0c, 0x17, 0x0d, 4638c2ecf20Sopenharmony_ci 0x0d, 0x17, 0x31, 0x21, 0x1c, 0x21, 0x31, 0x31, 4648c2ecf20Sopenharmony_ci 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 4658c2ecf20Sopenharmony_ci 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 4668c2ecf20Sopenharmony_ci 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 4678c2ecf20Sopenharmony_ci 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 4688c2ecf20Sopenharmony_ci 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 4698c2ecf20Sopenharmony_ci 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 4708c2ecf20Sopenharmony_ci }, 4718c2ecf20Sopenharmony_ci { /* Quality 2 */ 4728c2ecf20Sopenharmony_ci 0x00, 4738c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 4748c2ecf20Sopenharmony_ci 0x04, 0x04, 0x06, 0x06, 0x06, 0x04, 0x04, 0x04, 4758c2ecf20Sopenharmony_ci 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 4768c2ecf20Sopenharmony_ci 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 4778c2ecf20Sopenharmony_ci 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 4788c2ecf20Sopenharmony_ci 0x06, 0x06, 0x06, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 4798c2ecf20Sopenharmony_ci 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 4808c2ecf20Sopenharmony_ci 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 4818c2ecf20Sopenharmony_ci 0x01, 4828c2ecf20Sopenharmony_ci 0x0c, 0x0d, 0x0d, 0x12, 0x0f, 0x12, 0x23, 0x13, 4838c2ecf20Sopenharmony_ci 0x13, 0x23, 0x4a, 0x31, 0x2a, 0x31, 0x4a, 0x4a, 4848c2ecf20Sopenharmony_ci 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 4858c2ecf20Sopenharmony_ci 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 4868c2ecf20Sopenharmony_ci 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 4878c2ecf20Sopenharmony_ci 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 4888c2ecf20Sopenharmony_ci 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 4898c2ecf20Sopenharmony_ci 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 4908c2ecf20Sopenharmony_ci }, 4918c2ecf20Sopenharmony_ci { /* Quality 3 */ 4928c2ecf20Sopenharmony_ci 0x00, 4938c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 4948c2ecf20Sopenharmony_ci 0x04, 0x04, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 4958c2ecf20Sopenharmony_ci 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 4968c2ecf20Sopenharmony_ci 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 4978c2ecf20Sopenharmony_ci 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 4988c2ecf20Sopenharmony_ci 0x08, 0x08, 0x08, 0x13, 0x13, 0x13, 0x13, 0x13, 4998c2ecf20Sopenharmony_ci 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 5008c2ecf20Sopenharmony_ci 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 5018c2ecf20Sopenharmony_ci 0x01, 5028c2ecf20Sopenharmony_ci 0x11, 0x12, 0x12, 0x18, 0x15, 0x18, 0x2f, 0x1a, 5038c2ecf20Sopenharmony_ci 0x1a, 0x2f, 0x63, 0x42, 0x38, 0x42, 0x63, 0x63, 5048c2ecf20Sopenharmony_ci 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 5058c2ecf20Sopenharmony_ci 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 5068c2ecf20Sopenharmony_ci 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 5078c2ecf20Sopenharmony_ci 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 5088c2ecf20Sopenharmony_ci 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 5098c2ecf20Sopenharmony_ci 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 5108c2ecf20Sopenharmony_ci }, 5118c2ecf20Sopenharmony_ci { /* Quality 4 */ 5128c2ecf20Sopenharmony_ci 0x00, 5138c2ecf20Sopenharmony_ci 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 5148c2ecf20Sopenharmony_ci 0x05, 0x05, 0x0a, 0x0a, 0x0a, 0x05, 0x05, 0x05, 5158c2ecf20Sopenharmony_ci 0x05, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 5168c2ecf20Sopenharmony_ci 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 5178c2ecf20Sopenharmony_ci 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 5188c2ecf20Sopenharmony_ci 0x0a, 0x0a, 0x0a, 0x17, 0x17, 0x17, 0x17, 0x17, 5198c2ecf20Sopenharmony_ci 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 5208c2ecf20Sopenharmony_ci 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 5218c2ecf20Sopenharmony_ci 0x01, 5228c2ecf20Sopenharmony_ci 0x11, 0x16, 0x16, 0x1e, 0x1a, 0x1e, 0x3a, 0x20, 5238c2ecf20Sopenharmony_ci 0x20, 0x3a, 0x7b, 0x52, 0x46, 0x52, 0x7b, 0x7b, 5248c2ecf20Sopenharmony_ci 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 5258c2ecf20Sopenharmony_ci 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 5268c2ecf20Sopenharmony_ci 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 5278c2ecf20Sopenharmony_ci 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 5288c2ecf20Sopenharmony_ci 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 5298c2ecf20Sopenharmony_ci 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 5308c2ecf20Sopenharmony_ci }, 5318c2ecf20Sopenharmony_ci { /* Quality 5 */ 5328c2ecf20Sopenharmony_ci 0x00, 5338c2ecf20Sopenharmony_ci 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 5348c2ecf20Sopenharmony_ci 0x06, 0x06, 0x0c, 0x0c, 0x0c, 0x06, 0x06, 0x06, 5358c2ecf20Sopenharmony_ci 0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 5368c2ecf20Sopenharmony_ci 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 5378c2ecf20Sopenharmony_ci 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 5388c2ecf20Sopenharmony_ci 0x0c, 0x0c, 0x0c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 5398c2ecf20Sopenharmony_ci 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 5408c2ecf20Sopenharmony_ci 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 5418c2ecf20Sopenharmony_ci 0x01, 5428c2ecf20Sopenharmony_ci 0x11, 0x1b, 0x1b, 0x24, 0x1f, 0x24, 0x46, 0x27, 5438c2ecf20Sopenharmony_ci 0x27, 0x46, 0x94, 0x63, 0x54, 0x63, 0x94, 0x94, 5448c2ecf20Sopenharmony_ci 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 5458c2ecf20Sopenharmony_ci 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 5468c2ecf20Sopenharmony_ci 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 5478c2ecf20Sopenharmony_ci 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 5488c2ecf20Sopenharmony_ci 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 5498c2ecf20Sopenharmony_ci 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 5508c2ecf20Sopenharmony_ci }, 5518c2ecf20Sopenharmony_ci { /* Quality 6 */ 5528c2ecf20Sopenharmony_ci 0x00, 5538c2ecf20Sopenharmony_ci 0x05, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 5548c2ecf20Sopenharmony_ci 0x07, 0x07, 0x0e, 0x0e, 0x0e, 0x07, 0x07, 0x07, 5558c2ecf20Sopenharmony_ci 0x07, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 5568c2ecf20Sopenharmony_ci 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 5578c2ecf20Sopenharmony_ci 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 5588c2ecf20Sopenharmony_ci 0x0e, 0x0e, 0x0e, 0x21, 0x21, 0x21, 0x21, 0x21, 5598c2ecf20Sopenharmony_ci 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 5608c2ecf20Sopenharmony_ci 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 5618c2ecf20Sopenharmony_ci 0x01, 5628c2ecf20Sopenharmony_ci 0x15, 0x1f, 0x1f, 0x2a, 0x24, 0x2a, 0x52, 0x2d, 5638c2ecf20Sopenharmony_ci 0x2d, 0x52, 0xad, 0x73, 0x62, 0x73, 0xad, 0xad, 5648c2ecf20Sopenharmony_ci 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 5658c2ecf20Sopenharmony_ci 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 5668c2ecf20Sopenharmony_ci 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 5678c2ecf20Sopenharmony_ci 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 5688c2ecf20Sopenharmony_ci 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 5698c2ecf20Sopenharmony_ci 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 5708c2ecf20Sopenharmony_ci }, 5718c2ecf20Sopenharmony_ci { /* Quality 7 */ 5728c2ecf20Sopenharmony_ci 0x00, 5738c2ecf20Sopenharmony_ci 0x05, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 5748c2ecf20Sopenharmony_ci 0x08, 0x08, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 5758c2ecf20Sopenharmony_ci 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 5768c2ecf20Sopenharmony_ci 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 5778c2ecf20Sopenharmony_ci 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 5788c2ecf20Sopenharmony_ci 0x10, 0x10, 0x10, 0x26, 0x26, 0x26, 0x26, 0x26, 5798c2ecf20Sopenharmony_ci 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 5808c2ecf20Sopenharmony_ci 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 5818c2ecf20Sopenharmony_ci 0x01, 5828c2ecf20Sopenharmony_ci 0x15, 0x24, 0x24, 0x30, 0x2a, 0x30, 0x5e, 0x34, 5838c2ecf20Sopenharmony_ci 0x34, 0x5e, 0xc6, 0x84, 0x70, 0x84, 0xc6, 0xc6, 5848c2ecf20Sopenharmony_ci 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 5858c2ecf20Sopenharmony_ci 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 5868c2ecf20Sopenharmony_ci 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 5878c2ecf20Sopenharmony_ci 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 5888c2ecf20Sopenharmony_ci 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 5898c2ecf20Sopenharmony_ci 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 5908c2ecf20Sopenharmony_ci }, 5918c2ecf20Sopenharmony_ci { /* Quality 8 */ 5928c2ecf20Sopenharmony_ci 0x00, 5938c2ecf20Sopenharmony_ci 0x06, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 5948c2ecf20Sopenharmony_ci 0x0a, 0x0a, 0x14, 0x14, 0x14, 0x0a, 0x0a, 0x0a, 5958c2ecf20Sopenharmony_ci 0x0a, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 5968c2ecf20Sopenharmony_ci 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 5978c2ecf20Sopenharmony_ci 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 5988c2ecf20Sopenharmony_ci 0x14, 0x14, 0x14, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 5998c2ecf20Sopenharmony_ci 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 6008c2ecf20Sopenharmony_ci 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 6018c2ecf20Sopenharmony_ci 0x01, 6028c2ecf20Sopenharmony_ci 0x19, 0x2d, 0x2d, 0x3c, 0x34, 0x3c, 0x75, 0x41, 6038c2ecf20Sopenharmony_ci 0x41, 0x75, 0xf7, 0xa5, 0x8c, 0xa5, 0xf7, 0xf7, 6048c2ecf20Sopenharmony_ci 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 6058c2ecf20Sopenharmony_ci 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 6068c2ecf20Sopenharmony_ci 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 6078c2ecf20Sopenharmony_ci 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 6088c2ecf20Sopenharmony_ci 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 6098c2ecf20Sopenharmony_ci 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 6108c2ecf20Sopenharmony_ci }, 6118c2ecf20Sopenharmony_ci { /* Quality 9 */ 6128c2ecf20Sopenharmony_ci 0x00, 6138c2ecf20Sopenharmony_ci 0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 6148c2ecf20Sopenharmony_ci 0x0c, 0x0c, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x0c, 6158c2ecf20Sopenharmony_ci 0x0c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 6168c2ecf20Sopenharmony_ci 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 6178c2ecf20Sopenharmony_ci 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 6188c2ecf20Sopenharmony_ci 0x18, 0x18, 0x18, 0x39, 0x39, 0x39, 0x39, 0x39, 6198c2ecf20Sopenharmony_ci 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 6208c2ecf20Sopenharmony_ci 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 6218c2ecf20Sopenharmony_ci 0x01, 6228c2ecf20Sopenharmony_ci 0x19, 0x36, 0x36, 0x48, 0x3f, 0x48, 0x8d, 0x4e, 6238c2ecf20Sopenharmony_ci 0x4e, 0x8d, 0xff, 0xc6, 0xa8, 0xc6, 0xff, 0xff, 6248c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6258c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6268c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6278c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6288c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6298c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6308c2ecf20Sopenharmony_ci }, 6318c2ecf20Sopenharmony_ci { /* Quality 10 */ 6328c2ecf20Sopenharmony_ci 0x00, 6338c2ecf20Sopenharmony_ci 0x07, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 6348c2ecf20Sopenharmony_ci 0x0e, 0x0e, 0x1c, 0x1c, 0x1c, 0x0e, 0x0e, 0x0e, 6358c2ecf20Sopenharmony_ci 0x0e, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 6368c2ecf20Sopenharmony_ci 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 6378c2ecf20Sopenharmony_ci 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 6388c2ecf20Sopenharmony_ci 0x1c, 0x1c, 0x1c, 0x42, 0x42, 0x42, 0x42, 0x42, 6398c2ecf20Sopenharmony_ci 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 6408c2ecf20Sopenharmony_ci 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 6418c2ecf20Sopenharmony_ci 0x01, 6428c2ecf20Sopenharmony_ci 0x1d, 0x3f, 0x3f, 0x54, 0x49, 0x54, 0xa4, 0x5b, 6438c2ecf20Sopenharmony_ci 0x5b, 0xa4, 0xff, 0xe7, 0xc4, 0xe7, 0xff, 0xff, 6448c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6458c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6468c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6478c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6488c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6498c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6508c2ecf20Sopenharmony_ci }, 6518c2ecf20Sopenharmony_ci { /* Quality 11 */ 6528c2ecf20Sopenharmony_ci 0x00, 6538c2ecf20Sopenharmony_ci 0x07, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 6548c2ecf20Sopenharmony_ci 0x10, 0x10, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 6558c2ecf20Sopenharmony_ci 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 6568c2ecf20Sopenharmony_ci 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 6578c2ecf20Sopenharmony_ci 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 6588c2ecf20Sopenharmony_ci 0x20, 0x20, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 6598c2ecf20Sopenharmony_ci 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 6608c2ecf20Sopenharmony_ci 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 6618c2ecf20Sopenharmony_ci 0x01, 6628c2ecf20Sopenharmony_ci 0x1d, 0x48, 0x48, 0x60, 0x54, 0x60, 0xbc, 0x68, 6638c2ecf20Sopenharmony_ci 0x68, 0xbc, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xff, 6648c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6658c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6668c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6678c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6688c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6698c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6708c2ecf20Sopenharmony_ci }, 6718c2ecf20Sopenharmony_ci { /* Quality 12 */ 6728c2ecf20Sopenharmony_ci 0x00, 6738c2ecf20Sopenharmony_ci 0x08, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 6748c2ecf20Sopenharmony_ci 0x14, 0x14, 0x28, 0x28, 0x28, 0x14, 0x14, 0x14, 6758c2ecf20Sopenharmony_ci 0x14, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 6768c2ecf20Sopenharmony_ci 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 6778c2ecf20Sopenharmony_ci 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 6788c2ecf20Sopenharmony_ci 0x28, 0x28, 0x28, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 6798c2ecf20Sopenharmony_ci 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 6808c2ecf20Sopenharmony_ci 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 6818c2ecf20Sopenharmony_ci 0x01, 6828c2ecf20Sopenharmony_ci 0x22, 0x5a, 0x5a, 0x78, 0x69, 0x78, 0xeb, 0x82, 6838c2ecf20Sopenharmony_ci 0x82, 0xeb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6848c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6858c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6868c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6878c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6888c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6898c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 6908c2ecf20Sopenharmony_ci }, 6918c2ecf20Sopenharmony_ci { /* Quality 13 */ 6928c2ecf20Sopenharmony_ci 0x00, 6938c2ecf20Sopenharmony_ci 0x08, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 6948c2ecf20Sopenharmony_ci 0x18, 0x18, 0x30, 0x30, 0x30, 0x18, 0x18, 0x18, 6958c2ecf20Sopenharmony_ci 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 6968c2ecf20Sopenharmony_ci 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 6978c2ecf20Sopenharmony_ci 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 6988c2ecf20Sopenharmony_ci 0x30, 0x30, 0x30, 0x72, 0x72, 0x72, 0x72, 0x72, 6998c2ecf20Sopenharmony_ci 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 7008c2ecf20Sopenharmony_ci 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 7018c2ecf20Sopenharmony_ci 0x01, 7028c2ecf20Sopenharmony_ci 0x22, 0x6c, 0x6c, 0x90, 0x7e, 0x90, 0xff, 0x9c, 7038c2ecf20Sopenharmony_ci 0x9c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7048c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7058c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7068c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7078c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7088c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7098c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7108c2ecf20Sopenharmony_ci }, 7118c2ecf20Sopenharmony_ci { /* Quality 14 */ 7128c2ecf20Sopenharmony_ci 0x00, 7138c2ecf20Sopenharmony_ci 0x0a, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 7148c2ecf20Sopenharmony_ci 0x1c, 0x1c, 0x38, 0x38, 0x38, 0x1c, 0x1c, 0x1c, 7158c2ecf20Sopenharmony_ci 0x1c, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 7168c2ecf20Sopenharmony_ci 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 7178c2ecf20Sopenharmony_ci 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 7188c2ecf20Sopenharmony_ci 0x38, 0x38, 0x38, 0x85, 0x85, 0x85, 0x85, 0x85, 7198c2ecf20Sopenharmony_ci 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 7208c2ecf20Sopenharmony_ci 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 7218c2ecf20Sopenharmony_ci 0x01, 7228c2ecf20Sopenharmony_ci 0x2a, 0x7e, 0x7e, 0xa8, 0x93, 0xa8, 0xff, 0xb6, 7238c2ecf20Sopenharmony_ci 0xb6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7248c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7258c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7268c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7278c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7288c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7298c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7308c2ecf20Sopenharmony_ci }, 7318c2ecf20Sopenharmony_ci { /* Quality 15 */ 7328c2ecf20Sopenharmony_ci 0x00, 7338c2ecf20Sopenharmony_ci 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 7348c2ecf20Sopenharmony_ci 0x20, 0x20, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 7358c2ecf20Sopenharmony_ci 0x20, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 7368c2ecf20Sopenharmony_ci 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 7378c2ecf20Sopenharmony_ci 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 7388c2ecf20Sopenharmony_ci 0x40, 0x40, 0x40, 0x98, 0x98, 0x98, 0x98, 0x98, 7398c2ecf20Sopenharmony_ci 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 7408c2ecf20Sopenharmony_ci 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 7418c2ecf20Sopenharmony_ci 0x01, 7428c2ecf20Sopenharmony_ci 0x2a, 0x90, 0x90, 0xc0, 0xa8, 0xc0, 0xff, 0xd0, 7438c2ecf20Sopenharmony_ci 0xd0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7448c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7458c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7468c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7478c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7488c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7498c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 7508c2ecf20Sopenharmony_ci }, 7518c2ecf20Sopenharmony_ci { /* Quality 16-31 */ 7528c2ecf20Sopenharmony_ci 0x00, 7538c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 7548c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 7558c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 7568c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 7578c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 7588c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 7598c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 7608c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 7618c2ecf20Sopenharmony_ci 0x01, 7628c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 7638c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 7648c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 7658c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 7668c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 7678c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 7688c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 7698c2ecf20Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 7708c2ecf20Sopenharmony_ci } 7718c2ecf20Sopenharmony_ci}; 7728c2ecf20Sopenharmony_ci 7738c2ecf20Sopenharmony_cistatic const struct cmd tp6810_cx_init_common[] = { 7748c2ecf20Sopenharmony_ci {0x1c, 0x00}, 7758c2ecf20Sopenharmony_ci {TP6800_R10_SIF_TYPE, 0x00}, 7768c2ecf20Sopenharmony_ci {0x4e, 0x00}, 7778c2ecf20Sopenharmony_ci {0x4f, 0x00}, 7788c2ecf20Sopenharmony_ci {TP6800_R50, 0xff}, 7798c2ecf20Sopenharmony_ci {TP6800_R51, 0x03}, 7808c2ecf20Sopenharmony_ci {0x00, 0x07}, 7818c2ecf20Sopenharmony_ci {TP6800_R79_QUALITY, 0x03}, 7828c2ecf20Sopenharmony_ci {TP6800_R2F_TIMING_CFG, 0x37}, 7838c2ecf20Sopenharmony_ci {TP6800_R30_SENSOR_CFG, 0x10}, 7848c2ecf20Sopenharmony_ci {TP6800_R21_ENDP_1_CTL, 0x00}, 7858c2ecf20Sopenharmony_ci {TP6800_R52, 0x40}, 7868c2ecf20Sopenharmony_ci {TP6800_R53, 0x40}, 7878c2ecf20Sopenharmony_ci {TP6800_R54_DARK_CFG, 0x40}, 7888c2ecf20Sopenharmony_ci {TP6800_R30_SENSOR_CFG, 0x18}, 7898c2ecf20Sopenharmony_ci {0x4b, 0x00}, 7908c2ecf20Sopenharmony_ci {TP6800_R3F_FRAME_RATE, 0x83}, 7918c2ecf20Sopenharmony_ci {TP6800_R79_QUALITY, 0x05}, 7928c2ecf20Sopenharmony_ci {TP6800_R21_ENDP_1_CTL, 0x00}, 7938c2ecf20Sopenharmony_ci {0x7c, 0x04}, 7948c2ecf20Sopenharmony_ci {0x25, 0x14}, 7958c2ecf20Sopenharmony_ci {0x26, 0x0f}, 7968c2ecf20Sopenharmony_ci {0x7b, 0x10}, 7978c2ecf20Sopenharmony_ci}; 7988c2ecf20Sopenharmony_ci 7998c2ecf20Sopenharmony_cistatic const struct cmd tp6810_ov_init_common[] = { 8008c2ecf20Sopenharmony_ci {0x1c, 0x00}, 8018c2ecf20Sopenharmony_ci {TP6800_R10_SIF_TYPE, 0x00}, 8028c2ecf20Sopenharmony_ci {0x4e, 0x00}, 8038c2ecf20Sopenharmony_ci {0x4f, 0x00}, 8048c2ecf20Sopenharmony_ci {TP6800_R50, 0xff}, 8058c2ecf20Sopenharmony_ci {TP6800_R51, 0x03}, 8068c2ecf20Sopenharmony_ci {0x00, 0x07}, 8078c2ecf20Sopenharmony_ci {TP6800_R52, 0x40}, 8088c2ecf20Sopenharmony_ci {TP6800_R53, 0x40}, 8098c2ecf20Sopenharmony_ci {TP6800_R54_DARK_CFG, 0x40}, 8108c2ecf20Sopenharmony_ci {TP6800_R79_QUALITY, 0x03}, 8118c2ecf20Sopenharmony_ci {TP6800_R2F_TIMING_CFG, 0x17}, 8128c2ecf20Sopenharmony_ci {TP6800_R30_SENSOR_CFG, 0x18}, 8138c2ecf20Sopenharmony_ci {TP6800_R21_ENDP_1_CTL, 0x00}, 8148c2ecf20Sopenharmony_ci {TP6800_R3F_FRAME_RATE, 0x86}, 8158c2ecf20Sopenharmony_ci {0x25, 0x18}, 8168c2ecf20Sopenharmony_ci {0x26, 0x0f}, 8178c2ecf20Sopenharmony_ci {0x7b, 0x90}, 8188c2ecf20Sopenharmony_ci}; 8198c2ecf20Sopenharmony_ci 8208c2ecf20Sopenharmony_cistatic const struct cmd tp6810_bridge_start[] = { 8218c2ecf20Sopenharmony_ci {0x59, 0x88}, 8228c2ecf20Sopenharmony_ci {0x5a, 0x0f}, 8238c2ecf20Sopenharmony_ci {0x5b, 0x4e}, 8248c2ecf20Sopenharmony_ci {TP6800_R5C_EDGE_THRLD, 0x63}, 8258c2ecf20Sopenharmony_ci {TP6800_R5D_DEMOSAIC_CFG, 0x00}, 8268c2ecf20Sopenharmony_ci {0x03, 0x7f}, 8278c2ecf20Sopenharmony_ci {0x04, 0x80}, 8288c2ecf20Sopenharmony_ci {0x06, 0x00}, 8298c2ecf20Sopenharmony_ci {0x00, 0x00}, 8308c2ecf20Sopenharmony_ci}; 8318c2ecf20Sopenharmony_ci 8328c2ecf20Sopenharmony_cistatic const struct cmd tp6810_late_start[] = { 8338c2ecf20Sopenharmony_ci {0x7d, 0x01}, 8348c2ecf20Sopenharmony_ci {0xb0, 0x04}, 8358c2ecf20Sopenharmony_ci {0xb1, 0x04}, 8368c2ecf20Sopenharmony_ci {0xb2, 0x04}, 8378c2ecf20Sopenharmony_ci {0xb3, 0x04}, 8388c2ecf20Sopenharmony_ci {0xb4, 0x04}, 8398c2ecf20Sopenharmony_ci {0xb5, 0x04}, 8408c2ecf20Sopenharmony_ci {0xb6, 0x08}, 8418c2ecf20Sopenharmony_ci {0xb7, 0x08}, 8428c2ecf20Sopenharmony_ci {0xb8, 0x04}, 8438c2ecf20Sopenharmony_ci {0xb9, 0x04}, 8448c2ecf20Sopenharmony_ci {0xba, 0x04}, 8458c2ecf20Sopenharmony_ci {0xbb, 0x04}, 8468c2ecf20Sopenharmony_ci {0xbc, 0x04}, 8478c2ecf20Sopenharmony_ci {0xbd, 0x08}, 8488c2ecf20Sopenharmony_ci {0xbe, 0x08}, 8498c2ecf20Sopenharmony_ci {0xbf, 0x08}, 8508c2ecf20Sopenharmony_ci {0xc0, 0x04}, 8518c2ecf20Sopenharmony_ci {0xc1, 0x04}, 8528c2ecf20Sopenharmony_ci {0xc2, 0x08}, 8538c2ecf20Sopenharmony_ci {0xc3, 0x08}, 8548c2ecf20Sopenharmony_ci {0xc4, 0x08}, 8558c2ecf20Sopenharmony_ci {0xc5, 0x08}, 8568c2ecf20Sopenharmony_ci {0xc6, 0x08}, 8578c2ecf20Sopenharmony_ci {0xc7, 0x13}, 8588c2ecf20Sopenharmony_ci {0xc8, 0x04}, 8598c2ecf20Sopenharmony_ci {0xc9, 0x08}, 8608c2ecf20Sopenharmony_ci {0xca, 0x08}, 8618c2ecf20Sopenharmony_ci {0xcb, 0x08}, 8628c2ecf20Sopenharmony_ci {0xcc, 0x08}, 8638c2ecf20Sopenharmony_ci {0xcd, 0x08}, 8648c2ecf20Sopenharmony_ci {0xce, 0x13}, 8658c2ecf20Sopenharmony_ci {0xcf, 0x13}, 8668c2ecf20Sopenharmony_ci {0xd0, 0x08}, 8678c2ecf20Sopenharmony_ci {0xd1, 0x08}, 8688c2ecf20Sopenharmony_ci {0xd2, 0x08}, 8698c2ecf20Sopenharmony_ci {0xd3, 0x08}, 8708c2ecf20Sopenharmony_ci {0xd4, 0x08}, 8718c2ecf20Sopenharmony_ci {0xd5, 0x13}, 8728c2ecf20Sopenharmony_ci {0xd6, 0x13}, 8738c2ecf20Sopenharmony_ci {0xd7, 0x13}, 8748c2ecf20Sopenharmony_ci {0xd8, 0x08}, 8758c2ecf20Sopenharmony_ci {0xd9, 0x08}, 8768c2ecf20Sopenharmony_ci {0xda, 0x08}, 8778c2ecf20Sopenharmony_ci {0xdb, 0x08}, 8788c2ecf20Sopenharmony_ci {0xdc, 0x13}, 8798c2ecf20Sopenharmony_ci {0xdd, 0x13}, 8808c2ecf20Sopenharmony_ci {0xde, 0x13}, 8818c2ecf20Sopenharmony_ci {0xdf, 0x13}, 8828c2ecf20Sopenharmony_ci {0xe0, 0x08}, 8838c2ecf20Sopenharmony_ci {0xe1, 0x08}, 8848c2ecf20Sopenharmony_ci {0xe2, 0x08}, 8858c2ecf20Sopenharmony_ci {0xe3, 0x13}, 8868c2ecf20Sopenharmony_ci {0xe4, 0x13}, 8878c2ecf20Sopenharmony_ci {0xe5, 0x13}, 8888c2ecf20Sopenharmony_ci {0xe6, 0x13}, 8898c2ecf20Sopenharmony_ci {0xe7, 0x13}, 8908c2ecf20Sopenharmony_ci {0xe8, 0x08}, 8918c2ecf20Sopenharmony_ci {0xe9, 0x08}, 8928c2ecf20Sopenharmony_ci {0xea, 0x13}, 8938c2ecf20Sopenharmony_ci {0xeb, 0x13}, 8948c2ecf20Sopenharmony_ci {0xec, 0x13}, 8958c2ecf20Sopenharmony_ci {0xed, 0x13}, 8968c2ecf20Sopenharmony_ci {0xee, 0x13}, 8978c2ecf20Sopenharmony_ci {0xef, 0x13}, 8988c2ecf20Sopenharmony_ci {0x7d, 0x02}, 8998c2ecf20Sopenharmony_ci 9008c2ecf20Sopenharmony_ci /* later after isoc start */ 9018c2ecf20Sopenharmony_ci {0x7d, 0x08}, 9028c2ecf20Sopenharmony_ci {0x7d, 0x00}, 9038c2ecf20Sopenharmony_ci}; 9048c2ecf20Sopenharmony_ci 9058c2ecf20Sopenharmony_cistatic const struct cmd cx0342_timing_seq[] = { 9068c2ecf20Sopenharmony_ci {CX0342_CHANNEL_0_1_L_irst, 0x20}, 9078c2ecf20Sopenharmony_ci {CX0342_CHANNEL_0_2_L_irst, 0x24}, 9088c2ecf20Sopenharmony_ci {CX0342_CHANNEL_0_2_H_irst, 0x00}, 9098c2ecf20Sopenharmony_ci {CX0342_CHANNEL_0_3_L_irst, 0x2f}, 9108c2ecf20Sopenharmony_ci {CX0342_CHANNEL_0_3_H_irst, 0x00}, 9118c2ecf20Sopenharmony_ci {CX0342_CHANNEL_1_0_L_itx, 0x02}, 9128c2ecf20Sopenharmony_ci {CX0342_CHANNEL_1_0_H_itx, 0x00}, 9138c2ecf20Sopenharmony_ci {CX0342_CHANNEL_1_1_L_itx, 0x20}, 9148c2ecf20Sopenharmony_ci {CX0342_CHANNEL_1_1_H_itx, 0x00}, 9158c2ecf20Sopenharmony_ci {CX0342_CHANNEL_1_2_L_itx, 0xe4}, 9168c2ecf20Sopenharmony_ci {CX0342_CHANNEL_1_2_H_itx, 0x00}, 9178c2ecf20Sopenharmony_ci {CX0342_CHANNEL_1_3_L_itx, 0xee}, 9188c2ecf20Sopenharmony_ci {CX0342_CHANNEL_1_3_H_itx, 0x00}, 9198c2ecf20Sopenharmony_ci {CX0342_CHANNEL_2_0_L_iwl, 0x30}, 9208c2ecf20Sopenharmony_ci {CX0342_CHANNEL_2_0_H_iwl, 0x00}, 9218c2ecf20Sopenharmony_ci {CX0342_CHANNEL_3_0_L_ensp, 0x34}, 9228c2ecf20Sopenharmony_ci {CX0342_CHANNEL_3_1_L_ensp, 0xe2}, 9238c2ecf20Sopenharmony_ci {CX0342_CHANNEL_3_1_H_ensp, 0x00}, 9248c2ecf20Sopenharmony_ci {CX0342_CHANNEL_3_2_L_ensp, 0xf6}, 9258c2ecf20Sopenharmony_ci {CX0342_CHANNEL_3_2_H_ensp, 0x00}, 9268c2ecf20Sopenharmony_ci {CX0342_CHANNEL_3_3_L_ensp, 0xf4}, 9278c2ecf20Sopenharmony_ci {CX0342_CHANNEL_3_3_H_ensp, 0x02}, 9288c2ecf20Sopenharmony_ci {CX0342_CHANNEL_4_0_L_sela, 0x26}, 9298c2ecf20Sopenharmony_ci {CX0342_CHANNEL_4_0_H_sela, 0x00}, 9308c2ecf20Sopenharmony_ci {CX0342_CHANNEL_4_1_L_sela, 0xe2}, 9318c2ecf20Sopenharmony_ci {CX0342_CHANNEL_4_1_H_sela, 0x00}, 9328c2ecf20Sopenharmony_ci {CX0342_CHANNEL_5_0_L_intla, 0x26}, 9338c2ecf20Sopenharmony_ci {CX0342_CHANNEL_5_1_L_intla, 0x29}, 9348c2ecf20Sopenharmony_ci {CX0342_CHANNEL_5_2_L_intla, 0xf0}, 9358c2ecf20Sopenharmony_ci {CX0342_CHANNEL_5_2_H_intla, 0x00}, 9368c2ecf20Sopenharmony_ci {CX0342_CHANNEL_5_3_L_intla, 0xf3}, 9378c2ecf20Sopenharmony_ci {CX0342_CHANNEL_5_3_H_intla, 0x00}, 9388c2ecf20Sopenharmony_ci {CX0342_CHANNEL_6_0_L_xa_sel_pos, 0x24}, 9398c2ecf20Sopenharmony_ci {CX0342_CHANNEL_7_1_L_cds_pos, 0x02}, 9408c2ecf20Sopenharmony_ci {CX0342_TIMING_EN, 0x01}, 9418c2ecf20Sopenharmony_ci}; 9428c2ecf20Sopenharmony_ci 9438c2ecf20Sopenharmony_ci/* define the JPEG header */ 9448c2ecf20Sopenharmony_cistatic void jpeg_define(u8 *jpeg_hdr, 9458c2ecf20Sopenharmony_ci int height, 9468c2ecf20Sopenharmony_ci int width) 9478c2ecf20Sopenharmony_ci{ 9488c2ecf20Sopenharmony_ci memcpy(jpeg_hdr, jpeg_head, sizeof jpeg_head); 9498c2ecf20Sopenharmony_ci jpeg_hdr[JPEG_HEIGHT_OFFSET + 0] = height >> 8; 9508c2ecf20Sopenharmony_ci jpeg_hdr[JPEG_HEIGHT_OFFSET + 1] = height; 9518c2ecf20Sopenharmony_ci jpeg_hdr[JPEG_HEIGHT_OFFSET + 2] = width >> 8; 9528c2ecf20Sopenharmony_ci jpeg_hdr[JPEG_HEIGHT_OFFSET + 3] = width; 9538c2ecf20Sopenharmony_ci} 9548c2ecf20Sopenharmony_ci 9558c2ecf20Sopenharmony_ci/* set the JPEG quality for sensor soi763a */ 9568c2ecf20Sopenharmony_cistatic void jpeg_set_qual(u8 *jpeg_hdr, 9578c2ecf20Sopenharmony_ci int quality) 9588c2ecf20Sopenharmony_ci{ 9598c2ecf20Sopenharmony_ci int i, sc; 9608c2ecf20Sopenharmony_ci 9618c2ecf20Sopenharmony_ci if (quality <= 0) 9628c2ecf20Sopenharmony_ci sc = 5000; 9638c2ecf20Sopenharmony_ci else if (quality < 50) 9648c2ecf20Sopenharmony_ci sc = 5000 / quality; 9658c2ecf20Sopenharmony_ci else 9668c2ecf20Sopenharmony_ci sc = 200 - quality * 2; 9678c2ecf20Sopenharmony_ci for (i = 0; i < 64; i++) { 9688c2ecf20Sopenharmony_ci jpeg_hdr[JPEG_QT0_OFFSET + i] = 9698c2ecf20Sopenharmony_ci (jpeg_head[JPEG_QT0_OFFSET + i] * sc + 50) / 100; 9708c2ecf20Sopenharmony_ci jpeg_hdr[JPEG_QT1_OFFSET + i] = 9718c2ecf20Sopenharmony_ci (jpeg_head[JPEG_QT1_OFFSET + i] * sc + 50) / 100; 9728c2ecf20Sopenharmony_ci } 9738c2ecf20Sopenharmony_ci} 9748c2ecf20Sopenharmony_ci 9758c2ecf20Sopenharmony_cistatic void reg_w(struct gspca_dev *gspca_dev, u8 index, u8 value) 9768c2ecf20Sopenharmony_ci{ 9778c2ecf20Sopenharmony_ci struct usb_device *dev = gspca_dev->dev; 9788c2ecf20Sopenharmony_ci int ret; 9798c2ecf20Sopenharmony_ci 9808c2ecf20Sopenharmony_ci if (gspca_dev->usb_err < 0) 9818c2ecf20Sopenharmony_ci return; 9828c2ecf20Sopenharmony_ci ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0), 9838c2ecf20Sopenharmony_ci 0x0e, 9848c2ecf20Sopenharmony_ci USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE, 9858c2ecf20Sopenharmony_ci value, index, NULL, 0, 500); 9868c2ecf20Sopenharmony_ci if (ret < 0) { 9878c2ecf20Sopenharmony_ci pr_err("reg_w err %d\n", ret); 9888c2ecf20Sopenharmony_ci gspca_dev->usb_err = ret; 9898c2ecf20Sopenharmony_ci } 9908c2ecf20Sopenharmony_ci} 9918c2ecf20Sopenharmony_ci 9928c2ecf20Sopenharmony_ci/* the returned value is in gspca_dev->usb_buf */ 9938c2ecf20Sopenharmony_cistatic void reg_r(struct gspca_dev *gspca_dev, u8 index) 9948c2ecf20Sopenharmony_ci{ 9958c2ecf20Sopenharmony_ci struct usb_device *dev = gspca_dev->dev; 9968c2ecf20Sopenharmony_ci int ret; 9978c2ecf20Sopenharmony_ci 9988c2ecf20Sopenharmony_ci if (gspca_dev->usb_err < 0) 9998c2ecf20Sopenharmony_ci return; 10008c2ecf20Sopenharmony_ci ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), 10018c2ecf20Sopenharmony_ci 0x0d, 10028c2ecf20Sopenharmony_ci USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE, 10038c2ecf20Sopenharmony_ci 0, index, gspca_dev->usb_buf, 1, 500); 10048c2ecf20Sopenharmony_ci if (ret < 0) { 10058c2ecf20Sopenharmony_ci pr_err("reg_r err %d\n", ret); 10068c2ecf20Sopenharmony_ci gspca_dev->usb_err = ret; 10078c2ecf20Sopenharmony_ci } 10088c2ecf20Sopenharmony_ci} 10098c2ecf20Sopenharmony_ci 10108c2ecf20Sopenharmony_cistatic void reg_w_buf(struct gspca_dev *gspca_dev, 10118c2ecf20Sopenharmony_ci const struct cmd *p, int l) 10128c2ecf20Sopenharmony_ci{ 10138c2ecf20Sopenharmony_ci do { 10148c2ecf20Sopenharmony_ci reg_w(gspca_dev, p->reg, p->val); 10158c2ecf20Sopenharmony_ci p++; 10168c2ecf20Sopenharmony_ci } while (--l > 0); 10178c2ecf20Sopenharmony_ci} 10188c2ecf20Sopenharmony_ci 10198c2ecf20Sopenharmony_cistatic int i2c_w(struct gspca_dev *gspca_dev, u8 index, u8 value) 10208c2ecf20Sopenharmony_ci{ 10218c2ecf20Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 10228c2ecf20Sopenharmony_ci 10238c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x00); 10248c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R19_SIF_ADDR_S2, index); 10258c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R13_SIF_TX_DATA, value); 10268c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x01); 10278c2ecf20Sopenharmony_ci if (sd->bridge == BRIDGE_TP6800) 10288c2ecf20Sopenharmony_ci return 0; 10298c2ecf20Sopenharmony_ci msleep(5); 10308c2ecf20Sopenharmony_ci reg_r(gspca_dev, TP6800_R11_SIF_CONTROL); 10318c2ecf20Sopenharmony_ci if (gspca_dev->usb_buf[0] == 0) 10328c2ecf20Sopenharmony_ci return 0; 10338c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x00); 10348c2ecf20Sopenharmony_ci return -1; /* error */ 10358c2ecf20Sopenharmony_ci} 10368c2ecf20Sopenharmony_ci 10378c2ecf20Sopenharmony_cistatic void i2c_w_buf(struct gspca_dev *gspca_dev, 10388c2ecf20Sopenharmony_ci const struct cmd *p, int l) 10398c2ecf20Sopenharmony_ci{ 10408c2ecf20Sopenharmony_ci do { 10418c2ecf20Sopenharmony_ci i2c_w(gspca_dev, p->reg, p->val); 10428c2ecf20Sopenharmony_ci p++; 10438c2ecf20Sopenharmony_ci } while (--l > 0); 10448c2ecf20Sopenharmony_ci} 10458c2ecf20Sopenharmony_ci 10468c2ecf20Sopenharmony_cistatic int i2c_r(struct gspca_dev *gspca_dev, u8 index, int len) 10478c2ecf20Sopenharmony_ci{ 10488c2ecf20Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 10498c2ecf20Sopenharmony_ci int v; 10508c2ecf20Sopenharmony_ci 10518c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R19_SIF_ADDR_S2, index); 10528c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x02); 10538c2ecf20Sopenharmony_ci msleep(5); 10548c2ecf20Sopenharmony_ci reg_r(gspca_dev, TP6800_R14_SIF_RX_DATA); 10558c2ecf20Sopenharmony_ci v = gspca_dev->usb_buf[0]; 10568c2ecf20Sopenharmony_ci if (sd->bridge == BRIDGE_TP6800) 10578c2ecf20Sopenharmony_ci return v; 10588c2ecf20Sopenharmony_ci if (len > 1) { 10598c2ecf20Sopenharmony_ci reg_r(gspca_dev, TP6800_R1B_SIF_RX_DATA2); 10608c2ecf20Sopenharmony_ci v |= (gspca_dev->usb_buf[0] << 8); 10618c2ecf20Sopenharmony_ci } 10628c2ecf20Sopenharmony_ci reg_r(gspca_dev, TP6800_R11_SIF_CONTROL); 10638c2ecf20Sopenharmony_ci if (gspca_dev->usb_buf[0] == 0) 10648c2ecf20Sopenharmony_ci return v; 10658c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x00); 10668c2ecf20Sopenharmony_ci return -1; 10678c2ecf20Sopenharmony_ci} 10688c2ecf20Sopenharmony_ci 10698c2ecf20Sopenharmony_cistatic void bulk_w(struct gspca_dev *gspca_dev, 10708c2ecf20Sopenharmony_ci u8 tag, 10718c2ecf20Sopenharmony_ci const u8 *data, 10728c2ecf20Sopenharmony_ci int length) 10738c2ecf20Sopenharmony_ci{ 10748c2ecf20Sopenharmony_ci struct usb_device *dev = gspca_dev->dev; 10758c2ecf20Sopenharmony_ci int count, actual_count, ret; 10768c2ecf20Sopenharmony_ci 10778c2ecf20Sopenharmony_ci if (gspca_dev->usb_err < 0) 10788c2ecf20Sopenharmony_ci return; 10798c2ecf20Sopenharmony_ci for (;;) { 10808c2ecf20Sopenharmony_ci count = length > BULK_OUT_SIZE - 1 10818c2ecf20Sopenharmony_ci ? BULK_OUT_SIZE - 1 : length; 10828c2ecf20Sopenharmony_ci gspca_dev->usb_buf[0] = tag; 10838c2ecf20Sopenharmony_ci memcpy(&gspca_dev->usb_buf[1], data, count); 10848c2ecf20Sopenharmony_ci ret = usb_bulk_msg(dev, 10858c2ecf20Sopenharmony_ci usb_sndbulkpipe(dev, 3), 10868c2ecf20Sopenharmony_ci gspca_dev->usb_buf, count + 1, 10878c2ecf20Sopenharmony_ci &actual_count, 500); 10888c2ecf20Sopenharmony_ci if (ret < 0) { 10898c2ecf20Sopenharmony_ci pr_err("bulk write error %d tag=%02x\n", 10908c2ecf20Sopenharmony_ci ret, tag); 10918c2ecf20Sopenharmony_ci gspca_dev->usb_err = ret; 10928c2ecf20Sopenharmony_ci return; 10938c2ecf20Sopenharmony_ci } 10948c2ecf20Sopenharmony_ci length -= count; 10958c2ecf20Sopenharmony_ci if (length <= 0) 10968c2ecf20Sopenharmony_ci break; 10978c2ecf20Sopenharmony_ci data += count; 10988c2ecf20Sopenharmony_ci } 10998c2ecf20Sopenharmony_ci} 11008c2ecf20Sopenharmony_ci 11018c2ecf20Sopenharmony_cistatic int probe_6810(struct gspca_dev *gspca_dev) 11028c2ecf20Sopenharmony_ci{ 11038c2ecf20Sopenharmony_ci u8 gpio; 11048c2ecf20Sopenharmony_ci int ret; 11058c2ecf20Sopenharmony_ci 11068c2ecf20Sopenharmony_ci reg_r(gspca_dev, TP6800_R18_GPIO_DATA); 11078c2ecf20Sopenharmony_ci gpio = gspca_dev->usb_buf[0]; 11088c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio); 11098c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); 11108c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio); 11118c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x04); /* i2c 16 bits */ 11128c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x21); /* ov??? */ 11138c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R1A_SIF_TX_DATA2, 0x00); 11148c2ecf20Sopenharmony_ci if (i2c_w(gspca_dev, 0x00, 0x00) >= 0) 11158c2ecf20Sopenharmony_ci return SENSOR_SOI763A; 11168c2ecf20Sopenharmony_ci 11178c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); 11188c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x00); /* i2c 8 bits */ 11198c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x7f); /* (unknown i2c) */ 11208c2ecf20Sopenharmony_ci if (i2c_w(gspca_dev, 0x00, 0x00) >= 0) 11218c2ecf20Sopenharmony_ci return -2; 11228c2ecf20Sopenharmony_ci 11238c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); 11248c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio); 11258c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); 11268c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x00); /* i2c 8 bits */ 11278c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x11); /* tas??? / hv??? */ 11288c2ecf20Sopenharmony_ci ret = i2c_r(gspca_dev, 0x00, 1); 11298c2ecf20Sopenharmony_ci if (ret > 0) 11308c2ecf20Sopenharmony_ci return -3; 11318c2ecf20Sopenharmony_ci 11328c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); 11338c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio); 11348c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); 11358c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x6e); /* po??? */ 11368c2ecf20Sopenharmony_ci ret = i2c_r(gspca_dev, 0x00, 1); 11378c2ecf20Sopenharmony_ci if (ret > 0) 11388c2ecf20Sopenharmony_ci return -4; 11398c2ecf20Sopenharmony_ci 11408c2ecf20Sopenharmony_ci ret = i2c_r(gspca_dev, 0x01, 1); 11418c2ecf20Sopenharmony_ci if (ret > 0) 11428c2ecf20Sopenharmony_ci return -5; 11438c2ecf20Sopenharmony_ci 11448c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); 11458c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio); 11468c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); 11478c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x04); /* i2c 16 bits */ 11488c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x5d); /* mi/mt??? */ 11498c2ecf20Sopenharmony_ci ret = i2c_r(gspca_dev, 0x00, 2); 11508c2ecf20Sopenharmony_ci if (ret > 0) 11518c2ecf20Sopenharmony_ci return -6; 11528c2ecf20Sopenharmony_ci 11538c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); 11548c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio); 11558c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); 11568c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x5c); /* mi/mt??? */ 11578c2ecf20Sopenharmony_ci ret = i2c_r(gspca_dev, 0x36, 2); 11588c2ecf20Sopenharmony_ci if (ret > 0) 11598c2ecf20Sopenharmony_ci return -7; 11608c2ecf20Sopenharmony_ci 11618c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio); 11628c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); 11638c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio); 11648c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x61); /* (unknown i2c) */ 11658c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R1A_SIF_TX_DATA2, 0x10); 11668c2ecf20Sopenharmony_ci if (i2c_w(gspca_dev, 0xff, 0x00) >= 0) 11678c2ecf20Sopenharmony_ci return -8; 11688c2ecf20Sopenharmony_ci 11698c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); 11708c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio); 11718c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); 11728c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x00); /* i2c 8 bits */ 11738c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x20); /* cx0342 */ 11748c2ecf20Sopenharmony_ci ret = i2c_r(gspca_dev, 0x00, 1); 11758c2ecf20Sopenharmony_ci if (ret > 0) 11768c2ecf20Sopenharmony_ci return SENSOR_CX0342; 11778c2ecf20Sopenharmony_ci return -9; 11788c2ecf20Sopenharmony_ci} 11798c2ecf20Sopenharmony_ci 11808c2ecf20Sopenharmony_cistatic void cx0342_6810_init(struct gspca_dev *gspca_dev) 11818c2ecf20Sopenharmony_ci{ 11828c2ecf20Sopenharmony_ci static const struct cmd reg_init_1[] = { 11838c2ecf20Sopenharmony_ci {TP6800_R2F_TIMING_CFG, 0x2f}, 11848c2ecf20Sopenharmony_ci {0x25, 0x02}, 11858c2ecf20Sopenharmony_ci {TP6800_R21_ENDP_1_CTL, 0x00}, 11868c2ecf20Sopenharmony_ci {TP6800_R3F_FRAME_RATE, 0x80}, 11878c2ecf20Sopenharmony_ci {TP6800_R2F_TIMING_CFG, 0x2f}, 11888c2ecf20Sopenharmony_ci {TP6800_R18_GPIO_DATA, 0xe1}, 11898c2ecf20Sopenharmony_ci {TP6800_R18_GPIO_DATA, 0xc1}, 11908c2ecf20Sopenharmony_ci {TP6800_R18_GPIO_DATA, 0xe1}, 11918c2ecf20Sopenharmony_ci {TP6800_R11_SIF_CONTROL, 0x00}, 11928c2ecf20Sopenharmony_ci }; 11938c2ecf20Sopenharmony_ci static const struct cmd reg_init_2[] = { 11948c2ecf20Sopenharmony_ci {TP6800_R78_FORMAT, 0x48}, 11958c2ecf20Sopenharmony_ci {TP6800_R11_SIF_CONTROL, 0x00}, 11968c2ecf20Sopenharmony_ci }; 11978c2ecf20Sopenharmony_ci static const struct cmd sensor_init[] = { 11988c2ecf20Sopenharmony_ci {CX0342_OUTPUT_CTRL, 0x07}, 11998c2ecf20Sopenharmony_ci {CX0342_BYPASS_MODE, 0x58}, 12008c2ecf20Sopenharmony_ci {CX0342_GPXLTHD_L, 0x28}, 12018c2ecf20Sopenharmony_ci {CX0342_RBPXLTHD_L, 0x28}, 12028c2ecf20Sopenharmony_ci {CX0342_PLANETHD_L, 0x50}, 12038c2ecf20Sopenharmony_ci {CX0342_PLANETHD_H, 0x03}, 12048c2ecf20Sopenharmony_ci {CX0342_RB_GAP_L, 0xff}, 12058c2ecf20Sopenharmony_ci {CX0342_RB_GAP_H, 0x07}, 12068c2ecf20Sopenharmony_ci {CX0342_G_GAP_L, 0xff}, 12078c2ecf20Sopenharmony_ci {CX0342_G_GAP_H, 0x07}, 12088c2ecf20Sopenharmony_ci {CX0342_RST_OVERFLOW_L, 0x5c}, 12098c2ecf20Sopenharmony_ci {CX0342_RST_OVERFLOW_H, 0x01}, 12108c2ecf20Sopenharmony_ci {CX0342_DATA_OVERFLOW_L, 0xfc}, 12118c2ecf20Sopenharmony_ci {CX0342_DATA_OVERFLOW_H, 0x03}, 12128c2ecf20Sopenharmony_ci {CX0342_DATA_UNDERFLOW_L, 0x00}, 12138c2ecf20Sopenharmony_ci {CX0342_DATA_UNDERFLOW_H, 0x00}, 12148c2ecf20Sopenharmony_ci {CX0342_SYS_CTRL_0, 0x40}, 12158c2ecf20Sopenharmony_ci {CX0342_GLOBAL_GAIN, 0x01}, 12168c2ecf20Sopenharmony_ci {CX0342_CLOCK_GEN, 0x00}, 12178c2ecf20Sopenharmony_ci {CX0342_SYS_CTRL_0, 0x02}, 12188c2ecf20Sopenharmony_ci {CX0342_IDLE_CTRL, 0x05}, 12198c2ecf20Sopenharmony_ci {CX0342_ADCGN, 0x00}, 12208c2ecf20Sopenharmony_ci {CX0342_ADC_CTL, 0x00}, 12218c2ecf20Sopenharmony_ci {CX0342_LVRST_BLBIAS, 0x01}, 12228c2ecf20Sopenharmony_ci {CX0342_VTHSEL, 0x0b}, 12238c2ecf20Sopenharmony_ci {CX0342_RAMP_RIV, 0x0b}, 12248c2ecf20Sopenharmony_ci {CX0342_LDOSEL, 0x07}, 12258c2ecf20Sopenharmony_ci {CX0342_SPV_VALUE_L, 0x40}, 12268c2ecf20Sopenharmony_ci {CX0342_SPV_VALUE_H, 0x02}, 12278c2ecf20Sopenharmony_ci 12288c2ecf20Sopenharmony_ci {CX0342_AUTO_ADC_CALIB, 0x81}, 12298c2ecf20Sopenharmony_ci {CX0342_TIMING_EN, 0x01}, 12308c2ecf20Sopenharmony_ci }; 12318c2ecf20Sopenharmony_ci 12328c2ecf20Sopenharmony_ci reg_w_buf(gspca_dev, reg_init_1, ARRAY_SIZE(reg_init_1)); 12338c2ecf20Sopenharmony_ci reg_w_buf(gspca_dev, tp6810_cx_init_common, 12348c2ecf20Sopenharmony_ci ARRAY_SIZE(tp6810_cx_init_common)); 12358c2ecf20Sopenharmony_ci reg_w_buf(gspca_dev, reg_init_2, ARRAY_SIZE(reg_init_2)); 12368c2ecf20Sopenharmony_ci 12378c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x20); /* cx0342 I2C addr */ 12388c2ecf20Sopenharmony_ci i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init)); 12398c2ecf20Sopenharmony_ci i2c_w_buf(gspca_dev, cx0342_timing_seq, ARRAY_SIZE(cx0342_timing_seq)); 12408c2ecf20Sopenharmony_ci} 12418c2ecf20Sopenharmony_ci 12428c2ecf20Sopenharmony_cistatic void soi763a_6810_init(struct gspca_dev *gspca_dev) 12438c2ecf20Sopenharmony_ci{ 12448c2ecf20Sopenharmony_ci static const struct cmd reg_init_1[] = { 12458c2ecf20Sopenharmony_ci {TP6800_R2F_TIMING_CFG, 0x2f}, 12468c2ecf20Sopenharmony_ci {TP6800_R18_GPIO_DATA, 0xe1}, 12478c2ecf20Sopenharmony_ci {0x25, 0x02}, 12488c2ecf20Sopenharmony_ci {TP6800_R21_ENDP_1_CTL, 0x00}, 12498c2ecf20Sopenharmony_ci {TP6800_R3F_FRAME_RATE, 0x80}, 12508c2ecf20Sopenharmony_ci {TP6800_R2F_TIMING_CFG, 0x2f}, 12518c2ecf20Sopenharmony_ci {TP6800_R18_GPIO_DATA, 0xc1}, 12528c2ecf20Sopenharmony_ci }; 12538c2ecf20Sopenharmony_ci static const struct cmd reg_init_2[] = { 12548c2ecf20Sopenharmony_ci {TP6800_R78_FORMAT, 0x54}, 12558c2ecf20Sopenharmony_ci }; 12568c2ecf20Sopenharmony_ci static const struct cmd sensor_init[] = { 12578c2ecf20Sopenharmony_ci {0x00, 0x00}, 12588c2ecf20Sopenharmony_ci {0x01, 0x80}, 12598c2ecf20Sopenharmony_ci {0x02, 0x80}, 12608c2ecf20Sopenharmony_ci {0x03, 0x90}, 12618c2ecf20Sopenharmony_ci {0x04, 0x20}, 12628c2ecf20Sopenharmony_ci {0x05, 0x20}, 12638c2ecf20Sopenharmony_ci {0x06, 0x80}, 12648c2ecf20Sopenharmony_ci {0x07, 0x00}, 12658c2ecf20Sopenharmony_ci {0x08, 0xff}, 12668c2ecf20Sopenharmony_ci {0x09, 0xff}, 12678c2ecf20Sopenharmony_ci {0x0a, 0x76}, /* 7630 = soi673a */ 12688c2ecf20Sopenharmony_ci {0x0b, 0x30}, 12698c2ecf20Sopenharmony_ci {0x0c, 0x20}, 12708c2ecf20Sopenharmony_ci {0x0d, 0x20}, 12718c2ecf20Sopenharmony_ci {0x0e, 0xff}, 12728c2ecf20Sopenharmony_ci {0x0f, 0xff}, 12738c2ecf20Sopenharmony_ci {0x10, 0x41}, 12748c2ecf20Sopenharmony_ci {0x15, 0x14}, 12758c2ecf20Sopenharmony_ci {0x11, 0x40}, 12768c2ecf20Sopenharmony_ci {0x12, 0x48}, 12778c2ecf20Sopenharmony_ci {0x13, 0x80}, 12788c2ecf20Sopenharmony_ci {0x14, 0x80}, 12798c2ecf20Sopenharmony_ci {0x16, 0x03}, 12808c2ecf20Sopenharmony_ci {0x28, 0xb0}, 12818c2ecf20Sopenharmony_ci {0x71, 0x20}, 12828c2ecf20Sopenharmony_ci {0x75, 0x8e}, 12838c2ecf20Sopenharmony_ci {0x17, 0x1b}, 12848c2ecf20Sopenharmony_ci {0x18, 0xbd}, 12858c2ecf20Sopenharmony_ci {0x19, 0x05}, 12868c2ecf20Sopenharmony_ci {0x1a, 0xf6}, 12878c2ecf20Sopenharmony_ci {0x1b, 0x04}, 12888c2ecf20Sopenharmony_ci {0x1c, 0x7f}, /* omnivision */ 12898c2ecf20Sopenharmony_ci {0x1d, 0xa2}, 12908c2ecf20Sopenharmony_ci {0x1e, 0x00}, 12918c2ecf20Sopenharmony_ci {0x1f, 0x00}, 12928c2ecf20Sopenharmony_ci {0x20, 0x45}, 12938c2ecf20Sopenharmony_ci {0x21, 0x80}, 12948c2ecf20Sopenharmony_ci {0x22, 0x80}, 12958c2ecf20Sopenharmony_ci {0x23, 0xee}, 12968c2ecf20Sopenharmony_ci {0x24, 0x50}, 12978c2ecf20Sopenharmony_ci {0x25, 0x7a}, 12988c2ecf20Sopenharmony_ci {0x26, 0xa0}, 12998c2ecf20Sopenharmony_ci {0x27, 0x9a}, 13008c2ecf20Sopenharmony_ci {0x29, 0x30}, 13018c2ecf20Sopenharmony_ci {0x2a, 0x80}, 13028c2ecf20Sopenharmony_ci {0x2b, 0x00}, 13038c2ecf20Sopenharmony_ci {0x2c, 0xac}, 13048c2ecf20Sopenharmony_ci {0x2d, 0x05}, 13058c2ecf20Sopenharmony_ci {0x2e, 0x80}, 13068c2ecf20Sopenharmony_ci {0x2f, 0x3c}, 13078c2ecf20Sopenharmony_ci {0x30, 0x22}, 13088c2ecf20Sopenharmony_ci {0x31, 0x00}, 13098c2ecf20Sopenharmony_ci {0x32, 0x86}, 13108c2ecf20Sopenharmony_ci {0x33, 0x08}, 13118c2ecf20Sopenharmony_ci {0x34, 0xff}, 13128c2ecf20Sopenharmony_ci {0x35, 0xff}, 13138c2ecf20Sopenharmony_ci {0x36, 0xff}, 13148c2ecf20Sopenharmony_ci {0x37, 0xff}, 13158c2ecf20Sopenharmony_ci {0x38, 0xff}, 13168c2ecf20Sopenharmony_ci {0x39, 0xff}, 13178c2ecf20Sopenharmony_ci {0x3a, 0xfe}, 13188c2ecf20Sopenharmony_ci {0x3b, 0xfe}, 13198c2ecf20Sopenharmony_ci {0x3c, 0xfe}, 13208c2ecf20Sopenharmony_ci {0x3d, 0xfe}, 13218c2ecf20Sopenharmony_ci {0x3e, 0xfe}, 13228c2ecf20Sopenharmony_ci {0x3f, 0x71}, 13238c2ecf20Sopenharmony_ci {0x40, 0xff}, 13248c2ecf20Sopenharmony_ci {0x41, 0xff}, 13258c2ecf20Sopenharmony_ci {0x42, 0xff}, 13268c2ecf20Sopenharmony_ci {0x43, 0xff}, 13278c2ecf20Sopenharmony_ci {0x44, 0xff}, 13288c2ecf20Sopenharmony_ci {0x45, 0xff}, 13298c2ecf20Sopenharmony_ci {0x46, 0xff}, 13308c2ecf20Sopenharmony_ci {0x47, 0xff}, 13318c2ecf20Sopenharmony_ci {0x48, 0xff}, 13328c2ecf20Sopenharmony_ci {0x49, 0xff}, 13338c2ecf20Sopenharmony_ci {0x4a, 0xfe}, 13348c2ecf20Sopenharmony_ci {0x4b, 0xff}, 13358c2ecf20Sopenharmony_ci {0x4c, 0x00}, 13368c2ecf20Sopenharmony_ci {0x4d, 0x00}, 13378c2ecf20Sopenharmony_ci {0x4e, 0xff}, 13388c2ecf20Sopenharmony_ci {0x4f, 0xff}, 13398c2ecf20Sopenharmony_ci {0x50, 0xff}, 13408c2ecf20Sopenharmony_ci {0x51, 0xff}, 13418c2ecf20Sopenharmony_ci {0x52, 0xff}, 13428c2ecf20Sopenharmony_ci {0x53, 0xff}, 13438c2ecf20Sopenharmony_ci {0x54, 0xff}, 13448c2ecf20Sopenharmony_ci {0x55, 0xff}, 13458c2ecf20Sopenharmony_ci {0x56, 0xff}, 13468c2ecf20Sopenharmony_ci {0x57, 0xff}, 13478c2ecf20Sopenharmony_ci {0x58, 0xff}, 13488c2ecf20Sopenharmony_ci {0x59, 0xff}, 13498c2ecf20Sopenharmony_ci {0x5a, 0xff}, 13508c2ecf20Sopenharmony_ci {0x5b, 0xfe}, 13518c2ecf20Sopenharmony_ci {0x5c, 0xff}, 13528c2ecf20Sopenharmony_ci {0x5d, 0x8f}, 13538c2ecf20Sopenharmony_ci {0x5e, 0xff}, 13548c2ecf20Sopenharmony_ci {0x5f, 0x8f}, 13558c2ecf20Sopenharmony_ci {0x60, 0xa2}, 13568c2ecf20Sopenharmony_ci {0x61, 0x4a}, 13578c2ecf20Sopenharmony_ci {0x62, 0xf3}, 13588c2ecf20Sopenharmony_ci {0x63, 0x75}, 13598c2ecf20Sopenharmony_ci {0x64, 0xf0}, 13608c2ecf20Sopenharmony_ci {0x65, 0x00}, 13618c2ecf20Sopenharmony_ci {0x66, 0x55}, 13628c2ecf20Sopenharmony_ci {0x67, 0x92}, 13638c2ecf20Sopenharmony_ci {0x68, 0xa0}, 13648c2ecf20Sopenharmony_ci {0x69, 0x4a}, 13658c2ecf20Sopenharmony_ci {0x6a, 0x22}, 13668c2ecf20Sopenharmony_ci {0x6b, 0x00}, 13678c2ecf20Sopenharmony_ci {0x6c, 0x33}, 13688c2ecf20Sopenharmony_ci {0x6d, 0x44}, 13698c2ecf20Sopenharmony_ci {0x6e, 0x22}, 13708c2ecf20Sopenharmony_ci {0x6f, 0x84}, 13718c2ecf20Sopenharmony_ci {0x70, 0x0b}, 13728c2ecf20Sopenharmony_ci {0x72, 0x10}, 13738c2ecf20Sopenharmony_ci {0x73, 0x50}, 13748c2ecf20Sopenharmony_ci {0x74, 0x21}, 13758c2ecf20Sopenharmony_ci {0x76, 0x00}, 13768c2ecf20Sopenharmony_ci {0x77, 0xa5}, 13778c2ecf20Sopenharmony_ci {0x78, 0x80}, 13788c2ecf20Sopenharmony_ci {0x79, 0x80}, 13798c2ecf20Sopenharmony_ci {0x7a, 0x80}, 13808c2ecf20Sopenharmony_ci {0x7b, 0xe2}, 13818c2ecf20Sopenharmony_ci {0x7c, 0x00}, 13828c2ecf20Sopenharmony_ci {0x7d, 0xf7}, 13838c2ecf20Sopenharmony_ci {0x7e, 0x00}, 13848c2ecf20Sopenharmony_ci {0x7f, 0x00}, 13858c2ecf20Sopenharmony_ci }; 13868c2ecf20Sopenharmony_ci 13878c2ecf20Sopenharmony_ci reg_w_buf(gspca_dev, reg_init_1, ARRAY_SIZE(reg_init_1)); 13888c2ecf20Sopenharmony_ci reg_w_buf(gspca_dev, tp6810_ov_init_common, 13898c2ecf20Sopenharmony_ci ARRAY_SIZE(tp6810_ov_init_common)); 13908c2ecf20Sopenharmony_ci reg_w_buf(gspca_dev, reg_init_2, ARRAY_SIZE(reg_init_2)); 13918c2ecf20Sopenharmony_ci 13928c2ecf20Sopenharmony_ci i2c_w(gspca_dev, 0x12, 0x80); /* sensor reset */ 13938c2ecf20Sopenharmony_ci msleep(10); 13948c2ecf20Sopenharmony_ci i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init)); 13958c2ecf20Sopenharmony_ci} 13968c2ecf20Sopenharmony_ci 13978c2ecf20Sopenharmony_ci/* set the gain and exposure */ 13988c2ecf20Sopenharmony_cistatic void setexposure(struct gspca_dev *gspca_dev, s32 expo, s32 gain, 13998c2ecf20Sopenharmony_ci s32 blue, s32 red) 14008c2ecf20Sopenharmony_ci{ 14018c2ecf20Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 14028c2ecf20Sopenharmony_ci 14038c2ecf20Sopenharmony_ci if (sd->sensor == SENSOR_CX0342) { 14048c2ecf20Sopenharmony_ci expo = (expo << 2) - 1; 14058c2ecf20Sopenharmony_ci i2c_w(gspca_dev, CX0342_EXPO_LINE_L, expo); 14068c2ecf20Sopenharmony_ci i2c_w(gspca_dev, CX0342_EXPO_LINE_H, expo >> 8); 14078c2ecf20Sopenharmony_ci if (sd->bridge == BRIDGE_TP6800) 14088c2ecf20Sopenharmony_ci i2c_w(gspca_dev, CX0342_RAW_GBGAIN_H, 14098c2ecf20Sopenharmony_ci gain >> 8); 14108c2ecf20Sopenharmony_ci i2c_w(gspca_dev, CX0342_RAW_GBGAIN_L, gain); 14118c2ecf20Sopenharmony_ci if (sd->bridge == BRIDGE_TP6800) 14128c2ecf20Sopenharmony_ci i2c_w(gspca_dev, CX0342_RAW_GRGAIN_H, 14138c2ecf20Sopenharmony_ci gain >> 8); 14148c2ecf20Sopenharmony_ci i2c_w(gspca_dev, CX0342_RAW_GRGAIN_L, gain); 14158c2ecf20Sopenharmony_ci if (sd->sensor == SENSOR_CX0342) { 14168c2ecf20Sopenharmony_ci if (sd->bridge == BRIDGE_TP6800) 14178c2ecf20Sopenharmony_ci i2c_w(gspca_dev, CX0342_RAW_BGAIN_H, 14188c2ecf20Sopenharmony_ci blue >> 8); 14198c2ecf20Sopenharmony_ci i2c_w(gspca_dev, CX0342_RAW_BGAIN_L, blue); 14208c2ecf20Sopenharmony_ci if (sd->bridge == BRIDGE_TP6800) 14218c2ecf20Sopenharmony_ci i2c_w(gspca_dev, CX0342_RAW_RGAIN_H, 14228c2ecf20Sopenharmony_ci red >> 8); 14238c2ecf20Sopenharmony_ci i2c_w(gspca_dev, CX0342_RAW_RGAIN_L, red); 14248c2ecf20Sopenharmony_ci } 14258c2ecf20Sopenharmony_ci i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 14268c2ecf20Sopenharmony_ci sd->bridge == BRIDGE_TP6800 ? 0x80 : 0x81); 14278c2ecf20Sopenharmony_ci return; 14288c2ecf20Sopenharmony_ci } 14298c2ecf20Sopenharmony_ci 14308c2ecf20Sopenharmony_ci /* soi763a */ 14318c2ecf20Sopenharmony_ci i2c_w(gspca_dev, 0x10, /* AEC_H (exposure time) */ 14328c2ecf20Sopenharmony_ci expo); 14338c2ecf20Sopenharmony_ci/* i2c_w(gspca_dev, 0x76, 0x02); * AEC_L ([1:0] */ 14348c2ecf20Sopenharmony_ci i2c_w(gspca_dev, 0x00, /* gain */ 14358c2ecf20Sopenharmony_ci gain); 14368c2ecf20Sopenharmony_ci} 14378c2ecf20Sopenharmony_ci 14388c2ecf20Sopenharmony_ci/* set the JPEG quantization tables */ 14398c2ecf20Sopenharmony_cistatic void set_dqt(struct gspca_dev *gspca_dev, u8 q) 14408c2ecf20Sopenharmony_ci{ 14418c2ecf20Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 14428c2ecf20Sopenharmony_ci 14438c2ecf20Sopenharmony_ci /* update the jpeg quantization tables */ 14448c2ecf20Sopenharmony_ci gspca_dbg(gspca_dev, D_STREAM, "q %d -> %d\n", sd->quality, q); 14458c2ecf20Sopenharmony_ci sd->quality = q; 14468c2ecf20Sopenharmony_ci if (q > 16) 14478c2ecf20Sopenharmony_ci q = 16; 14488c2ecf20Sopenharmony_ci if (sd->sensor == SENSOR_SOI763A) 14498c2ecf20Sopenharmony_ci jpeg_set_qual(sd->jpeg_hdr, jpeg_q[q]); 14508c2ecf20Sopenharmony_ci else 14518c2ecf20Sopenharmony_ci memcpy(&sd->jpeg_hdr[JPEG_QT0_OFFSET - 1], 14528c2ecf20Sopenharmony_ci DQT[q], sizeof DQT[0]); 14538c2ecf20Sopenharmony_ci} 14548c2ecf20Sopenharmony_ci 14558c2ecf20Sopenharmony_ci/* set the JPEG compression quality factor */ 14568c2ecf20Sopenharmony_cistatic void setquality(struct gspca_dev *gspca_dev, s32 q) 14578c2ecf20Sopenharmony_ci{ 14588c2ecf20Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 14598c2ecf20Sopenharmony_ci 14608c2ecf20Sopenharmony_ci if (q != 16) 14618c2ecf20Sopenharmony_ci q = 15 - q; 14628c2ecf20Sopenharmony_ci 14638c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R7A_BLK_THRLD, 0x00); 14648c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R79_QUALITY, 0x04); 14658c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R79_QUALITY, q); 14668c2ecf20Sopenharmony_ci 14678c2ecf20Sopenharmony_ci /* auto quality */ 14688c2ecf20Sopenharmony_ci if (q == 15 && sd->bridge == BRIDGE_TP6810) { 14698c2ecf20Sopenharmony_ci msleep(4); 14708c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R7A_BLK_THRLD, 0x19); 14718c2ecf20Sopenharmony_ci } 14728c2ecf20Sopenharmony_ci} 14738c2ecf20Sopenharmony_ci 14748c2ecf20Sopenharmony_cistatic const u8 color_null[18] = { 14758c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 14768c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 14778c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 14788c2ecf20Sopenharmony_ci}; 14798c2ecf20Sopenharmony_cistatic const u8 color_gain[NSENSORS][18] = { 14808c2ecf20Sopenharmony_ci[SENSOR_CX0342] = 14818c2ecf20Sopenharmony_ci {0x4c, 0x00, 0xa9, 0x00, 0x31, 0x00, /* Y R/G/B (LE values) */ 14828c2ecf20Sopenharmony_ci 0xb6, 0x03, 0x6c, 0x03, 0xe0, 0x00, /* U R/G/B */ 14838c2ecf20Sopenharmony_ci 0xdf, 0x00, 0x46, 0x03, 0xdc, 0x03}, /* V R/G/B */ 14848c2ecf20Sopenharmony_ci[SENSOR_SOI763A] = 14858c2ecf20Sopenharmony_ci {0x4c, 0x00, 0x95, 0x00, 0x1d, 0x00, /* Y R/G/B (LE values) */ 14868c2ecf20Sopenharmony_ci 0xb6, 0x03, 0x6c, 0x03, 0xd7, 0x00, /* U R/G/B */ 14878c2ecf20Sopenharmony_ci 0xd5, 0x00, 0x46, 0x03, 0xdc, 0x03}, /* V R/G/B */ 14888c2ecf20Sopenharmony_ci}; 14898c2ecf20Sopenharmony_ci 14908c2ecf20Sopenharmony_cistatic void setgamma(struct gspca_dev *gspca_dev, s32 gamma) 14918c2ecf20Sopenharmony_ci{ 14928c2ecf20Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 14938c2ecf20Sopenharmony_ci#define NGAMMA 6 14948c2ecf20Sopenharmony_ci static const u8 gamma_tb[NGAMMA][3][1024] = { 14958c2ecf20Sopenharmony_ci { /* gamma 0 - from tp6800 + soi763a */ 14968c2ecf20Sopenharmony_ci {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 14978c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 14988c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 14998c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 15008c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 15018c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 15028c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 15038c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 15048c2ecf20Sopenharmony_ci 0x02, 0x03, 0x05, 0x07, 0x07, 0x08, 0x09, 0x09, 15058c2ecf20Sopenharmony_ci 0x0a, 0x0c, 0x0c, 0x0d, 0x0e, 0x0e, 0x10, 0x11, 15068c2ecf20Sopenharmony_ci 0x11, 0x12, 0x14, 0x14, 0x15, 0x16, 0x16, 0x17, 15078c2ecf20Sopenharmony_ci 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e, 15088c2ecf20Sopenharmony_ci 0x1e, 0x1f, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x23, 15098c2ecf20Sopenharmony_ci 0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28, 15108c2ecf20Sopenharmony_ci 0x29, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f, 15118c2ecf20Sopenharmony_ci 0x2f, 0x30, 0x30, 0x31, 0x31, 0x33, 0x33, 0x34, 15128c2ecf20Sopenharmony_ci 0x34, 0x34, 0x35, 0x35, 0x37, 0x37, 0x38, 0x38, 15138c2ecf20Sopenharmony_ci 0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3c, 15148c2ecf20Sopenharmony_ci 0x3c, 0x3d, 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x40, 15158c2ecf20Sopenharmony_ci 0x42, 0x42, 0x43, 0x43, 0x44, 0x44, 0x44, 0x45, 15168c2ecf20Sopenharmony_ci 0x45, 0x47, 0x47, 0x47, 0x48, 0x48, 0x49, 0x49, 15178c2ecf20Sopenharmony_ci 0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c, 15188c2ecf20Sopenharmony_ci 0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50, 0x50, 15198c2ecf20Sopenharmony_ci 0x52, 0x52, 0x52, 0x53, 0x53, 0x54, 0x54, 0x54, 15208c2ecf20Sopenharmony_ci 0x55, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58, 0x58, 15218c2ecf20Sopenharmony_ci 0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b, 15228c2ecf20Sopenharmony_ci 0x5b, 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5e, 0x5f, 15238c2ecf20Sopenharmony_ci 0x5f, 0x5f, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61, 15248c2ecf20Sopenharmony_ci 0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x65, 0x65, 15258c2ecf20Sopenharmony_ci 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68, 15268c2ecf20Sopenharmony_ci 0x68, 0x68, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a, 15278c2ecf20Sopenharmony_ci 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e, 15288c2ecf20Sopenharmony_ci 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 15298c2ecf20Sopenharmony_ci 0x70, 0x71, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73, 15308c2ecf20Sopenharmony_ci 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77, 15318c2ecf20Sopenharmony_ci 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79, 15328c2ecf20Sopenharmony_ci 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 15338c2ecf20Sopenharmony_ci 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 15348c2ecf20Sopenharmony_ci 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80, 15358c2ecf20Sopenharmony_ci 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 15368c2ecf20Sopenharmony_ci 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86, 15378c2ecf20Sopenharmony_ci 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89, 15388c2ecf20Sopenharmony_ci 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b, 15398c2ecf20Sopenharmony_ci 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e, 15408c2ecf20Sopenharmony_ci 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90, 15418c2ecf20Sopenharmony_ci 0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91, 15428c2ecf20Sopenharmony_ci 0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 15438c2ecf20Sopenharmony_ci 0x94, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96, 15448c2ecf20Sopenharmony_ci 0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98, 15458c2ecf20Sopenharmony_ci 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a, 15468c2ecf20Sopenharmony_ci 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 15478c2ecf20Sopenharmony_ci 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e, 15488c2ecf20Sopenharmony_ci 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0, 15498c2ecf20Sopenharmony_ci 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 15508c2ecf20Sopenharmony_ci 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 15518c2ecf20Sopenharmony_ci 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 15528c2ecf20Sopenharmony_ci 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8, 15538c2ecf20Sopenharmony_ci 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 15548c2ecf20Sopenharmony_ci 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad, 15558c2ecf20Sopenharmony_ci 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xae, 15568c2ecf20Sopenharmony_ci 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 15578c2ecf20Sopenharmony_ci 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 15588c2ecf20Sopenharmony_ci 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 15598c2ecf20Sopenharmony_ci 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 15608c2ecf20Sopenharmony_ci 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 15618c2ecf20Sopenharmony_ci 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 15628c2ecf20Sopenharmony_ci 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc, 15638c2ecf20Sopenharmony_ci 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 15648c2ecf20Sopenharmony_ci 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 15658c2ecf20Sopenharmony_ci 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 15668c2ecf20Sopenharmony_ci 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 15678c2ecf20Sopenharmony_ci 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5, 15688c2ecf20Sopenharmony_ci 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 15698c2ecf20Sopenharmony_ci 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9, 15708c2ecf20Sopenharmony_ci 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca, 15718c2ecf20Sopenharmony_ci 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 15728c2ecf20Sopenharmony_ci 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 15738c2ecf20Sopenharmony_ci 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 15748c2ecf20Sopenharmony_ci 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 15758c2ecf20Sopenharmony_ci 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 15768c2ecf20Sopenharmony_ci 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 15778c2ecf20Sopenharmony_ci 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 15788c2ecf20Sopenharmony_ci 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 15798c2ecf20Sopenharmony_ci 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 15808c2ecf20Sopenharmony_ci 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd, 15818c2ecf20Sopenharmony_ci 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf, 15828c2ecf20Sopenharmony_ci 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 15838c2ecf20Sopenharmony_ci 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 15848c2ecf20Sopenharmony_ci 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 15858c2ecf20Sopenharmony_ci 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 15868c2ecf20Sopenharmony_ci 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 15878c2ecf20Sopenharmony_ci 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 15888c2ecf20Sopenharmony_ci 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 15898c2ecf20Sopenharmony_ci 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 15908c2ecf20Sopenharmony_ci 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 15918c2ecf20Sopenharmony_ci 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 15928c2ecf20Sopenharmony_ci 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 15938c2ecf20Sopenharmony_ci 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 15948c2ecf20Sopenharmony_ci 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 15958c2ecf20Sopenharmony_ci 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 15968c2ecf20Sopenharmony_ci 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 15978c2ecf20Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 15988c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 15998c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 16008c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 16018c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 16028c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 16038c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 16048c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 16058c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 16068c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 16078c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 16088c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 16098c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 16108c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 16118c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 16128c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 16138c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 16148c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 16158c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 16168c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 16178c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 16188c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 16198c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 16208c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 16218c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 16228c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 16238c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}, 16248c2ecf20Sopenharmony_ci {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 16258c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 16268c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 16278c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 16288c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 16298c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 16308c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 16318c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 16328c2ecf20Sopenharmony_ci 0x02, 0x03, 0x05, 0x07, 0x07, 0x08, 0x09, 0x09, 16338c2ecf20Sopenharmony_ci 0x0a, 0x0c, 0x0c, 0x0d, 0x0e, 0x0e, 0x10, 0x11, 16348c2ecf20Sopenharmony_ci 0x11, 0x12, 0x14, 0x14, 0x15, 0x16, 0x16, 0x17, 16358c2ecf20Sopenharmony_ci 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e, 16368c2ecf20Sopenharmony_ci 0x1e, 0x1f, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x23, 16378c2ecf20Sopenharmony_ci 0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28, 16388c2ecf20Sopenharmony_ci 0x29, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f, 16398c2ecf20Sopenharmony_ci 0x2f, 0x30, 0x30, 0x31, 0x31, 0x33, 0x33, 0x34, 16408c2ecf20Sopenharmony_ci 0x34, 0x34, 0x35, 0x35, 0x37, 0x37, 0x38, 0x38, 16418c2ecf20Sopenharmony_ci 0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3c, 16428c2ecf20Sopenharmony_ci 0x3c, 0x3d, 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x40, 16438c2ecf20Sopenharmony_ci 0x42, 0x42, 0x43, 0x43, 0x44, 0x44, 0x44, 0x45, 16448c2ecf20Sopenharmony_ci 0x45, 0x47, 0x47, 0x47, 0x48, 0x48, 0x49, 0x49, 16458c2ecf20Sopenharmony_ci 0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c, 16468c2ecf20Sopenharmony_ci 0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50, 0x50, 16478c2ecf20Sopenharmony_ci 0x52, 0x52, 0x52, 0x53, 0x53, 0x54, 0x54, 0x54, 16488c2ecf20Sopenharmony_ci 0x55, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58, 0x58, 16498c2ecf20Sopenharmony_ci 0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b, 16508c2ecf20Sopenharmony_ci 0x5b, 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5e, 0x5f, 16518c2ecf20Sopenharmony_ci 0x5f, 0x5f, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61, 16528c2ecf20Sopenharmony_ci 0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x65, 0x65, 16538c2ecf20Sopenharmony_ci 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68, 16548c2ecf20Sopenharmony_ci 0x68, 0x68, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a, 16558c2ecf20Sopenharmony_ci 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e, 16568c2ecf20Sopenharmony_ci 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 16578c2ecf20Sopenharmony_ci 0x70, 0x71, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73, 16588c2ecf20Sopenharmony_ci 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77, 16598c2ecf20Sopenharmony_ci 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79, 16608c2ecf20Sopenharmony_ci 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 16618c2ecf20Sopenharmony_ci 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 16628c2ecf20Sopenharmony_ci 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80, 16638c2ecf20Sopenharmony_ci 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 16648c2ecf20Sopenharmony_ci 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86, 16658c2ecf20Sopenharmony_ci 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89, 16668c2ecf20Sopenharmony_ci 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b, 16678c2ecf20Sopenharmony_ci 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e, 16688c2ecf20Sopenharmony_ci 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90, 16698c2ecf20Sopenharmony_ci 0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91, 16708c2ecf20Sopenharmony_ci 0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 16718c2ecf20Sopenharmony_ci 0x94, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96, 16728c2ecf20Sopenharmony_ci 0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98, 16738c2ecf20Sopenharmony_ci 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a, 16748c2ecf20Sopenharmony_ci 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 16758c2ecf20Sopenharmony_ci 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e, 16768c2ecf20Sopenharmony_ci 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0, 16778c2ecf20Sopenharmony_ci 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 16788c2ecf20Sopenharmony_ci 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 16798c2ecf20Sopenharmony_ci 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 16808c2ecf20Sopenharmony_ci 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8, 16818c2ecf20Sopenharmony_ci 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 16828c2ecf20Sopenharmony_ci 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad, 16838c2ecf20Sopenharmony_ci 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xae, 16848c2ecf20Sopenharmony_ci 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 16858c2ecf20Sopenharmony_ci 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 16868c2ecf20Sopenharmony_ci 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 16878c2ecf20Sopenharmony_ci 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 16888c2ecf20Sopenharmony_ci 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 16898c2ecf20Sopenharmony_ci 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 16908c2ecf20Sopenharmony_ci 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc, 16918c2ecf20Sopenharmony_ci 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 16928c2ecf20Sopenharmony_ci 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 16938c2ecf20Sopenharmony_ci 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 16948c2ecf20Sopenharmony_ci 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 16958c2ecf20Sopenharmony_ci 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5, 16968c2ecf20Sopenharmony_ci 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 16978c2ecf20Sopenharmony_ci 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9, 16988c2ecf20Sopenharmony_ci 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca, 16998c2ecf20Sopenharmony_ci 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 17008c2ecf20Sopenharmony_ci 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 17018c2ecf20Sopenharmony_ci 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 17028c2ecf20Sopenharmony_ci 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 17038c2ecf20Sopenharmony_ci 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 17048c2ecf20Sopenharmony_ci 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 17058c2ecf20Sopenharmony_ci 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 17068c2ecf20Sopenharmony_ci 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 17078c2ecf20Sopenharmony_ci 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 17088c2ecf20Sopenharmony_ci 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd, 17098c2ecf20Sopenharmony_ci 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf, 17108c2ecf20Sopenharmony_ci 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 17118c2ecf20Sopenharmony_ci 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 17128c2ecf20Sopenharmony_ci 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 17138c2ecf20Sopenharmony_ci 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 17148c2ecf20Sopenharmony_ci 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 17158c2ecf20Sopenharmony_ci 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 17168c2ecf20Sopenharmony_ci 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 17178c2ecf20Sopenharmony_ci 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 17188c2ecf20Sopenharmony_ci 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 17198c2ecf20Sopenharmony_ci 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 17208c2ecf20Sopenharmony_ci 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 17218c2ecf20Sopenharmony_ci 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 17228c2ecf20Sopenharmony_ci 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 17238c2ecf20Sopenharmony_ci 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 17248c2ecf20Sopenharmony_ci 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 17258c2ecf20Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 17268c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 17278c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 17288c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 17298c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 17308c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 17318c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 17328c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 17338c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 17348c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 17358c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 17368c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 17378c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 17388c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 17398c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 17408c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 17418c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 17428c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 17438c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 17448c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 17458c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 17468c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 17478c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 17488c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 17498c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 17508c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 17518c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}, 17528c2ecf20Sopenharmony_ci {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 17538c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 17548c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 17558c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 17568c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 17578c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 17588c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 17598c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 17608c2ecf20Sopenharmony_ci 0x02, 0x03, 0x05, 0x07, 0x07, 0x08, 0x09, 0x09, 17618c2ecf20Sopenharmony_ci 0x0a, 0x0c, 0x0c, 0x0d, 0x0e, 0x0e, 0x10, 0x11, 17628c2ecf20Sopenharmony_ci 0x11, 0x12, 0x14, 0x14, 0x15, 0x16, 0x16, 0x17, 17638c2ecf20Sopenharmony_ci 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e, 17648c2ecf20Sopenharmony_ci 0x1e, 0x1f, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x23, 17658c2ecf20Sopenharmony_ci 0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28, 17668c2ecf20Sopenharmony_ci 0x29, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f, 17678c2ecf20Sopenharmony_ci 0x2f, 0x30, 0x30, 0x31, 0x31, 0x33, 0x33, 0x34, 17688c2ecf20Sopenharmony_ci 0x34, 0x34, 0x35, 0x35, 0x37, 0x37, 0x38, 0x38, 17698c2ecf20Sopenharmony_ci 0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3c, 17708c2ecf20Sopenharmony_ci 0x3c, 0x3d, 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x40, 17718c2ecf20Sopenharmony_ci 0x42, 0x42, 0x43, 0x43, 0x44, 0x44, 0x44, 0x45, 17728c2ecf20Sopenharmony_ci 0x45, 0x47, 0x47, 0x47, 0x48, 0x48, 0x49, 0x49, 17738c2ecf20Sopenharmony_ci 0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c, 17748c2ecf20Sopenharmony_ci 0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50, 0x50, 17758c2ecf20Sopenharmony_ci 0x52, 0x52, 0x52, 0x53, 0x53, 0x54, 0x54, 0x54, 17768c2ecf20Sopenharmony_ci 0x55, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58, 0x58, 17778c2ecf20Sopenharmony_ci 0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b, 17788c2ecf20Sopenharmony_ci 0x5b, 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5e, 0x5f, 17798c2ecf20Sopenharmony_ci 0x5f, 0x5f, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61, 17808c2ecf20Sopenharmony_ci 0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x65, 0x65, 17818c2ecf20Sopenharmony_ci 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68, 17828c2ecf20Sopenharmony_ci 0x68, 0x68, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a, 17838c2ecf20Sopenharmony_ci 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e, 17848c2ecf20Sopenharmony_ci 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 17858c2ecf20Sopenharmony_ci 0x70, 0x71, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73, 17868c2ecf20Sopenharmony_ci 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x76, 17878c2ecf20Sopenharmony_ci 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79, 17888c2ecf20Sopenharmony_ci 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 17898c2ecf20Sopenharmony_ci 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 17908c2ecf20Sopenharmony_ci 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80, 17918c2ecf20Sopenharmony_ci 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 17928c2ecf20Sopenharmony_ci 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86, 17938c2ecf20Sopenharmony_ci 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89, 17948c2ecf20Sopenharmony_ci 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b, 17958c2ecf20Sopenharmony_ci 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e, 17968c2ecf20Sopenharmony_ci 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90, 17978c2ecf20Sopenharmony_ci 0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91, 17988c2ecf20Sopenharmony_ci 0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 17998c2ecf20Sopenharmony_ci 0x94, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96, 18008c2ecf20Sopenharmony_ci 0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98, 18018c2ecf20Sopenharmony_ci 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a, 18028c2ecf20Sopenharmony_ci 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 18038c2ecf20Sopenharmony_ci 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e, 18048c2ecf20Sopenharmony_ci 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0, 18058c2ecf20Sopenharmony_ci 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 18068c2ecf20Sopenharmony_ci 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 18078c2ecf20Sopenharmony_ci 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 18088c2ecf20Sopenharmony_ci 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8, 18098c2ecf20Sopenharmony_ci 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 18108c2ecf20Sopenharmony_ci 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad, 18118c2ecf20Sopenharmony_ci 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xae, 18128c2ecf20Sopenharmony_ci 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 18138c2ecf20Sopenharmony_ci 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 18148c2ecf20Sopenharmony_ci 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 18158c2ecf20Sopenharmony_ci 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 18168c2ecf20Sopenharmony_ci 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 18178c2ecf20Sopenharmony_ci 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 18188c2ecf20Sopenharmony_ci 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc, 18198c2ecf20Sopenharmony_ci 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 18208c2ecf20Sopenharmony_ci 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 18218c2ecf20Sopenharmony_ci 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 18228c2ecf20Sopenharmony_ci 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 18238c2ecf20Sopenharmony_ci 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5, 18248c2ecf20Sopenharmony_ci 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 18258c2ecf20Sopenharmony_ci 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9, 18268c2ecf20Sopenharmony_ci 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca, 18278c2ecf20Sopenharmony_ci 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 18288c2ecf20Sopenharmony_ci 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 18298c2ecf20Sopenharmony_ci 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 18308c2ecf20Sopenharmony_ci 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 18318c2ecf20Sopenharmony_ci 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 18328c2ecf20Sopenharmony_ci 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 18338c2ecf20Sopenharmony_ci 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 18348c2ecf20Sopenharmony_ci 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 18358c2ecf20Sopenharmony_ci 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 18368c2ecf20Sopenharmony_ci 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd, 18378c2ecf20Sopenharmony_ci 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf, 18388c2ecf20Sopenharmony_ci 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 18398c2ecf20Sopenharmony_ci 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 18408c2ecf20Sopenharmony_ci 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 18418c2ecf20Sopenharmony_ci 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 18428c2ecf20Sopenharmony_ci 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 18438c2ecf20Sopenharmony_ci 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 18448c2ecf20Sopenharmony_ci 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 18458c2ecf20Sopenharmony_ci 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 18468c2ecf20Sopenharmony_ci 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 18478c2ecf20Sopenharmony_ci 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 18488c2ecf20Sopenharmony_ci 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 18498c2ecf20Sopenharmony_ci 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 18508c2ecf20Sopenharmony_ci 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 18518c2ecf20Sopenharmony_ci 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 18528c2ecf20Sopenharmony_ci 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 18538c2ecf20Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 18548c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 18558c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 18568c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 18578c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 18588c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 18598c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 18608c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 18618c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 18628c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 18638c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 18648c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 18658c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 18668c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 18678c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 18688c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 18698c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 18708c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 18718c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 18728c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 18738c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 18748c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 18758c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 18768c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 18778c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 18788c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 18798c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb} 18808c2ecf20Sopenharmony_ci }, 18818c2ecf20Sopenharmony_ci { /* gamma 1 - from tp6810 + soi763a */ 18828c2ecf20Sopenharmony_ci {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 18838c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 18848c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 18858c2ecf20Sopenharmony_ci 0x01, 0x02, 0x03, 0x05, 0x07, 0x08, 0x09, 0x0a, 18868c2ecf20Sopenharmony_ci 0x0c, 0x0d, 0x0e, 0x10, 0x11, 0x12, 0x14, 0x15, 18878c2ecf20Sopenharmony_ci 0x16, 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1c, 0x1e, 18888c2ecf20Sopenharmony_ci 0x1f, 0x20, 0x22, 0x22, 0x23, 0x25, 0x26, 0x27, 18898c2ecf20Sopenharmony_ci 0x27, 0x28, 0x29, 0x2b, 0x2b, 0x2c, 0x2d, 0x2f, 18908c2ecf20Sopenharmony_ci 0x2f, 0x30, 0x31, 0x33, 0x33, 0x34, 0x35, 0x35, 18918c2ecf20Sopenharmony_ci 0x37, 0x38, 0x38, 0x39, 0x3a, 0x3a, 0x3b, 0x3c, 18928c2ecf20Sopenharmony_ci 0x3c, 0x3d, 0x3f, 0x3f, 0x40, 0x42, 0x42, 0x43, 18938c2ecf20Sopenharmony_ci 0x43, 0x44, 0x45, 0x45, 0x47, 0x47, 0x48, 0x49, 18948c2ecf20Sopenharmony_ci 0x49, 0x4a, 0x4a, 0x4b, 0x4b, 0x4c, 0x4d, 0x4d, 18958c2ecf20Sopenharmony_ci 0x4f, 0x4f, 0x50, 0x50, 0x52, 0x52, 0x53, 0x53, 18968c2ecf20Sopenharmony_ci 0x54, 0x54, 0x55, 0x56, 0x56, 0x58, 0x58, 0x59, 18978c2ecf20Sopenharmony_ci 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c, 0x5e, 18988c2ecf20Sopenharmony_ci 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61, 0x61, 18998c2ecf20Sopenharmony_ci 0x62, 0x62, 0x63, 0x63, 0x65, 0x65, 0x65, 0x66, 19008c2ecf20Sopenharmony_ci 0x66, 0x67, 0x67, 0x68, 0x68, 0x69, 0x69, 0x69, 19018c2ecf20Sopenharmony_ci 0x6a, 0x6a, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e, 19028c2ecf20Sopenharmony_ci 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x71, 19038c2ecf20Sopenharmony_ci 0x73, 0x73, 0x73, 0x74, 0x74, 0x74, 0x75, 0x75, 19048c2ecf20Sopenharmony_ci 0x77, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 0x79, 19058c2ecf20Sopenharmony_ci 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 19068c2ecf20Sopenharmony_ci 0x7d, 0x7d, 0x7d, 0x7f, 0x7f, 0x80, 0x80, 0x80, 19078c2ecf20Sopenharmony_ci 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x84, 0x84, 19088c2ecf20Sopenharmony_ci 0x84, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x88, 19098c2ecf20Sopenharmony_ci 0x88, 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 19108c2ecf20Sopenharmony_ci 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 19118c2ecf20Sopenharmony_ci 0x8e, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x91, 19128c2ecf20Sopenharmony_ci 0x91, 0x91, 0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 19138c2ecf20Sopenharmony_ci 0x93, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x97, 19148c2ecf20Sopenharmony_ci 0x97, 0x97, 0x97, 0x98, 0x98, 0x98, 0x99, 0x99, 19158c2ecf20Sopenharmony_ci 0x99, 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 19168c2ecf20Sopenharmony_ci 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9e, 19178c2ecf20Sopenharmony_ci 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 19188c2ecf20Sopenharmony_ci 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 19198c2ecf20Sopenharmony_ci 0xa3, 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 19208c2ecf20Sopenharmony_ci 0xa5, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8, 19218c2ecf20Sopenharmony_ci 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xab, 19228c2ecf20Sopenharmony_ci 0xac, 0xac, 0xac, 0xad, 0xad, 0xad, 0xad, 0xae, 19238c2ecf20Sopenharmony_ci 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 19248c2ecf20Sopenharmony_ci 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 19258c2ecf20Sopenharmony_ci 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 19268c2ecf20Sopenharmony_ci 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 19278c2ecf20Sopenharmony_ci 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 19288c2ecf20Sopenharmony_ci 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba, 19298c2ecf20Sopenharmony_ci 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 19308c2ecf20Sopenharmony_ci 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 19318c2ecf20Sopenharmony_ci 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 19328c2ecf20Sopenharmony_ci 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 19338c2ecf20Sopenharmony_ci 0xc4, 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 19348c2ecf20Sopenharmony_ci 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 19358c2ecf20Sopenharmony_ci 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 19368c2ecf20Sopenharmony_ci 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 19378c2ecf20Sopenharmony_ci 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 19388c2ecf20Sopenharmony_ci 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 19398c2ecf20Sopenharmony_ci 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 19408c2ecf20Sopenharmony_ci 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 19418c2ecf20Sopenharmony_ci 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 19428c2ecf20Sopenharmony_ci 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 19438c2ecf20Sopenharmony_ci 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 19448c2ecf20Sopenharmony_ci 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 19458c2ecf20Sopenharmony_ci 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 19468c2ecf20Sopenharmony_ci 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 19478c2ecf20Sopenharmony_ci 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 19488c2ecf20Sopenharmony_ci 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 19498c2ecf20Sopenharmony_ci 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 19508c2ecf20Sopenharmony_ci 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 19518c2ecf20Sopenharmony_ci 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 19528c2ecf20Sopenharmony_ci 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 19538c2ecf20Sopenharmony_ci 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 19548c2ecf20Sopenharmony_ci 0xec, 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 19558c2ecf20Sopenharmony_ci 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef, 19568c2ecf20Sopenharmony_ci 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 19578c2ecf20Sopenharmony_ci 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 19588c2ecf20Sopenharmony_ci 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 19598c2ecf20Sopenharmony_ci 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 19608c2ecf20Sopenharmony_ci 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 19618c2ecf20Sopenharmony_ci 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 19628c2ecf20Sopenharmony_ci 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 19638c2ecf20Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 19648c2ecf20Sopenharmony_ci 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 19658c2ecf20Sopenharmony_ci 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 19668c2ecf20Sopenharmony_ci 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 19678c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19688c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19698c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19708c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19718c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19728c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19738c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19748c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19758c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19768c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19778c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19788c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19798c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19808c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19818c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19828c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19838c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19848c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19858c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19868c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19878c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19888c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19898c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19908c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19918c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19928c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19938c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19948c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19958c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19968c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19978c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19988c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 19998c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 20008c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 20018c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 20028c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 20038c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 20048c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 20058c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 20068c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 20078c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 20088c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 20098c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, 20108c2ecf20Sopenharmony_ci {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 20118c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 20128c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 20138c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 20148c2ecf20Sopenharmony_ci 0x05, 0x07, 0x07, 0x08, 0x09, 0x0a, 0x0c, 0x0d, 20158c2ecf20Sopenharmony_ci 0x0e, 0x10, 0x10, 0x11, 0x12, 0x14, 0x15, 0x15, 20168c2ecf20Sopenharmony_ci 0x16, 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1c, 0x1e, 20178c2ecf20Sopenharmony_ci 0x1e, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x25, 0x25, 20188c2ecf20Sopenharmony_ci 0x26, 0x27, 0x27, 0x28, 0x29, 0x29, 0x2b, 0x2c, 20198c2ecf20Sopenharmony_ci 0x2c, 0x2d, 0x2d, 0x2f, 0x30, 0x30, 0x31, 0x31, 20208c2ecf20Sopenharmony_ci 0x33, 0x34, 0x34, 0x35, 0x35, 0x37, 0x38, 0x38, 20218c2ecf20Sopenharmony_ci 0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d, 20228c2ecf20Sopenharmony_ci 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x42, 0x42, 0x43, 20238c2ecf20Sopenharmony_ci 0x43, 0x44, 0x44, 0x45, 0x45, 0x47, 0x47, 0x48, 20248c2ecf20Sopenharmony_ci 0x48, 0x49, 0x49, 0x4a, 0x4a, 0x4b, 0x4b, 0x4c, 20258c2ecf20Sopenharmony_ci 0x4c, 0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50, 20268c2ecf20Sopenharmony_ci 0x52, 0x52, 0x53, 0x53, 0x53, 0x54, 0x54, 0x55, 20278c2ecf20Sopenharmony_ci 0x55, 0x56, 0x56, 0x56, 0x58, 0x58, 0x59, 0x59, 20288c2ecf20Sopenharmony_ci 0x5a, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c, 0x5c, 20298c2ecf20Sopenharmony_ci 0x5e, 0x5e, 0x5f, 0x5f, 0x5f, 0x60, 0x60, 0x60, 20308c2ecf20Sopenharmony_ci 0x61, 0x61, 0x62, 0x62, 0x62, 0x63, 0x63, 0x65, 20318c2ecf20Sopenharmony_ci 0x65, 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 20328c2ecf20Sopenharmony_ci 0x68, 0x68, 0x69, 0x69, 0x69, 0x6a, 0x6a, 0x6a, 20338c2ecf20Sopenharmony_ci 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 20348c2ecf20Sopenharmony_ci 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x70, 0x71, 20358c2ecf20Sopenharmony_ci 0x71, 0x71, 0x73, 0x73, 0x73, 0x74, 0x74, 0x74, 20368c2ecf20Sopenharmony_ci 0x75, 0x75, 0x75, 0x77, 0x77, 0x77, 0x78, 0x78, 20378c2ecf20Sopenharmony_ci 0x78, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 20388c2ecf20Sopenharmony_ci 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 20398c2ecf20Sopenharmony_ci 0x7d, 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 20408c2ecf20Sopenharmony_ci 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 20418c2ecf20Sopenharmony_ci 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86, 20428c2ecf20Sopenharmony_ci 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89, 0x89, 20438c2ecf20Sopenharmony_ci 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 20448c2ecf20Sopenharmony_ci 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 20458c2ecf20Sopenharmony_ci 0x8e, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90, 20468c2ecf20Sopenharmony_ci 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92, 20478c2ecf20Sopenharmony_ci 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94, 20488c2ecf20Sopenharmony_ci 0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x97, 20498c2ecf20Sopenharmony_ci 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99, 20508c2ecf20Sopenharmony_ci 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 20518c2ecf20Sopenharmony_ci 0x9b, 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 20528c2ecf20Sopenharmony_ci 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 20538c2ecf20Sopenharmony_ci 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 20548c2ecf20Sopenharmony_ci 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 20558c2ecf20Sopenharmony_ci 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 20568c2ecf20Sopenharmony_ci 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 20578c2ecf20Sopenharmony_ci 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 20588c2ecf20Sopenharmony_ci 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad, 20598c2ecf20Sopenharmony_ci 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 20608c2ecf20Sopenharmony_ci 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 20618c2ecf20Sopenharmony_ci 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 20628c2ecf20Sopenharmony_ci 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 20638c2ecf20Sopenharmony_ci 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 20648c2ecf20Sopenharmony_ci 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 20658c2ecf20Sopenharmony_ci 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 20668c2ecf20Sopenharmony_ci 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc, 20678c2ecf20Sopenharmony_ci 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 20688c2ecf20Sopenharmony_ci 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 20698c2ecf20Sopenharmony_ci 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 20708c2ecf20Sopenharmony_ci 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 20718c2ecf20Sopenharmony_ci 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 20728c2ecf20Sopenharmony_ci 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 20738c2ecf20Sopenharmony_ci 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 20748c2ecf20Sopenharmony_ci 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 20758c2ecf20Sopenharmony_ci 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 20768c2ecf20Sopenharmony_ci 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 20778c2ecf20Sopenharmony_ci 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xce, 0xcf, 20788c2ecf20Sopenharmony_ci 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 20798c2ecf20Sopenharmony_ci 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 20808c2ecf20Sopenharmony_ci 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 20818c2ecf20Sopenharmony_ci 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 20828c2ecf20Sopenharmony_ci 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 20838c2ecf20Sopenharmony_ci 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 20848c2ecf20Sopenharmony_ci 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb, 20858c2ecf20Sopenharmony_ci 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd, 20868c2ecf20Sopenharmony_ci 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf, 20878c2ecf20Sopenharmony_ci 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 20888c2ecf20Sopenharmony_ci 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 20898c2ecf20Sopenharmony_ci 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 20908c2ecf20Sopenharmony_ci 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 20918c2ecf20Sopenharmony_ci 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 20928c2ecf20Sopenharmony_ci 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 20938c2ecf20Sopenharmony_ci 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 20948c2ecf20Sopenharmony_ci 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 20958c2ecf20Sopenharmony_ci 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed, 20968c2ecf20Sopenharmony_ci 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 20978c2ecf20Sopenharmony_ci 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 20988c2ecf20Sopenharmony_ci 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 20998c2ecf20Sopenharmony_ci 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 21008c2ecf20Sopenharmony_ci 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 21018c2ecf20Sopenharmony_ci 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 21028c2ecf20Sopenharmony_ci 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 21038c2ecf20Sopenharmony_ci 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 21048c2ecf20Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 21058c2ecf20Sopenharmony_ci 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc, 21068c2ecf20Sopenharmony_ci 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 21078c2ecf20Sopenharmony_ci 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 21088c2ecf20Sopenharmony_ci 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 21098c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21108c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21118c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21128c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21138c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21148c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21158c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21168c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21178c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21188c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21198c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21208c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21218c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21228c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21238c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21248c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21258c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21268c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21278c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21288c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21298c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21308c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21318c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21328c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21338c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21348c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21358c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21368c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21378c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, 21388c2ecf20Sopenharmony_ci {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 21398c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 21408c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 21418c2ecf20Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 21428c2ecf20Sopenharmony_ci 0x00, 0x00, 0x01, 0x02, 0x03, 0x05, 0x05, 0x07, 21438c2ecf20Sopenharmony_ci 0x08, 0x09, 0x0a, 0x0a, 0x0c, 0x0d, 0x0e, 0x0e, 21448c2ecf20Sopenharmony_ci 0x10, 0x11, 0x12, 0x12, 0x14, 0x15, 0x16, 0x16, 21458c2ecf20Sopenharmony_ci 0x17, 0x18, 0x18, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e, 21468c2ecf20Sopenharmony_ci 0x1e, 0x1f, 0x1f, 0x20, 0x22, 0x22, 0x23, 0x23, 21478c2ecf20Sopenharmony_ci 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x29, 0x29, 21488c2ecf20Sopenharmony_ci 0x2b, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f, 0x30, 21498c2ecf20Sopenharmony_ci 0x30, 0x31, 0x31, 0x33, 0x33, 0x34, 0x34, 0x35, 21508c2ecf20Sopenharmony_ci 0x35, 0x37, 0x37, 0x38, 0x38, 0x39, 0x39, 0x3a, 21518c2ecf20Sopenharmony_ci 0x3a, 0x3b, 0x3b, 0x3b, 0x3c, 0x3c, 0x3d, 0x3d, 21528c2ecf20Sopenharmony_ci 0x3f, 0x3f, 0x40, 0x40, 0x42, 0x42, 0x42, 0x43, 21538c2ecf20Sopenharmony_ci 0x43, 0x44, 0x44, 0x45, 0x45, 0x47, 0x47, 0x47, 21548c2ecf20Sopenharmony_ci 0x48, 0x48, 0x49, 0x49, 0x49, 0x4a, 0x4a, 0x4b, 21558c2ecf20Sopenharmony_ci 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4d, 0x4d, 0x4f, 21568c2ecf20Sopenharmony_ci 0x4f, 0x50, 0x50, 0x50, 0x52, 0x52, 0x52, 0x53, 21578c2ecf20Sopenharmony_ci 0x53, 0x54, 0x54, 0x54, 0x55, 0x55, 0x55, 0x56, 21588c2ecf20Sopenharmony_ci 0x56, 0x58, 0x58, 0x58, 0x59, 0x59, 0x59, 0x5a, 21598c2ecf20Sopenharmony_ci 0x5a, 0x5a, 0x5b, 0x5b, 0x5b, 0x5c, 0x5c, 0x5c, 21608c2ecf20Sopenharmony_ci 0x5e, 0x5e, 0x5e, 0x5f, 0x5f, 0x5f, 0x60, 0x60, 21618c2ecf20Sopenharmony_ci 0x60, 0x61, 0x61, 0x61, 0x62, 0x62, 0x62, 0x63, 21628c2ecf20Sopenharmony_ci 0x63, 0x63, 0x65, 0x65, 0x65, 0x66, 0x66, 0x66, 21638c2ecf20Sopenharmony_ci 0x66, 0x67, 0x67, 0x67, 0x68, 0x68, 0x68, 0x69, 21648c2ecf20Sopenharmony_ci 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6a, 0x6c, 0x6c, 21658c2ecf20Sopenharmony_ci 0x6c, 0x6d, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6e, 21668c2ecf20Sopenharmony_ci 0x6f, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x70, 0x71, 21678c2ecf20Sopenharmony_ci 0x71, 0x71, 0x71, 0x73, 0x73, 0x73, 0x74, 0x74, 21688c2ecf20Sopenharmony_ci 0x74, 0x74, 0x75, 0x75, 0x75, 0x75, 0x77, 0x77, 21698c2ecf20Sopenharmony_ci 0x77, 0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 21708c2ecf20Sopenharmony_ci 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 21718c2ecf20Sopenharmony_ci 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 21728c2ecf20Sopenharmony_ci 0x7d, 0x7f, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 21738c2ecf20Sopenharmony_ci 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 21748c2ecf20Sopenharmony_ci 0x82, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 21758c2ecf20Sopenharmony_ci 0x85, 0x86, 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 21768c2ecf20Sopenharmony_ci 0x88, 0x88, 0x89, 0x89, 0x89, 0x89, 0x8a, 0x8a, 21778c2ecf20Sopenharmony_ci 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8d, 21788c2ecf20Sopenharmony_ci 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 21798c2ecf20Sopenharmony_ci 0x8f, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90, 21808c2ecf20Sopenharmony_ci 0x90, 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 21818c2ecf20Sopenharmony_ci 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 21828c2ecf20Sopenharmony_ci 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96, 0x96, 21838c2ecf20Sopenharmony_ci 0x97, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98, 21848c2ecf20Sopenharmony_ci 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a, 21858c2ecf20Sopenharmony_ci 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 21868c2ecf20Sopenharmony_ci 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 21878c2ecf20Sopenharmony_ci 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 21888c2ecf20Sopenharmony_ci 0xa0, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 21898c2ecf20Sopenharmony_ci 0xa1, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 21908c2ecf20Sopenharmony_ci 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 21918c2ecf20Sopenharmony_ci 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 21928c2ecf20Sopenharmony_ci 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 21938c2ecf20Sopenharmony_ci 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 21948c2ecf20Sopenharmony_ci 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 21958c2ecf20Sopenharmony_ci 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 21968c2ecf20Sopenharmony_ci 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 21978c2ecf20Sopenharmony_ci 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 21988c2ecf20Sopenharmony_ci 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 21998c2ecf20Sopenharmony_ci 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 22008c2ecf20Sopenharmony_ci 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 22018c2ecf20Sopenharmony_ci 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 22028c2ecf20Sopenharmony_ci 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 22038c2ecf20Sopenharmony_ci 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 22048c2ecf20Sopenharmony_ci 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 22058c2ecf20Sopenharmony_ci 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 22068c2ecf20Sopenharmony_ci 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 22078c2ecf20Sopenharmony_ci 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 22088c2ecf20Sopenharmony_ci 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 22098c2ecf20Sopenharmony_ci 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 22108c2ecf20Sopenharmony_ci 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 22118c2ecf20Sopenharmony_ci 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 22128c2ecf20Sopenharmony_ci 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 22138c2ecf20Sopenharmony_ci 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 22148c2ecf20Sopenharmony_ci 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 22158c2ecf20Sopenharmony_ci 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 22168c2ecf20Sopenharmony_ci 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 22178c2ecf20Sopenharmony_ci 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 22188c2ecf20Sopenharmony_ci 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 22198c2ecf20Sopenharmony_ci 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 22208c2ecf20Sopenharmony_ci 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7, 22218c2ecf20Sopenharmony_ci 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 22228c2ecf20Sopenharmony_ci 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 22238c2ecf20Sopenharmony_ci 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 22248c2ecf20Sopenharmony_ci 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd, 22258c2ecf20Sopenharmony_ci 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 22268c2ecf20Sopenharmony_ci 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 22278c2ecf20Sopenharmony_ci 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 22288c2ecf20Sopenharmony_ci 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 22298c2ecf20Sopenharmony_ci 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 22308c2ecf20Sopenharmony_ci 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 22318c2ecf20Sopenharmony_ci 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 22328c2ecf20Sopenharmony_ci 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 22338c2ecf20Sopenharmony_ci 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 22348c2ecf20Sopenharmony_ci 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 22358c2ecf20Sopenharmony_ci 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xee, 22368c2ecf20Sopenharmony_ci 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef, 0xef, 22378c2ecf20Sopenharmony_ci 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 22388c2ecf20Sopenharmony_ci 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3, 22398c2ecf20Sopenharmony_ci 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 22408c2ecf20Sopenharmony_ci 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 22418c2ecf20Sopenharmony_ci 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 22428c2ecf20Sopenharmony_ci 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 22438c2ecf20Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 22448c2ecf20Sopenharmony_ci 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 22458c2ecf20Sopenharmony_ci 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 22468c2ecf20Sopenharmony_ci 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 22478c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 22488c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 22498c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 22508c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 22518c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 22528c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 22538c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 22548c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 22558c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 22568c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 22578c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 22588c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 22598c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 22608c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 22618c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 22628c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 22638c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 22648c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 22658c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff} 22668c2ecf20Sopenharmony_ci }, 22678c2ecf20Sopenharmony_ci { /* gamma 2 */ 22688c2ecf20Sopenharmony_ci {0x00, 0x01, 0x02, 0x05, 0x07, 0x08, 0x0a, 0x0c, 22698c2ecf20Sopenharmony_ci 0x0d, 0x0e, 0x10, 0x12, 0x14, 0x15, 0x16, 0x17, 22708c2ecf20Sopenharmony_ci 0x18, 0x1a, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x22, 22718c2ecf20Sopenharmony_ci 0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2b, 0x2c, 22728c2ecf20Sopenharmony_ci 0x2d, 0x2d, 0x2f, 0x30, 0x31, 0x33, 0x34, 0x34, 22738c2ecf20Sopenharmony_ci 0x35, 0x37, 0x38, 0x38, 0x39, 0x3a, 0x3b, 0x3b, 22748c2ecf20Sopenharmony_ci 0x3c, 0x3d, 0x3f, 0x3f, 0x40, 0x42, 0x42, 0x43, 22758c2ecf20Sopenharmony_ci 0x44, 0x44, 0x45, 0x47, 0x47, 0x48, 0x49, 0x49, 22768c2ecf20Sopenharmony_ci 0x4a, 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4f, 0x4f, 22778c2ecf20Sopenharmony_ci 0x50, 0x50, 0x52, 0x53, 0x53, 0x54, 0x54, 0x55, 22788c2ecf20Sopenharmony_ci 0x55, 0x56, 0x56, 0x58, 0x58, 0x59, 0x5a, 0x5a, 22798c2ecf20Sopenharmony_ci 0x5b, 0x5b, 0x5c, 0x5c, 0x5e, 0x5e, 0x5f, 0x5f, 22808c2ecf20Sopenharmony_ci 0x60, 0x60, 0x61, 0x61, 0x62, 0x62, 0x63, 0x63, 22818c2ecf20Sopenharmony_ci 0x65, 0x65, 0x65, 0x66, 0x66, 0x67, 0x67, 0x68, 22828c2ecf20Sopenharmony_ci 0x68, 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6c, 0x6c, 22838c2ecf20Sopenharmony_ci 0x6d, 0x6d, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x70, 22848c2ecf20Sopenharmony_ci 0x70, 0x70, 0x71, 0x71, 0x73, 0x73, 0x73, 0x74, 22858c2ecf20Sopenharmony_ci 0x74, 0x75, 0x75, 0x75, 0x77, 0x77, 0x78, 0x78, 22868c2ecf20Sopenharmony_ci 0x78, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 22878c2ecf20Sopenharmony_ci 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7f, 0x7f, 22888c2ecf20Sopenharmony_ci 0x7f, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 22898c2ecf20Sopenharmony_ci 0x82, 0x82, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 22908c2ecf20Sopenharmony_ci 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x89, 0x89, 22918c2ecf20Sopenharmony_ci 0x89, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8d, 22928c2ecf20Sopenharmony_ci 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 22938c2ecf20Sopenharmony_ci 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91, 22948c2ecf20Sopenharmony_ci 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x94, 22958c2ecf20Sopenharmony_ci 0x94, 0x94, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 22968c2ecf20Sopenharmony_ci 0x97, 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 22978c2ecf20Sopenharmony_ci 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 22988c2ecf20Sopenharmony_ci 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e, 22998c2ecf20Sopenharmony_ci 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0, 0xa1, 23008c2ecf20Sopenharmony_ci 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 23018c2ecf20Sopenharmony_ci 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 23028c2ecf20Sopenharmony_ci 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 23038c2ecf20Sopenharmony_ci 0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 23048c2ecf20Sopenharmony_ci 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xad, 23058c2ecf20Sopenharmony_ci 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 23068c2ecf20Sopenharmony_ci 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 23078c2ecf20Sopenharmony_ci 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 23088c2ecf20Sopenharmony_ci 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xb4, 23098c2ecf20Sopenharmony_ci 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 23108c2ecf20Sopenharmony_ci 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 23118c2ecf20Sopenharmony_ci 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 23128c2ecf20Sopenharmony_ci 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 23138c2ecf20Sopenharmony_ci 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 23148c2ecf20Sopenharmony_ci 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 23158c2ecf20Sopenharmony_ci 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 23168c2ecf20Sopenharmony_ci 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 23178c2ecf20Sopenharmony_ci 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 23188c2ecf20Sopenharmony_ci 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 23198c2ecf20Sopenharmony_ci 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 23208c2ecf20Sopenharmony_ci 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 23218c2ecf20Sopenharmony_ci 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 23228c2ecf20Sopenharmony_ci 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xce, 23238c2ecf20Sopenharmony_ci 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 23248c2ecf20Sopenharmony_ci 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 23258c2ecf20Sopenharmony_ci 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 23268c2ecf20Sopenharmony_ci 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 23278c2ecf20Sopenharmony_ci 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 23288c2ecf20Sopenharmony_ci 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 23298c2ecf20Sopenharmony_ci 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 23308c2ecf20Sopenharmony_ci 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 23318c2ecf20Sopenharmony_ci 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 23328c2ecf20Sopenharmony_ci 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 23338c2ecf20Sopenharmony_ci 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 23348c2ecf20Sopenharmony_ci 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 23358c2ecf20Sopenharmony_ci 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 23368c2ecf20Sopenharmony_ci 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 23378c2ecf20Sopenharmony_ci 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 23388c2ecf20Sopenharmony_ci 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 23398c2ecf20Sopenharmony_ci 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 23408c2ecf20Sopenharmony_ci 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 23418c2ecf20Sopenharmony_ci 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed, 0xed, 23428c2ecf20Sopenharmony_ci 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee, 23438c2ecf20Sopenharmony_ci 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 23448c2ecf20Sopenharmony_ci 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 23458c2ecf20Sopenharmony_ci 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 23468c2ecf20Sopenharmony_ci 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 23478c2ecf20Sopenharmony_ci 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 23488c2ecf20Sopenharmony_ci 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 23498c2ecf20Sopenharmony_ci 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 23508c2ecf20Sopenharmony_ci 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 23518c2ecf20Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 23528c2ecf20Sopenharmony_ci 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23538c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23548c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23558c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23568c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23578c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23588c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23598c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23608c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23618c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23628c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23638c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23648c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23658c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23668c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23678c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23688c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23698c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23708c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23718c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23728c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23738c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23748c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23758c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23768c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23778c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23788c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23798c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23808c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23818c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23828c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23838c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23848c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23858c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23868c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23878c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23888c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23898c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23908c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23918c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23928c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23938c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23948c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 23958c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}, 23968c2ecf20Sopenharmony_ci {0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x05, 23978c2ecf20Sopenharmony_ci 0x07, 0x08, 0x09, 0x0a, 0x0d, 0x0e, 0x10, 0x11, 23988c2ecf20Sopenharmony_ci 0x12, 0x14, 0x15, 0x16, 0x16, 0x17, 0x18, 0x1a, 23998c2ecf20Sopenharmony_ci 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x20, 0x22, 0x23, 24008c2ecf20Sopenharmony_ci 0x25, 0x26, 0x26, 0x27, 0x28, 0x29, 0x29, 0x2b, 24018c2ecf20Sopenharmony_ci 0x2c, 0x2d, 0x2d, 0x2f, 0x30, 0x30, 0x31, 0x33, 24028c2ecf20Sopenharmony_ci 0x33, 0x34, 0x35, 0x35, 0x37, 0x38, 0x38, 0x39, 24038c2ecf20Sopenharmony_ci 0x3a, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d, 0x3d, 0x3f, 24048c2ecf20Sopenharmony_ci 0x3f, 0x40, 0x42, 0x42, 0x43, 0x43, 0x44, 0x44, 24058c2ecf20Sopenharmony_ci 0x45, 0x45, 0x47, 0x47, 0x48, 0x48, 0x49, 0x4a, 24068c2ecf20Sopenharmony_ci 0x4a, 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4d, 0x4d, 24078c2ecf20Sopenharmony_ci 0x4f, 0x4f, 0x50, 0x50, 0x52, 0x52, 0x53, 0x53, 24088c2ecf20Sopenharmony_ci 0x54, 0x54, 0x55, 0x55, 0x56, 0x56, 0x56, 0x58, 24098c2ecf20Sopenharmony_ci 0x58, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b, 24108c2ecf20Sopenharmony_ci 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5f, 0x5f, 0x5f, 24118c2ecf20Sopenharmony_ci 0x60, 0x60, 0x61, 0x61, 0x61, 0x62, 0x62, 0x63, 24128c2ecf20Sopenharmony_ci 0x63, 0x63, 0x65, 0x65, 0x65, 0x66, 0x66, 0x67, 24138c2ecf20Sopenharmony_ci 0x67, 0x67, 0x68, 0x68, 0x68, 0x69, 0x69, 0x69, 24148c2ecf20Sopenharmony_ci 0x6a, 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 24158c2ecf20Sopenharmony_ci 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 24168c2ecf20Sopenharmony_ci 0x70, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73, 0x73, 24178c2ecf20Sopenharmony_ci 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77, 0x77, 24188c2ecf20Sopenharmony_ci 0x77, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x79, 24198c2ecf20Sopenharmony_ci 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 24208c2ecf20Sopenharmony_ci 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7f, 0x7f, 24218c2ecf20Sopenharmony_ci 0x7f, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 24228c2ecf20Sopenharmony_ci 0x82, 0x82, 0x82, 0x82, 0x84, 0x84, 0x84, 0x84, 24238c2ecf20Sopenharmony_ci 0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x88, 24248c2ecf20Sopenharmony_ci 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x89, 0x8a, 24258c2ecf20Sopenharmony_ci 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8d, 24268c2ecf20Sopenharmony_ci 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8f, 24278c2ecf20Sopenharmony_ci 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90, 0x91, 24288c2ecf20Sopenharmony_ci 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92, 24298c2ecf20Sopenharmony_ci 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94, 24308c2ecf20Sopenharmony_ci 0x94, 0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 24318c2ecf20Sopenharmony_ci 0x97, 0x98, 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 24328c2ecf20Sopenharmony_ci 0x99, 0x99, 0x99, 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 24338c2ecf20Sopenharmony_ci 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9c, 24348c2ecf20Sopenharmony_ci 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 24358c2ecf20Sopenharmony_ci 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa1, 24368c2ecf20Sopenharmony_ci 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa2, 24378c2ecf20Sopenharmony_ci 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 24388c2ecf20Sopenharmony_ci 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 24398c2ecf20Sopenharmony_ci 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 24408c2ecf20Sopenharmony_ci 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 24418c2ecf20Sopenharmony_ci 0xab, 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 24428c2ecf20Sopenharmony_ci 0xac, 0xac, 0xad, 0xad, 0xad, 0xad, 0xad, 0xae, 24438c2ecf20Sopenharmony_ci 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf, 24448c2ecf20Sopenharmony_ci 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1, 24458c2ecf20Sopenharmony_ci 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 24468c2ecf20Sopenharmony_ci 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 24478c2ecf20Sopenharmony_ci 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 24488c2ecf20Sopenharmony_ci 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 24498c2ecf20Sopenharmony_ci 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 24508c2ecf20Sopenharmony_ci 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba, 24518c2ecf20Sopenharmony_ci 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 24528c2ecf20Sopenharmony_ci 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 24538c2ecf20Sopenharmony_ci 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 24548c2ecf20Sopenharmony_ci 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 24558c2ecf20Sopenharmony_ci 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 24568c2ecf20Sopenharmony_ci 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 24578c2ecf20Sopenharmony_ci 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 24588c2ecf20Sopenharmony_ci 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 24598c2ecf20Sopenharmony_ci 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9, 24608c2ecf20Sopenharmony_ci 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca, 24618c2ecf20Sopenharmony_ci 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 24628c2ecf20Sopenharmony_ci 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 24638c2ecf20Sopenharmony_ci 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 24648c2ecf20Sopenharmony_ci 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 24658c2ecf20Sopenharmony_ci 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 24668c2ecf20Sopenharmony_ci 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 24678c2ecf20Sopenharmony_ci 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 24688c2ecf20Sopenharmony_ci 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 24698c2ecf20Sopenharmony_ci 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 24708c2ecf20Sopenharmony_ci 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 24718c2ecf20Sopenharmony_ci 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 24728c2ecf20Sopenharmony_ci 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 24738c2ecf20Sopenharmony_ci 0xdb, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 24748c2ecf20Sopenharmony_ci 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf, 24758c2ecf20Sopenharmony_ci 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 24768c2ecf20Sopenharmony_ci 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 24778c2ecf20Sopenharmony_ci 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 24788c2ecf20Sopenharmony_ci 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 24798c2ecf20Sopenharmony_ci 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 24808c2ecf20Sopenharmony_ci 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 24818c2ecf20Sopenharmony_ci 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 24828c2ecf20Sopenharmony_ci 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 24838c2ecf20Sopenharmony_ci 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 24848c2ecf20Sopenharmony_ci 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 24858c2ecf20Sopenharmony_ci 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 24868c2ecf20Sopenharmony_ci 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 24878c2ecf20Sopenharmony_ci 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 24888c2ecf20Sopenharmony_ci 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 24898c2ecf20Sopenharmony_ci 0xf1, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 24908c2ecf20Sopenharmony_ci 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 24918c2ecf20Sopenharmony_ci 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 24928c2ecf20Sopenharmony_ci 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 24938c2ecf20Sopenharmony_ci 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 24948c2ecf20Sopenharmony_ci 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 24958c2ecf20Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 24968c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 24978c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 24988c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 24998c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 25008c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 25018c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 25028c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 25038c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 25048c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 25058c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 25068c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 25078c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 25088c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 25098c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 25108c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 25118c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 25128c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 25138c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 25148c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 25158c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 25168c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 25178c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 25188c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 25198c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 25208c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 25218c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 25228c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 25238c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}, 25248c2ecf20Sopenharmony_ci {0x00, 0x00, 0x00, 0x01, 0x02, 0x05, 0x07, 0x08, 25258c2ecf20Sopenharmony_ci 0x09, 0x0a, 0x0c, 0x0e, 0x10, 0x11, 0x12, 0x14, 25268c2ecf20Sopenharmony_ci 0x15, 0x16, 0x17, 0x18, 0x1a, 0x1b, 0x1c, 0x1e, 25278c2ecf20Sopenharmony_ci 0x1f, 0x20, 0x20, 0x22, 0x23, 0x25, 0x26, 0x27, 25288c2ecf20Sopenharmony_ci 0x28, 0x28, 0x29, 0x2b, 0x2c, 0x2d, 0x2d, 0x2f, 25298c2ecf20Sopenharmony_ci 0x30, 0x31, 0x31, 0x33, 0x34, 0x35, 0x35, 0x37, 25308c2ecf20Sopenharmony_ci 0x38, 0x38, 0x39, 0x3a, 0x3a, 0x3b, 0x3c, 0x3c, 25318c2ecf20Sopenharmony_ci 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x42, 0x43, 0x43, 25328c2ecf20Sopenharmony_ci 0x44, 0x44, 0x45, 0x47, 0x47, 0x48, 0x48, 0x49, 25338c2ecf20Sopenharmony_ci 0x4a, 0x4a, 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4d, 25348c2ecf20Sopenharmony_ci 0x4f, 0x4f, 0x50, 0x50, 0x52, 0x52, 0x53, 0x53, 25358c2ecf20Sopenharmony_ci 0x54, 0x54, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58, 25368c2ecf20Sopenharmony_ci 0x59, 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c, 25378c2ecf20Sopenharmony_ci 0x5c, 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61, 25388c2ecf20Sopenharmony_ci 0x61, 0x61, 0x62, 0x62, 0x63, 0x63, 0x65, 0x65, 25398c2ecf20Sopenharmony_ci 0x65, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68, 0x68, 25408c2ecf20Sopenharmony_ci 0x69, 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6c, 0x6c, 25418c2ecf20Sopenharmony_ci 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 25428c2ecf20Sopenharmony_ci 0x70, 0x70, 0x70, 0x71, 0x71, 0x71, 0x73, 0x73, 25438c2ecf20Sopenharmony_ci 0x73, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77, 25448c2ecf20Sopenharmony_ci 0x77, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x7a, 25458c2ecf20Sopenharmony_ci 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 25468c2ecf20Sopenharmony_ci 0x7c, 0x7d, 0x7d, 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 25478c2ecf20Sopenharmony_ci 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 25488c2ecf20Sopenharmony_ci 0x82, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 25498c2ecf20Sopenharmony_ci 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89, 25508c2ecf20Sopenharmony_ci 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 25518c2ecf20Sopenharmony_ci 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 25528c2ecf20Sopenharmony_ci 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 25538c2ecf20Sopenharmony_ci 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92, 25548c2ecf20Sopenharmony_ci 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94, 25558c2ecf20Sopenharmony_ci 0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x97, 25568c2ecf20Sopenharmony_ci 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99, 25578c2ecf20Sopenharmony_ci 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 25588c2ecf20Sopenharmony_ci 0x9b, 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 25598c2ecf20Sopenharmony_ci 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 25608c2ecf20Sopenharmony_ci 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 25618c2ecf20Sopenharmony_ci 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 25628c2ecf20Sopenharmony_ci 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 25638c2ecf20Sopenharmony_ci 0xa5, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 25648c2ecf20Sopenharmony_ci 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 25658c2ecf20Sopenharmony_ci 0xab, 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 25668c2ecf20Sopenharmony_ci 0xad, 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 25678c2ecf20Sopenharmony_ci 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 25688c2ecf20Sopenharmony_ci 0xb0, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 25698c2ecf20Sopenharmony_ci 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 25708c2ecf20Sopenharmony_ci 0xb3, 0xb3, 0xb3, 0xb4, 0xb3, 0xb4, 0xb4, 0xb4, 25718c2ecf20Sopenharmony_ci 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 25728c2ecf20Sopenharmony_ci 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 25738c2ecf20Sopenharmony_ci 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 25748c2ecf20Sopenharmony_ci 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 25758c2ecf20Sopenharmony_ci 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 25768c2ecf20Sopenharmony_ci 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 25778c2ecf20Sopenharmony_ci 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 25788c2ecf20Sopenharmony_ci 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 25798c2ecf20Sopenharmony_ci 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 25808c2ecf20Sopenharmony_ci 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 25818c2ecf20Sopenharmony_ci 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 25828c2ecf20Sopenharmony_ci 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 25838c2ecf20Sopenharmony_ci 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 25848c2ecf20Sopenharmony_ci 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 25858c2ecf20Sopenharmony_ci 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 25868c2ecf20Sopenharmony_ci 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 25878c2ecf20Sopenharmony_ci 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 25888c2ecf20Sopenharmony_ci 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 25898c2ecf20Sopenharmony_ci 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 25908c2ecf20Sopenharmony_ci 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 25918c2ecf20Sopenharmony_ci 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 25928c2ecf20Sopenharmony_ci 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 25938c2ecf20Sopenharmony_ci 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 25948c2ecf20Sopenharmony_ci 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 25958c2ecf20Sopenharmony_ci 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 25968c2ecf20Sopenharmony_ci 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 25978c2ecf20Sopenharmony_ci 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 25988c2ecf20Sopenharmony_ci 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 25998c2ecf20Sopenharmony_ci 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 26008c2ecf20Sopenharmony_ci 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 26018c2ecf20Sopenharmony_ci 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 26028c2ecf20Sopenharmony_ci 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 26038c2ecf20Sopenharmony_ci 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 26048c2ecf20Sopenharmony_ci 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 26058c2ecf20Sopenharmony_ci 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 26068c2ecf20Sopenharmony_ci 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed, 0xed, 26078c2ecf20Sopenharmony_ci 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee, 26088c2ecf20Sopenharmony_ci 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 26098c2ecf20Sopenharmony_ci 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 26108c2ecf20Sopenharmony_ci 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3, 26118c2ecf20Sopenharmony_ci 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 26128c2ecf20Sopenharmony_ci 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 26138c2ecf20Sopenharmony_ci 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 26148c2ecf20Sopenharmony_ci 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 26158c2ecf20Sopenharmony_ci 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 26168c2ecf20Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 26178c2ecf20Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26188c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26198c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26208c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26218c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26228c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26238c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26248c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26258c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26268c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26278c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26288c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26298c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26308c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26318c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26328c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26338c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26348c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26358c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26368c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26378c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26388c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26398c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26408c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26418c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26428c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26438c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26448c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26458c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26468c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26478c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26488c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26498c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26508c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 26518c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb} 26528c2ecf20Sopenharmony_ci }, 26538c2ecf20Sopenharmony_ci { /* gamma 3 - from tp6810 + cx0342 */ 26548c2ecf20Sopenharmony_ci {0x08, 0x09, 0x0c, 0x0d, 0x10, 0x11, 0x14, 0x15, 26558c2ecf20Sopenharmony_ci 0x17, 0x18, 0x1a, 0x1c, 0x1e, 0x1f, 0x20, 0x23, 26568c2ecf20Sopenharmony_ci 0x25, 0x26, 0x27, 0x28, 0x2b, 0x2c, 0x2d, 0x2f, 26578c2ecf20Sopenharmony_ci 0x30, 0x31, 0x33, 0x34, 0x35, 0x37, 0x38, 0x39, 26588c2ecf20Sopenharmony_ci 0x3a, 0x3b, 0x3c, 0x3d, 0x3f, 0x40, 0x42, 0x43, 26598c2ecf20Sopenharmony_ci 0x44, 0x45, 0x47, 0x48, 0x48, 0x49, 0x4a, 0x4b, 26608c2ecf20Sopenharmony_ci 0x4c, 0x4d, 0x4d, 0x4f, 0x50, 0x52, 0x53, 0x53, 26618c2ecf20Sopenharmony_ci 0x54, 0x55, 0x56, 0x56, 0x58, 0x59, 0x5a, 0x5a, 26628c2ecf20Sopenharmony_ci 0x5b, 0x5c, 0x5c, 0x5e, 0x5f, 0x5f, 0x60, 0x61, 26638c2ecf20Sopenharmony_ci 0x61, 0x62, 0x63, 0x63, 0x65, 0x66, 0x66, 0x67, 26648c2ecf20Sopenharmony_ci 0x68, 0x68, 0x69, 0x69, 0x6a, 0x6c, 0x6c, 0x6d, 26658c2ecf20Sopenharmony_ci 0x6d, 0x6e, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x73, 26668c2ecf20Sopenharmony_ci 0x73, 0x74, 0x74, 0x75, 0x75, 0x77, 0x77, 0x78, 26678c2ecf20Sopenharmony_ci 0x78, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 26688c2ecf20Sopenharmony_ci 0x7d, 0x7d, 0x7f, 0x7f, 0x80, 0x80, 0x81, 0x81, 26698c2ecf20Sopenharmony_ci 0x82, 0x82, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86, 26708c2ecf20Sopenharmony_ci 0x86, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b, 26718c2ecf20Sopenharmony_ci 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8f, 0x8f, 26728c2ecf20Sopenharmony_ci 0x90, 0x90, 0x91, 0x91, 0x91, 0x92, 0x92, 0x93, 26738c2ecf20Sopenharmony_ci 0x93, 0x93, 0x94, 0x94, 0x96, 0x96, 0x97, 0x97, 26748c2ecf20Sopenharmony_ci 0x97, 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a, 0x9a, 26758c2ecf20Sopenharmony_ci 0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 26768c2ecf20Sopenharmony_ci 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 26778c2ecf20Sopenharmony_ci 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 26788c2ecf20Sopenharmony_ci 0xa4, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa8, 0xa8, 26798c2ecf20Sopenharmony_ci 0xa8, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xac, 26808c2ecf20Sopenharmony_ci 0xac, 0xac, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 26818c2ecf20Sopenharmony_ci 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 26828c2ecf20Sopenharmony_ci 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 26838c2ecf20Sopenharmony_ci 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 26848c2ecf20Sopenharmony_ci 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 26858c2ecf20Sopenharmony_ci 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 26868c2ecf20Sopenharmony_ci 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 26878c2ecf20Sopenharmony_ci 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2, 26888c2ecf20Sopenharmony_ci 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc5, 26898c2ecf20Sopenharmony_ci 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 26908c2ecf20Sopenharmony_ci 0xc7, 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 26918c2ecf20Sopenharmony_ci 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 26928c2ecf20Sopenharmony_ci 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 26938c2ecf20Sopenharmony_ci 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 26948c2ecf20Sopenharmony_ci 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 26958c2ecf20Sopenharmony_ci 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 26968c2ecf20Sopenharmony_ci 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 26978c2ecf20Sopenharmony_ci 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda, 26988c2ecf20Sopenharmony_ci 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 26998c2ecf20Sopenharmony_ci 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf, 27008c2ecf20Sopenharmony_ci 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 27018c2ecf20Sopenharmony_ci 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 27028c2ecf20Sopenharmony_ci 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 27038c2ecf20Sopenharmony_ci 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 27048c2ecf20Sopenharmony_ci 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 27058c2ecf20Sopenharmony_ci 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 27068c2ecf20Sopenharmony_ci 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 27078c2ecf20Sopenharmony_ci 0xed, 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 27088c2ecf20Sopenharmony_ci 0xee, 0xee, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 27098c2ecf20Sopenharmony_ci 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 27108c2ecf20Sopenharmony_ci 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 27118c2ecf20Sopenharmony_ci 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 27128c2ecf20Sopenharmony_ci 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 27138c2ecf20Sopenharmony_ci 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 27148c2ecf20Sopenharmony_ci 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 27158c2ecf20Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 27168c2ecf20Sopenharmony_ci 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 27178c2ecf20Sopenharmony_ci 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 27188c2ecf20Sopenharmony_ci 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 27198c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27208c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27218c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27228c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27238c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27248c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27258c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27268c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27278c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27288c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27298c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27308c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27318c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27328c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27338c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27348c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27358c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27368c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27378c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27388c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27398c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27408c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27418c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27428c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27438c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27448c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27458c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27468c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27478c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27488c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27498c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27508c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27518c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27528c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27538c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27548c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27558c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27568c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27578c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27588c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27598c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27608c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27618c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27628c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27638c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27648c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27658c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27668c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27678c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27688c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27698c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27708c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27718c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27728c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27738c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27748c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27758c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27768c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27778c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27788c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27798c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27808c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 27818c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, 27828c2ecf20Sopenharmony_ci {0x03, 0x05, 0x07, 0x09, 0x0a, 0x0c, 0x0d, 0x10, 27838c2ecf20Sopenharmony_ci 0x11, 0x12, 0x14, 0x15, 0x17, 0x18, 0x1a, 0x1b, 27848c2ecf20Sopenharmony_ci 0x1c, 0x1e, 0x1f, 0x20, 0x22, 0x23, 0x25, 0x26, 27858c2ecf20Sopenharmony_ci 0x27, 0x28, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2f, 27868c2ecf20Sopenharmony_ci 0x30, 0x31, 0x33, 0x33, 0x34, 0x35, 0x37, 0x38, 27878c2ecf20Sopenharmony_ci 0x38, 0x39, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d, 0x3f, 27888c2ecf20Sopenharmony_ci 0x3f, 0x40, 0x42, 0x42, 0x43, 0x44, 0x45, 0x45, 27898c2ecf20Sopenharmony_ci 0x47, 0x47, 0x48, 0x49, 0x49, 0x4a, 0x4b, 0x4b, 27908c2ecf20Sopenharmony_ci 0x4c, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x52, 0x52, 27918c2ecf20Sopenharmony_ci 0x53, 0x53, 0x54, 0x54, 0x55, 0x55, 0x56, 0x58, 27928c2ecf20Sopenharmony_ci 0x58, 0x59, 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 27938c2ecf20Sopenharmony_ci 0x5c, 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61, 27948c2ecf20Sopenharmony_ci 0x61, 0x62, 0x62, 0x63, 0x63, 0x65, 0x65, 0x66, 27958c2ecf20Sopenharmony_ci 0x66, 0x67, 0x67, 0x67, 0x68, 0x68, 0x69, 0x69, 27968c2ecf20Sopenharmony_ci 0x6a, 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6e, 27978c2ecf20Sopenharmony_ci 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x71, 27988c2ecf20Sopenharmony_ci 0x71, 0x73, 0x73, 0x74, 0x74, 0x74, 0x75, 0x75, 27998c2ecf20Sopenharmony_ci 0x77, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 0x79, 28008c2ecf20Sopenharmony_ci 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 28018c2ecf20Sopenharmony_ci 0x7d, 0x7d, 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 28028c2ecf20Sopenharmony_ci 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x84, 28038c2ecf20Sopenharmony_ci 0x84, 0x84, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 28048c2ecf20Sopenharmony_ci 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a, 28058c2ecf20Sopenharmony_ci 0x8a, 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 28068c2ecf20Sopenharmony_ci 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 28078c2ecf20Sopenharmony_ci 0x90, 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 28088c2ecf20Sopenharmony_ci 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x96, 28098c2ecf20Sopenharmony_ci 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x98, 0x98, 28108c2ecf20Sopenharmony_ci 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a, 0x9a, 0x9a, 28118c2ecf20Sopenharmony_ci 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 28128c2ecf20Sopenharmony_ci 0x9c, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 28138c2ecf20Sopenharmony_ci 0xa0, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 28148c2ecf20Sopenharmony_ci 0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 28158c2ecf20Sopenharmony_ci 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 28168c2ecf20Sopenharmony_ci 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8, 28178c2ecf20Sopenharmony_ci 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 28188c2ecf20Sopenharmony_ci 0xab, 0xac, 0xac, 0xac, 0xac, 0xad, 0xad, 0xad, 28198c2ecf20Sopenharmony_ci 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf, 28208c2ecf20Sopenharmony_ci 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1, 28218c2ecf20Sopenharmony_ci 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 28228c2ecf20Sopenharmony_ci 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xb4, 0xb4, 28238c2ecf20Sopenharmony_ci 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 28248c2ecf20Sopenharmony_ci 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 28258c2ecf20Sopenharmony_ci 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba, 28268c2ecf20Sopenharmony_ci 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 28278c2ecf20Sopenharmony_ci 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 28288c2ecf20Sopenharmony_ci 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 28298c2ecf20Sopenharmony_ci 0xc0, 0xc0, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 28308c2ecf20Sopenharmony_ci 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 28318c2ecf20Sopenharmony_ci 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 28328c2ecf20Sopenharmony_ci 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 28338c2ecf20Sopenharmony_ci 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 28348c2ecf20Sopenharmony_ci 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 28358c2ecf20Sopenharmony_ci 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 28368c2ecf20Sopenharmony_ci 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 28378c2ecf20Sopenharmony_ci 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 28388c2ecf20Sopenharmony_ci 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 28398c2ecf20Sopenharmony_ci 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 28408c2ecf20Sopenharmony_ci 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 28418c2ecf20Sopenharmony_ci 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 28428c2ecf20Sopenharmony_ci 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 28438c2ecf20Sopenharmony_ci 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 28448c2ecf20Sopenharmony_ci 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 28458c2ecf20Sopenharmony_ci 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 28468c2ecf20Sopenharmony_ci 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 28478c2ecf20Sopenharmony_ci 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 28488c2ecf20Sopenharmony_ci 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 28498c2ecf20Sopenharmony_ci 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 28508c2ecf20Sopenharmony_ci 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 28518c2ecf20Sopenharmony_ci 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 28528c2ecf20Sopenharmony_ci 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 28538c2ecf20Sopenharmony_ci 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 28548c2ecf20Sopenharmony_ci 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 28558c2ecf20Sopenharmony_ci 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 28568c2ecf20Sopenharmony_ci 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xee, 28578c2ecf20Sopenharmony_ci 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef, 28588c2ecf20Sopenharmony_ci 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 28598c2ecf20Sopenharmony_ci 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 28608c2ecf20Sopenharmony_ci 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 28618c2ecf20Sopenharmony_ci 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 28628c2ecf20Sopenharmony_ci 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 28638c2ecf20Sopenharmony_ci 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 28648c2ecf20Sopenharmony_ci 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 28658c2ecf20Sopenharmony_ci 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 28668c2ecf20Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 28678c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 28688c2ecf20Sopenharmony_ci 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 28698c2ecf20Sopenharmony_ci 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 28708c2ecf20Sopenharmony_ci 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 28718c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28728c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28738c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28748c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28758c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28768c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28778c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28788c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28798c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28808c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28818c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28828c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28838c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28848c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28858c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28868c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28878c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28888c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28898c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28908c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28918c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28928c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28938c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28948c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28958c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28968c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28978c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28988c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 28998c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29008c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29018c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29028c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29038c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29048c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29058c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29068c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29078c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29088c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29098c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, 29108c2ecf20Sopenharmony_ci {0x07, 0x08, 0x0a, 0x0c, 0x0e, 0x10, 0x12, 0x14, 29118c2ecf20Sopenharmony_ci 0x16, 0x17, 0x18, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 29128c2ecf20Sopenharmony_ci 0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2b, 0x2d, 29138c2ecf20Sopenharmony_ci 0x2f, 0x30, 0x31, 0x33, 0x34, 0x35, 0x37, 0x38, 29148c2ecf20Sopenharmony_ci 0x39, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d, 0x3f, 0x40, 29158c2ecf20Sopenharmony_ci 0x42, 0x43, 0x44, 0x44, 0x45, 0x47, 0x48, 0x49, 29168c2ecf20Sopenharmony_ci 0x4a, 0x4a, 0x4b, 0x4c, 0x4d, 0x4d, 0x4f, 0x50, 29178c2ecf20Sopenharmony_ci 0x52, 0x52, 0x53, 0x54, 0x55, 0x55, 0x56, 0x58, 29188c2ecf20Sopenharmony_ci 0x58, 0x59, 0x5a, 0x5b, 0x5b, 0x5c, 0x5e, 0x5e, 29198c2ecf20Sopenharmony_ci 0x5f, 0x5f, 0x60, 0x61, 0x61, 0x62, 0x63, 0x63, 29208c2ecf20Sopenharmony_ci 0x65, 0x65, 0x66, 0x67, 0x67, 0x68, 0x68, 0x69, 29218c2ecf20Sopenharmony_ci 0x6a, 0x6a, 0x6c, 0x6c, 0x6d, 0x6d, 0x6e, 0x6e, 29228c2ecf20Sopenharmony_ci 0x6f, 0x70, 0x70, 0x71, 0x71, 0x73, 0x73, 0x74, 29238c2ecf20Sopenharmony_ci 0x74, 0x75, 0x75, 0x77, 0x77, 0x78, 0x78, 0x79, 29248c2ecf20Sopenharmony_ci 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d, 29258c2ecf20Sopenharmony_ci 0x7d, 0x7f, 0x7f, 0x80, 0x80, 0x81, 0x81, 0x81, 29268c2ecf20Sopenharmony_ci 0x82, 0x82, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86, 29278c2ecf20Sopenharmony_ci 0x88, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b, 29288c2ecf20Sopenharmony_ci 0x8b, 0x8b, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 29298c2ecf20Sopenharmony_ci 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 0x92, 0x92, 29308c2ecf20Sopenharmony_ci 0x92, 0x93, 0x93, 0x94, 0x94, 0x94, 0x96, 0x96, 29318c2ecf20Sopenharmony_ci 0x96, 0x97, 0x97, 0x98, 0x98, 0x98, 0x99, 0x99, 29328c2ecf20Sopenharmony_ci 0x99, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 29338c2ecf20Sopenharmony_ci 0x9c, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0xa0, 29348c2ecf20Sopenharmony_ci 0xa0, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa3, 29358c2ecf20Sopenharmony_ci 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 29368c2ecf20Sopenharmony_ci 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8, 0xa9, 29378c2ecf20Sopenharmony_ci 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 29388c2ecf20Sopenharmony_ci 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xaf, 0xaf, 29398c2ecf20Sopenharmony_ci 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 29408c2ecf20Sopenharmony_ci 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb4, 29418c2ecf20Sopenharmony_ci 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 29428c2ecf20Sopenharmony_ci 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 29438c2ecf20Sopenharmony_ci 0xb9, 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 29448c2ecf20Sopenharmony_ci 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbf, 29458c2ecf20Sopenharmony_ci 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 29468c2ecf20Sopenharmony_ci 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 29478c2ecf20Sopenharmony_ci 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 29488c2ecf20Sopenharmony_ci 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 29498c2ecf20Sopenharmony_ci 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 29508c2ecf20Sopenharmony_ci 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 29518c2ecf20Sopenharmony_ci 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xcf, 29528c2ecf20Sopenharmony_ci 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 29538c2ecf20Sopenharmony_ci 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 29548c2ecf20Sopenharmony_ci 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 29558c2ecf20Sopenharmony_ci 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 29568c2ecf20Sopenharmony_ci 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 29578c2ecf20Sopenharmony_ci 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 29588c2ecf20Sopenharmony_ci 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 29598c2ecf20Sopenharmony_ci 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 29608c2ecf20Sopenharmony_ci 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 29618c2ecf20Sopenharmony_ci 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 29628c2ecf20Sopenharmony_ci 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 29638c2ecf20Sopenharmony_ci 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 29648c2ecf20Sopenharmony_ci 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 29658c2ecf20Sopenharmony_ci 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 29668c2ecf20Sopenharmony_ci 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed, 29678c2ecf20Sopenharmony_ci 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee, 29688c2ecf20Sopenharmony_ci 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 29698c2ecf20Sopenharmony_ci 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 29708c2ecf20Sopenharmony_ci 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 29718c2ecf20Sopenharmony_ci 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 29728c2ecf20Sopenharmony_ci 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 29738c2ecf20Sopenharmony_ci 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 29748c2ecf20Sopenharmony_ci 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 29758c2ecf20Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 29768c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 29778c2ecf20Sopenharmony_ci 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 29788c2ecf20Sopenharmony_ci 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 29798c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29808c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29818c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29828c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29838c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29848c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29858c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29868c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29878c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29888c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29898c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29908c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29918c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29928c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29938c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29948c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29958c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29968c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29978c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29988c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 29998c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30008c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30018c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30028c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30038c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30048c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30058c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30068c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30078c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30088c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30098c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30108c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30118c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30128c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30138c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30148c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30158c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30168c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30178c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30188c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30198c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30208c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30218c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30228c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30238c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30248c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30258c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30268c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30278c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30288c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30298c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30308c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30318c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30328c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30338c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30348c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30358c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30368c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 30378c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff} 30388c2ecf20Sopenharmony_ci }, 30398c2ecf20Sopenharmony_ci { /* gamma 4 - from tp6800 + soi763a */ 30408c2ecf20Sopenharmony_ci {0x11, 0x14, 0x15, 0x17, 0x1a, 0x1b, 0x1e, 0x1f, 30418c2ecf20Sopenharmony_ci 0x22, 0x23, 0x25, 0x27, 0x28, 0x2b, 0x2c, 0x2d, 30428c2ecf20Sopenharmony_ci 0x2f, 0x31, 0x33, 0x34, 0x35, 0x38, 0x39, 0x3a, 30438c2ecf20Sopenharmony_ci 0x3b, 0x3c, 0x3d, 0x40, 0x42, 0x43, 0x44, 0x45, 30448c2ecf20Sopenharmony_ci 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4f, 30458c2ecf20Sopenharmony_ci 0x50, 0x52, 0x53, 0x53, 0x54, 0x55, 0x56, 0x58, 30468c2ecf20Sopenharmony_ci 0x59, 0x5a, 0x5b, 0x5b, 0x5c, 0x5e, 0x5f, 0x60, 30478c2ecf20Sopenharmony_ci 0x61, 0x61, 0x62, 0x63, 0x65, 0x65, 0x66, 0x67, 30488c2ecf20Sopenharmony_ci 0x68, 0x68, 0x69, 0x6a, 0x6c, 0x6c, 0x6d, 0x6e, 30498c2ecf20Sopenharmony_ci 0x6f, 0x6f, 0x70, 0x71, 0x71, 0x73, 0x74, 0x74, 30508c2ecf20Sopenharmony_ci 0x75, 0x77, 0x77, 0x78, 0x79, 0x79, 0x7a, 0x7a, 30518c2ecf20Sopenharmony_ci 0x7b, 0x7c, 0x7c, 0x7d, 0x7f, 0x7f, 0x80, 0x80, 30528c2ecf20Sopenharmony_ci 0x81, 0x81, 0x82, 0x84, 0x84, 0x85, 0x85, 0x86, 30538c2ecf20Sopenharmony_ci 0x86, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b, 0x8b, 30548c2ecf20Sopenharmony_ci 0x8d, 0x8d, 0x8e, 0x8e, 0x8f, 0x90, 0x90, 0x91, 30558c2ecf20Sopenharmony_ci 0x91, 0x92, 0x92, 0x93, 0x93, 0x94, 0x94, 0x96, 30568c2ecf20Sopenharmony_ci 0x96, 0x97, 0x97, 0x98, 0x98, 0x98, 0x99, 0x99, 30578c2ecf20Sopenharmony_ci 0x9a, 0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9d, 0x9d, 30588c2ecf20Sopenharmony_ci 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa2, 30598c2ecf20Sopenharmony_ci 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa5, 0xa5, 30608c2ecf20Sopenharmony_ci 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa9, 0xa9, 0xab, 30618c2ecf20Sopenharmony_ci 0xab, 0xab, 0xac, 0xac, 0xad, 0xad, 0xad, 0xae, 30628c2ecf20Sopenharmony_ci 0xae, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb1, 0xb1, 30638c2ecf20Sopenharmony_ci 0xb1, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb4, 0xb4, 30648c2ecf20Sopenharmony_ci 0xb4, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb8, 0xb8, 30658c2ecf20Sopenharmony_ci 0xb8, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xbc, 30668c2ecf20Sopenharmony_ci 0xbc, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbf, 30678c2ecf20Sopenharmony_ci 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2, 30688c2ecf20Sopenharmony_ci 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5, 30698c2ecf20Sopenharmony_ci 0xc5, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc9, 30708c2ecf20Sopenharmony_ci 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 30718c2ecf20Sopenharmony_ci 0xcb, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xce, 30728c2ecf20Sopenharmony_ci 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 30738c2ecf20Sopenharmony_ci 0xd0, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 30748c2ecf20Sopenharmony_ci 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 30758c2ecf20Sopenharmony_ci 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 30768c2ecf20Sopenharmony_ci 0xd9, 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 30778c2ecf20Sopenharmony_ci 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xdf, 30788c2ecf20Sopenharmony_ci 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 30798c2ecf20Sopenharmony_ci 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 30808c2ecf20Sopenharmony_ci 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 30818c2ecf20Sopenharmony_ci 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 30828c2ecf20Sopenharmony_ci 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 30838c2ecf20Sopenharmony_ci 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 30848c2ecf20Sopenharmony_ci 0xec, 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 30858c2ecf20Sopenharmony_ci 0xee, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 30868c2ecf20Sopenharmony_ci 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 30878c2ecf20Sopenharmony_ci 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 30888c2ecf20Sopenharmony_ci 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 30898c2ecf20Sopenharmony_ci 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 30908c2ecf20Sopenharmony_ci 0xf9, 0xf9, 0xfa, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 30918c2ecf20Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 30928c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 30938c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 30948c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 30958c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 30968c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 30978c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 30988c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 30998c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31008c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31018c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31028c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31038c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31048c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31058c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31068c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31078c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31088c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31098c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31108c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31118c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31128c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31138c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31148c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31158c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31168c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31178c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31188c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31198c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31208c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31218c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31228c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31238c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31248c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31258c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31268c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31278c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31288c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31298c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31308c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31318c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31328c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31338c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31348c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31358c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31368c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31378c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31388c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31398c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31408c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31418c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31428c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31438c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31448c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31458c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31468c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31478c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31488c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31498c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31508c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31518c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31528c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31538c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31548c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31558c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31568c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31578c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31588c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31598c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31608c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31618c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31628c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31638c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31648c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31658c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31668c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 31678c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}, 31688c2ecf20Sopenharmony_ci {0x08, 0x0a, 0x0c, 0x0e, 0x10, 0x11, 0x14, 0x15, 31698c2ecf20Sopenharmony_ci 0x16, 0x17, 0x1a, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 31708c2ecf20Sopenharmony_ci 0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2b, 0x2c, 31718c2ecf20Sopenharmony_ci 0x2d, 0x2f, 0x30, 0x31, 0x33, 0x34, 0x34, 0x35, 31728c2ecf20Sopenharmony_ci 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3c, 0x3d, 31738c2ecf20Sopenharmony_ci 0x3f, 0x40, 0x42, 0x42, 0x43, 0x44, 0x45, 0x45, 31748c2ecf20Sopenharmony_ci 0x47, 0x48, 0x49, 0x49, 0x4a, 0x4b, 0x4b, 0x4c, 31758c2ecf20Sopenharmony_ci 0x4d, 0x4f, 0x4f, 0x50, 0x52, 0x52, 0x53, 0x54, 31768c2ecf20Sopenharmony_ci 0x54, 0x55, 0x55, 0x56, 0x58, 0x58, 0x59, 0x5a, 31778c2ecf20Sopenharmony_ci 0x5a, 0x5b, 0x5b, 0x5c, 0x5e, 0x5e, 0x5f, 0x5f, 31788c2ecf20Sopenharmony_ci 0x60, 0x60, 0x61, 0x61, 0x62, 0x63, 0x63, 0x65, 31798c2ecf20Sopenharmony_ci 0x65, 0x66, 0x66, 0x67, 0x67, 0x68, 0x68, 0x69, 31808c2ecf20Sopenharmony_ci 0x69, 0x6a, 0x6a, 0x6c, 0x6c, 0x6d, 0x6d, 0x6e, 31818c2ecf20Sopenharmony_ci 0x6e, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x71, 0x73, 31828c2ecf20Sopenharmony_ci 0x73, 0x74, 0x74, 0x74, 0x75, 0x75, 0x77, 0x77, 31838c2ecf20Sopenharmony_ci 0x78, 0x78, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 31848c2ecf20Sopenharmony_ci 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7f, 0x7f, 31858c2ecf20Sopenharmony_ci 0x7f, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 31868c2ecf20Sopenharmony_ci 0x84, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86, 0x86, 31878c2ecf20Sopenharmony_ci 0x88, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 31888c2ecf20Sopenharmony_ci 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 31898c2ecf20Sopenharmony_ci 0x8e, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 31908c2ecf20Sopenharmony_ci 0x91, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x94, 31918c2ecf20Sopenharmony_ci 0x94, 0x94, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 31928c2ecf20Sopenharmony_ci 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a, 31938c2ecf20Sopenharmony_ci 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 31948c2ecf20Sopenharmony_ci 0x9c, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0xa0, 31958c2ecf20Sopenharmony_ci 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 31968c2ecf20Sopenharmony_ci 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 31978c2ecf20Sopenharmony_ci 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa6, 0xa6, 31988c2ecf20Sopenharmony_ci 0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 31998c2ecf20Sopenharmony_ci 0xaa, 0xab, 0xab, 0xac, 0xac, 0xac, 0xad, 0xad, 32008c2ecf20Sopenharmony_ci 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf, 32018c2ecf20Sopenharmony_ci 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 32028c2ecf20Sopenharmony_ci 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 32038c2ecf20Sopenharmony_ci 0xb3, 0xb3, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 32048c2ecf20Sopenharmony_ci 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 32058c2ecf20Sopenharmony_ci 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 32068c2ecf20Sopenharmony_ci 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 32078c2ecf20Sopenharmony_ci 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 32088c2ecf20Sopenharmony_ci 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 32098c2ecf20Sopenharmony_ci 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 32108c2ecf20Sopenharmony_ci 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5, 32118c2ecf20Sopenharmony_ci 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 32128c2ecf20Sopenharmony_ci 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 32138c2ecf20Sopenharmony_ci 0xca, 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 32148c2ecf20Sopenharmony_ci 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 32158c2ecf20Sopenharmony_ci 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 32168c2ecf20Sopenharmony_ci 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 32178c2ecf20Sopenharmony_ci 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 32188c2ecf20Sopenharmony_ci 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 32198c2ecf20Sopenharmony_ci 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 32208c2ecf20Sopenharmony_ci 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 32218c2ecf20Sopenharmony_ci 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 32228c2ecf20Sopenharmony_ci 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 32238c2ecf20Sopenharmony_ci 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 32248c2ecf20Sopenharmony_ci 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 32258c2ecf20Sopenharmony_ci 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 32268c2ecf20Sopenharmony_ci 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 32278c2ecf20Sopenharmony_ci 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 32288c2ecf20Sopenharmony_ci 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 32298c2ecf20Sopenharmony_ci 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 32308c2ecf20Sopenharmony_ci 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 32318c2ecf20Sopenharmony_ci 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 32328c2ecf20Sopenharmony_ci 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 32338c2ecf20Sopenharmony_ci 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 32348c2ecf20Sopenharmony_ci 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef, 32358c2ecf20Sopenharmony_ci 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 32368c2ecf20Sopenharmony_ci 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 32378c2ecf20Sopenharmony_ci 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 32388c2ecf20Sopenharmony_ci 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 32398c2ecf20Sopenharmony_ci 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 32408c2ecf20Sopenharmony_ci 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 32418c2ecf20Sopenharmony_ci 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 32428c2ecf20Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 32438c2ecf20Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32448c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32458c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32468c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32478c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32488c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32498c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32508c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32518c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32528c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32538c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32548c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32558c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32568c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32578c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32588c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32598c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32608c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32618c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32628c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32638c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32648c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32658c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32668c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32678c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32688c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32698c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32708c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32718c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32728c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32738c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32748c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32758c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32768c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32778c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32788c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32798c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32808c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32818c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32828c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32838c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32848c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32858c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32868c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32878c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32888c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32898c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32908c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32918c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32928c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32938c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32948c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 32958c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}, 32968c2ecf20Sopenharmony_ci {0x0d, 0x10, 0x11, 0x14, 0x15, 0x17, 0x18, 0x1b, 32978c2ecf20Sopenharmony_ci 0x1c, 0x1e, 0x20, 0x22, 0x23, 0x26, 0x27, 0x28, 32988c2ecf20Sopenharmony_ci 0x29, 0x2b, 0x2d, 0x2f, 0x30, 0x31, 0x33, 0x34, 32998c2ecf20Sopenharmony_ci 0x35, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 33008c2ecf20Sopenharmony_ci 0x3f, 0x40, 0x42, 0x43, 0x44, 0x45, 0x47, 0x48, 33018c2ecf20Sopenharmony_ci 0x49, 0x4a, 0x4b, 0x4b, 0x4c, 0x4d, 0x4f, 0x50, 33028c2ecf20Sopenharmony_ci 0x52, 0x52, 0x53, 0x54, 0x55, 0x56, 0x56, 0x58, 33038c2ecf20Sopenharmony_ci 0x59, 0x5a, 0x5a, 0x5b, 0x5c, 0x5e, 0x5e, 0x5f, 33048c2ecf20Sopenharmony_ci 0x60, 0x60, 0x61, 0x62, 0x62, 0x63, 0x65, 0x65, 33058c2ecf20Sopenharmony_ci 0x66, 0x67, 0x67, 0x68, 0x69, 0x69, 0x6a, 0x6c, 33068c2ecf20Sopenharmony_ci 0x6c, 0x6d, 0x6d, 0x6e, 0x6f, 0x6f, 0x70, 0x70, 33078c2ecf20Sopenharmony_ci 0x71, 0x73, 0x73, 0x74, 0x74, 0x75, 0x75, 0x77, 33088c2ecf20Sopenharmony_ci 0x78, 0x78, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 33098c2ecf20Sopenharmony_ci 0x7c, 0x7c, 0x7d, 0x7d, 0x7f, 0x7f, 0x80, 0x80, 33108c2ecf20Sopenharmony_ci 0x81, 0x81, 0x82, 0x82, 0x84, 0x84, 0x85, 0x85, 33118c2ecf20Sopenharmony_ci 0x86, 0x86, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 33128c2ecf20Sopenharmony_ci 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8f, 33138c2ecf20Sopenharmony_ci 0x8f, 0x90, 0x90, 0x91, 0x91, 0x91, 0x92, 0x92, 33148c2ecf20Sopenharmony_ci 0x93, 0x93, 0x94, 0x94, 0x94, 0x96, 0x96, 0x97, 33158c2ecf20Sopenharmony_ci 0x97, 0x98, 0x98, 0x98, 0x99, 0x99, 0x9a, 0x9a, 33168c2ecf20Sopenharmony_ci 0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 33178c2ecf20Sopenharmony_ci 0x9d, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 33188c2ecf20Sopenharmony_ci 0xa1, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 33198c2ecf20Sopenharmony_ci 0xa4, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa8, 0xa8, 33208c2ecf20Sopenharmony_ci 0xa8, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xac, 33218c2ecf20Sopenharmony_ci 0xac, 0xac, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 33228c2ecf20Sopenharmony_ci 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 33238c2ecf20Sopenharmony_ci 0xb1, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb4, 33248c2ecf20Sopenharmony_ci 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 33258c2ecf20Sopenharmony_ci 0xb7, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xba, 33268c2ecf20Sopenharmony_ci 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 33278c2ecf20Sopenharmony_ci 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 33288c2ecf20Sopenharmony_ci 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2, 0xc3, 33298c2ecf20Sopenharmony_ci 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5, 33308c2ecf20Sopenharmony_ci 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 33318c2ecf20Sopenharmony_ci 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 33328c2ecf20Sopenharmony_ci 0xca, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 33338c2ecf20Sopenharmony_ci 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 33348c2ecf20Sopenharmony_ci 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 33358c2ecf20Sopenharmony_ci 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 33368c2ecf20Sopenharmony_ci 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 33378c2ecf20Sopenharmony_ci 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8, 33388c2ecf20Sopenharmony_ci 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 33398c2ecf20Sopenharmony_ci 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd, 33408c2ecf20Sopenharmony_ci 0xdd, 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 33418c2ecf20Sopenharmony_ci 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 33428c2ecf20Sopenharmony_ci 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 33438c2ecf20Sopenharmony_ci 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 33448c2ecf20Sopenharmony_ci 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 33458c2ecf20Sopenharmony_ci 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 33468c2ecf20Sopenharmony_ci 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 33478c2ecf20Sopenharmony_ci 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 33488c2ecf20Sopenharmony_ci 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 33498c2ecf20Sopenharmony_ci 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 33508c2ecf20Sopenharmony_ci 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 33518c2ecf20Sopenharmony_ci 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 33528c2ecf20Sopenharmony_ci 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 33538c2ecf20Sopenharmony_ci 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 33548c2ecf20Sopenharmony_ci 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 33558c2ecf20Sopenharmony_ci 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 33568c2ecf20Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33578c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33588c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33598c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33608c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33618c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33628c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33638c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33648c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33658c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33668c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33678c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33688c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33698c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33708c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33718c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33728c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33738c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33748c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33758c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33768c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33778c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33788c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33798c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33808c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33818c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33828c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33838c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33848c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33858c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33868c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33878c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33888c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33898c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33908c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33918c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33928c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33938c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33948c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33958c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33968c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33978c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33988c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 33998c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 34008c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 34018c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 34028c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 34038c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 34048c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 34058c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 34068c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 34078c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 34088c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 34098c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 34108c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 34118c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 34128c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 34138c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 34148c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 34158c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 34168c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 34178c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 34188c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 34198c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 34208c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 34218c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 34228c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 34238c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb} 34248c2ecf20Sopenharmony_ci }, 34258c2ecf20Sopenharmony_ci { /* gamma 5 */ 34268c2ecf20Sopenharmony_ci {0x16, 0x18, 0x19, 0x1b, 0x1d, 0x1e, 0x20, 0x21, 34278c2ecf20Sopenharmony_ci 0x23, 0x24, 0x25, 0x27, 0x28, 0x2a, 0x2b, 0x2c, 34288c2ecf20Sopenharmony_ci 0x2d, 0x2f, 0x30, 0x31, 0x32, 0x34, 0x35, 0x36, 34298c2ecf20Sopenharmony_ci 0x37, 0x38, 0x39, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 34308c2ecf20Sopenharmony_ci 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 34318c2ecf20Sopenharmony_ci 0x48, 0x49, 0x4a, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 34328c2ecf20Sopenharmony_ci 0x4f, 0x50, 0x51, 0x51, 0x52, 0x53, 0x54, 0x55, 34338c2ecf20Sopenharmony_ci 0x56, 0x56, 0x57, 0x58, 0x59, 0x59, 0x5a, 0x5b, 34348c2ecf20Sopenharmony_ci 0x5c, 0x5c, 0x5d, 0x5e, 0x5f, 0x5f, 0x60, 0x61, 34358c2ecf20Sopenharmony_ci 0x62, 0x62, 0x63, 0x64, 0x64, 0x65, 0x66, 0x66, 34368c2ecf20Sopenharmony_ci 0x67, 0x68, 0x68, 0x69, 0x6a, 0x6a, 0x6b, 0x6b, 34378c2ecf20Sopenharmony_ci 0x6c, 0x6d, 0x6d, 0x6e, 0x6f, 0x6f, 0x70, 0x70, 34388c2ecf20Sopenharmony_ci 0x71, 0x71, 0x72, 0x73, 0x73, 0x74, 0x74, 0x75, 34398c2ecf20Sopenharmony_ci 0x75, 0x76, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 34408c2ecf20Sopenharmony_ci 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7d, 0x7d, 0x7e, 34418c2ecf20Sopenharmony_ci 0x7e, 0x7f, 0x7f, 0x80, 0x80, 0x81, 0x81, 0x82, 34428c2ecf20Sopenharmony_ci 0x82, 0x83, 0x83, 0x84, 0x84, 0x84, 0x85, 0x85, 34438c2ecf20Sopenharmony_ci 0x86, 0x86, 0x87, 0x87, 0x88, 0x88, 0x89, 0x89, 34448c2ecf20Sopenharmony_ci 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8d, 34458c2ecf20Sopenharmony_ci 0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x90, 0x90, 34468c2ecf20Sopenharmony_ci 0x91, 0x91, 0x91, 0x92, 0x92, 0x93, 0x93, 0x94, 34478c2ecf20Sopenharmony_ci 0x94, 0x94, 0x95, 0x95, 0x96, 0x96, 0x96, 0x97, 34488c2ecf20Sopenharmony_ci 0x97, 0x98, 0x98, 0x98, 0x99, 0x99, 0x9a, 0x9a, 34498c2ecf20Sopenharmony_ci 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9d, 0x9d, 34508c2ecf20Sopenharmony_ci 0x9d, 0x9e, 0x9e, 0x9e, 0x9f, 0x9f, 0xa0, 0xa0, 34518c2ecf20Sopenharmony_ci 0xa0, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa3, 34528c2ecf20Sopenharmony_ci 0xa3, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa6, 34538c2ecf20Sopenharmony_ci 0xa6, 0xa6, 0xa7, 0xa7, 0xa7, 0xa8, 0xa8, 0xa8, 34548c2ecf20Sopenharmony_ci 0xa9, 0xa9, 0xa9, 0xaa, 0xaa, 0xaa, 0xab, 0xab, 34558c2ecf20Sopenharmony_ci 0xab, 0xac, 0xac, 0xac, 0xad, 0xad, 0xad, 0xae, 34568c2ecf20Sopenharmony_ci 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 34578c2ecf20Sopenharmony_ci 0xb0, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb3, 34588c2ecf20Sopenharmony_ci 0xb3, 0xb3, 0xb4, 0xb4, 0xb4, 0xb4, 0xb5, 0xb5, 34598c2ecf20Sopenharmony_ci 0xb5, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 34608c2ecf20Sopenharmony_ci 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 34618c2ecf20Sopenharmony_ci 0xba, 0xba, 0xbb, 0xbb, 0xbb, 0xbc, 0xbc, 0xbc, 34628c2ecf20Sopenharmony_ci 0xbc, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 34638c2ecf20Sopenharmony_ci 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1, 34648c2ecf20Sopenharmony_ci 0xc1, 0xc1, 0xc1, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 34658c2ecf20Sopenharmony_ci 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5, 34668c2ecf20Sopenharmony_ci 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 34678c2ecf20Sopenharmony_ci 0xc7, 0xc8, 0xc8, 0xc8, 0xc8, 0xc9, 0xc9, 0xc9, 34688c2ecf20Sopenharmony_ci 0xc9, 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 34698c2ecf20Sopenharmony_ci 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 34708c2ecf20Sopenharmony_ci 0xcd, 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 34718c2ecf20Sopenharmony_ci 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 34728c2ecf20Sopenharmony_ci 0xd1, 0xd2, 0xd2, 0xd2, 0xd2, 0xd3, 0xd3, 0xd3, 34738c2ecf20Sopenharmony_ci 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd5, 0xd5, 0xd5, 34748c2ecf20Sopenharmony_ci 0xd5, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 34758c2ecf20Sopenharmony_ci 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 34768c2ecf20Sopenharmony_ci 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 34778c2ecf20Sopenharmony_ci 0xdb, 0xdb, 0xdb, 0xdc, 0xdc, 0xdc, 0xdc, 0xdd, 34788c2ecf20Sopenharmony_ci 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 34798c2ecf20Sopenharmony_ci 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 34808c2ecf20Sopenharmony_ci 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 34818c2ecf20Sopenharmony_ci 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 34828c2ecf20Sopenharmony_ci 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 34838c2ecf20Sopenharmony_ci 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 34848c2ecf20Sopenharmony_ci 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 34858c2ecf20Sopenharmony_ci 0xe9, 0xe9, 0xea, 0xea, 0xea, 0xea, 0xea, 0xeb, 34868c2ecf20Sopenharmony_ci 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 34878c2ecf20Sopenharmony_ci 0xed, 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 34888c2ecf20Sopenharmony_ci 0xee, 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 34898c2ecf20Sopenharmony_ci 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 34908c2ecf20Sopenharmony_ci 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf3, 0xf3, 0xf3, 34918c2ecf20Sopenharmony_ci 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 34928c2ecf20Sopenharmony_ci 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 34938c2ecf20Sopenharmony_ci 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 34948c2ecf20Sopenharmony_ci 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 34958c2ecf20Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 34968c2ecf20Sopenharmony_ci 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 34978c2ecf20Sopenharmony_ci 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 34988c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 34998c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35008c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35018c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35028c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35038c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35048c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35058c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35068c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35078c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35088c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35098c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35108c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35118c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35128c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35138c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35148c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35158c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35168c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35178c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35188c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35198c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35208c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35218c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35228c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35238c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35248c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35258c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35268c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35278c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35288c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35298c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35308c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35318c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35328c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35338c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35348c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35358c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35368c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35378c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35388c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35398c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35408c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35418c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35428c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35438c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35448c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35458c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35468c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35478c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35488c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35498c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35508c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35518c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35528c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 35538c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, 35548c2ecf20Sopenharmony_ci {0x0f, 0x11, 0x12, 0x14, 0x15, 0x16, 0x18, 0x19, 35558c2ecf20Sopenharmony_ci 0x1a, 0x1b, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 35568c2ecf20Sopenharmony_ci 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 35578c2ecf20Sopenharmony_ci 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x31, 0x32, 35588c2ecf20Sopenharmony_ci 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x38, 0x39, 35598c2ecf20Sopenharmony_ci 0x3a, 0x3b, 0x3c, 0x3c, 0x3d, 0x3e, 0x3f, 0x3f, 35608c2ecf20Sopenharmony_ci 0x40, 0x41, 0x42, 0x42, 0x43, 0x44, 0x44, 0x45, 35618c2ecf20Sopenharmony_ci 0x46, 0x47, 0x47, 0x48, 0x49, 0x49, 0x4a, 0x4b, 35628c2ecf20Sopenharmony_ci 0x4b, 0x4c, 0x4c, 0x4d, 0x4e, 0x4e, 0x4f, 0x50, 35638c2ecf20Sopenharmony_ci 0x50, 0x51, 0x51, 0x52, 0x53, 0x53, 0x54, 0x54, 35648c2ecf20Sopenharmony_ci 0x55, 0x55, 0x56, 0x56, 0x57, 0x58, 0x58, 0x59, 35658c2ecf20Sopenharmony_ci 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c, 0x5d, 35668c2ecf20Sopenharmony_ci 0x5d, 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61, 35678c2ecf20Sopenharmony_ci 0x61, 0x62, 0x62, 0x63, 0x63, 0x64, 0x64, 0x65, 35688c2ecf20Sopenharmony_ci 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x68, 0x68, 35698c2ecf20Sopenharmony_ci 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6b, 0x6b, 0x6c, 35708c2ecf20Sopenharmony_ci 0x6c, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6f, 0x6f, 35718c2ecf20Sopenharmony_ci 0x6f, 0x70, 0x70, 0x71, 0x71, 0x71, 0x72, 0x72, 35728c2ecf20Sopenharmony_ci 0x73, 0x73, 0x73, 0x74, 0x74, 0x75, 0x75, 0x75, 35738c2ecf20Sopenharmony_ci 0x76, 0x76, 0x76, 0x77, 0x77, 0x78, 0x78, 0x78, 35748c2ecf20Sopenharmony_ci 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 35758c2ecf20Sopenharmony_ci 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 35768c2ecf20Sopenharmony_ci 0x7e, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x81, 35778c2ecf20Sopenharmony_ci 0x81, 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 35788c2ecf20Sopenharmony_ci 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x86, 35798c2ecf20Sopenharmony_ci 0x86, 0x86, 0x87, 0x87, 0x87, 0x88, 0x88, 0x88, 35808c2ecf20Sopenharmony_ci 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8b, 35818c2ecf20Sopenharmony_ci 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8c, 0x8d, 0x8d, 35828c2ecf20Sopenharmony_ci 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 35838c2ecf20Sopenharmony_ci 0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91, 35848c2ecf20Sopenharmony_ci 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x94, 35858c2ecf20Sopenharmony_ci 0x94, 0x94, 0x94, 0x95, 0x95, 0x95, 0x96, 0x96, 35868c2ecf20Sopenharmony_ci 0x96, 0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 35878c2ecf20Sopenharmony_ci 0x98, 0x98, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a, 35888c2ecf20Sopenharmony_ci 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 35898c2ecf20Sopenharmony_ci 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 35908c2ecf20Sopenharmony_ci 0x9e, 0x9e, 0x9f, 0x9f, 0x9f, 0x9f, 0xa0, 0xa0, 35918c2ecf20Sopenharmony_ci 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 35928c2ecf20Sopenharmony_ci 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 35938c2ecf20Sopenharmony_ci 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 35948c2ecf20Sopenharmony_ci 0xa6, 0xa6, 0xa6, 0xa6, 0xa7, 0xa7, 0xa7, 0xa7, 35958c2ecf20Sopenharmony_ci 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 35968c2ecf20Sopenharmony_ci 0xa9, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xab, 0xab, 35978c2ecf20Sopenharmony_ci 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad, 35988c2ecf20Sopenharmony_ci 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 35998c2ecf20Sopenharmony_ci 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 36008c2ecf20Sopenharmony_ci 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 36018c2ecf20Sopenharmony_ci 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 36028c2ecf20Sopenharmony_ci 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb5, 0xb5, 0xb5, 36038c2ecf20Sopenharmony_ci 0xb5, 0xb5, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 36048c2ecf20Sopenharmony_ci 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 36058c2ecf20Sopenharmony_ci 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 36068c2ecf20Sopenharmony_ci 0xba, 0xba, 0xba, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 36078c2ecf20Sopenharmony_ci 0xbb, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 36088c2ecf20Sopenharmony_ci 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 36098c2ecf20Sopenharmony_ci 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 36108c2ecf20Sopenharmony_ci 0xc0, 0xc0, 0xc0, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 36118c2ecf20Sopenharmony_ci 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 36128c2ecf20Sopenharmony_ci 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 36138c2ecf20Sopenharmony_ci 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 36148c2ecf20Sopenharmony_ci 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 36158c2ecf20Sopenharmony_ci 0xc7, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc9, 0xc9, 36168c2ecf20Sopenharmony_ci 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 36178c2ecf20Sopenharmony_ci 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 36188c2ecf20Sopenharmony_ci 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 36198c2ecf20Sopenharmony_ci 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 36208c2ecf20Sopenharmony_ci 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 36218c2ecf20Sopenharmony_ci 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 36228c2ecf20Sopenharmony_ci 0xd1, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd3, 36238c2ecf20Sopenharmony_ci 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 36248c2ecf20Sopenharmony_ci 0xd4, 0xd4, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 36258c2ecf20Sopenharmony_ci 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 36268c2ecf20Sopenharmony_ci 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 36278c2ecf20Sopenharmony_ci 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 36288c2ecf20Sopenharmony_ci 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 36298c2ecf20Sopenharmony_ci 0xdb, 0xdb, 0xdb, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 36308c2ecf20Sopenharmony_ci 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 36318c2ecf20Sopenharmony_ci 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 36328c2ecf20Sopenharmony_ci 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 36338c2ecf20Sopenharmony_ci 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 36348c2ecf20Sopenharmony_ci 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 36358c2ecf20Sopenharmony_ci 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 36368c2ecf20Sopenharmony_ci 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 36378c2ecf20Sopenharmony_ci 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 36388c2ecf20Sopenharmony_ci 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 36398c2ecf20Sopenharmony_ci 0xe9, 0xe9, 0xe9, 0xe9, 0xea, 0xea, 0xea, 0xea, 36408c2ecf20Sopenharmony_ci 0xea, 0xea, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 36418c2ecf20Sopenharmony_ci 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed, 36428c2ecf20Sopenharmony_ci 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee, 36438c2ecf20Sopenharmony_ci 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 36448c2ecf20Sopenharmony_ci 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 36458c2ecf20Sopenharmony_ci 0xf1, 0xf1, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 36468c2ecf20Sopenharmony_ci 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 36478c2ecf20Sopenharmony_ci 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 36488c2ecf20Sopenharmony_ci 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 36498c2ecf20Sopenharmony_ci 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 36508c2ecf20Sopenharmony_ci 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 36518c2ecf20Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 36528c2ecf20Sopenharmony_ci 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 36538c2ecf20Sopenharmony_ci 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 36548c2ecf20Sopenharmony_ci 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 36558c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 36568c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 36578c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 36588c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 36598c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 36608c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 36618c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 36628c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 36638c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 36648c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 36658c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 36668c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 36678c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 36688c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 36698c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 36708c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 36718c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 36728c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 36738c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 36748c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 36758c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 36768c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 36778c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 36788c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 36798c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 36808c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 36818c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, 36828c2ecf20Sopenharmony_ci {0x13, 0x15, 0x16, 0x18, 0x19, 0x1b, 0x1c, 0x1e, 36838c2ecf20Sopenharmony_ci 0x1f, 0x20, 0x22, 0x23, 0x24, 0x26, 0x27, 0x28, 36848c2ecf20Sopenharmony_ci 0x29, 0x2a, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 36858c2ecf20Sopenharmony_ci 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 36868c2ecf20Sopenharmony_ci 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 36878c2ecf20Sopenharmony_ci 0x42, 0x43, 0x44, 0x44, 0x45, 0x46, 0x47, 0x48, 36888c2ecf20Sopenharmony_ci 0x49, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4d, 0x4e, 36898c2ecf20Sopenharmony_ci 0x4f, 0x50, 0x50, 0x51, 0x52, 0x53, 0x53, 0x54, 36908c2ecf20Sopenharmony_ci 0x55, 0x55, 0x56, 0x57, 0x57, 0x58, 0x59, 0x59, 36918c2ecf20Sopenharmony_ci 0x5a, 0x5b, 0x5b, 0x5c, 0x5d, 0x5d, 0x5e, 0x5f, 36928c2ecf20Sopenharmony_ci 0x5f, 0x60, 0x60, 0x61, 0x62, 0x62, 0x63, 0x63, 36938c2ecf20Sopenharmony_ci 0x64, 0x65, 0x65, 0x66, 0x66, 0x67, 0x67, 0x68, 36948c2ecf20Sopenharmony_ci 0x69, 0x69, 0x6a, 0x6a, 0x6b, 0x6b, 0x6c, 0x6c, 36958c2ecf20Sopenharmony_ci 0x6d, 0x6d, 0x6e, 0x6e, 0x6f, 0x6f, 0x70, 0x70, 36968c2ecf20Sopenharmony_ci 0x71, 0x71, 0x72, 0x72, 0x73, 0x73, 0x74, 0x74, 36978c2ecf20Sopenharmony_ci 0x75, 0x75, 0x76, 0x76, 0x77, 0x77, 0x78, 0x78, 36988c2ecf20Sopenharmony_ci 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 36998c2ecf20Sopenharmony_ci 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7f, 0x7f, 37008c2ecf20Sopenharmony_ci 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x83, 37018c2ecf20Sopenharmony_ci 0x83, 0x84, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86, 37028c2ecf20Sopenharmony_ci 0x86, 0x87, 0x87, 0x88, 0x88, 0x88, 0x89, 0x89, 37038c2ecf20Sopenharmony_ci 0x89, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 37048c2ecf20Sopenharmony_ci 0x8c, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 37058c2ecf20Sopenharmony_ci 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 0x92, 0x92, 37068c2ecf20Sopenharmony_ci 0x92, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x95, 37078c2ecf20Sopenharmony_ci 0x95, 0x95, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 37088c2ecf20Sopenharmony_ci 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a, 0x9a, 37098c2ecf20Sopenharmony_ci 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9d, 37108c2ecf20Sopenharmony_ci 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9f, 0x9f, 37118c2ecf20Sopenharmony_ci 0x9f, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa2, 37128c2ecf20Sopenharmony_ci 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 37138c2ecf20Sopenharmony_ci 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa6, 37148c2ecf20Sopenharmony_ci 0xa7, 0xa7, 0xa7, 0xa7, 0xa8, 0xa8, 0xa8, 0xa9, 37158c2ecf20Sopenharmony_ci 0xa9, 0xa9, 0xa9, 0xaa, 0xaa, 0xaa, 0xab, 0xab, 37168c2ecf20Sopenharmony_ci 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xad, 0xad, 37178c2ecf20Sopenharmony_ci 0xad, 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf, 37188c2ecf20Sopenharmony_ci 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 37198c2ecf20Sopenharmony_ci 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 37208c2ecf20Sopenharmony_ci 0xb4, 0xb4, 0xb4, 0xb4, 0xb5, 0xb5, 0xb5, 0xb5, 37218c2ecf20Sopenharmony_ci 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 37228c2ecf20Sopenharmony_ci 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 37238c2ecf20Sopenharmony_ci 0xba, 0xba, 0xba, 0xba, 0xbb, 0xbb, 0xbb, 0xbb, 37248c2ecf20Sopenharmony_ci 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 37258c2ecf20Sopenharmony_ci 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 37268c2ecf20Sopenharmony_ci 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1, 0xc1, 0xc1, 37278c2ecf20Sopenharmony_ci 0xc1, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 37288c2ecf20Sopenharmony_ci 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5, 37298c2ecf20Sopenharmony_ci 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 37308c2ecf20Sopenharmony_ci 0xc7, 0xc7, 0xc7, 0xc7, 0xc8, 0xc8, 0xc8, 0xc8, 37318c2ecf20Sopenharmony_ci 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 37328c2ecf20Sopenharmony_ci 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 37338c2ecf20Sopenharmony_ci 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 37348c2ecf20Sopenharmony_ci 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 37358c2ecf20Sopenharmony_ci 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 37368c2ecf20Sopenharmony_ci 0xd1, 0xd1, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd3, 37378c2ecf20Sopenharmony_ci 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 37388c2ecf20Sopenharmony_ci 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd6, 0xd6, 0xd6, 37398c2ecf20Sopenharmony_ci 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 37408c2ecf20Sopenharmony_ci 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 37418c2ecf20Sopenharmony_ci 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb, 37428c2ecf20Sopenharmony_ci 0xdb, 0xdb, 0xdb, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 37438c2ecf20Sopenharmony_ci 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 37448c2ecf20Sopenharmony_ci 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 37458c2ecf20Sopenharmony_ci 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 37468c2ecf20Sopenharmony_ci 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 37478c2ecf20Sopenharmony_ci 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 37488c2ecf20Sopenharmony_ci 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 37498c2ecf20Sopenharmony_ci 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 37508c2ecf20Sopenharmony_ci 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 37518c2ecf20Sopenharmony_ci 0xe9, 0xe9, 0xe9, 0xea, 0xea, 0xea, 0xea, 0xea, 37528c2ecf20Sopenharmony_ci 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 37538c2ecf20Sopenharmony_ci 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 37548c2ecf20Sopenharmony_ci 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef, 37558c2ecf20Sopenharmony_ci 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 37568c2ecf20Sopenharmony_ci 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf2, 0xf2, 0xf2, 37578c2ecf20Sopenharmony_ci 0xf2, 0xf2, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 37588c2ecf20Sopenharmony_ci 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 37598c2ecf20Sopenharmony_ci 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 37608c2ecf20Sopenharmony_ci 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 37618c2ecf20Sopenharmony_ci 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 37628c2ecf20Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 37638c2ecf20Sopenharmony_ci 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 37648c2ecf20Sopenharmony_ci 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 37658c2ecf20Sopenharmony_ci 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37668c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37678c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37688c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37698c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37708c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37718c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37728c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37738c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37748c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37758c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37768c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37778c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37788c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37798c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37808c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37818c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37828c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37838c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37848c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37858c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37868c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37878c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37888c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37898c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37908c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37918c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37928c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37938c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37948c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37958c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37968c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37978c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37988c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 37998c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 38008c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 38018c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 38028c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 38038c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 38048c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 38058c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 38068c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 38078c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 38088c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 38098c2ecf20Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, 38108c2ecf20Sopenharmony_ci }, 38118c2ecf20Sopenharmony_ci }; 38128c2ecf20Sopenharmony_ci 38138c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00); 38148c2ecf20Sopenharmony_ci if (sd->bridge == BRIDGE_TP6810) 38158c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x02, 0x28); 38168c2ecf20Sopenharmony_ci/* msleep(50); */ 38178c2ecf20Sopenharmony_ci bulk_w(gspca_dev, 0x00, gamma_tb[gamma][0], 1024); 38188c2ecf20Sopenharmony_ci bulk_w(gspca_dev, 0x01, gamma_tb[gamma][1], 1024); 38198c2ecf20Sopenharmony_ci bulk_w(gspca_dev, 0x02, gamma_tb[gamma][2], 1024); 38208c2ecf20Sopenharmony_ci if (sd->bridge == BRIDGE_TP6810) { 38218c2ecf20Sopenharmony_ci int i; 38228c2ecf20Sopenharmony_ci 38238c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x02, 0x2b); 38248c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x02, 0x28); 38258c2ecf20Sopenharmony_ci for (i = 0; i < 6; i++) 38268c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R55_GAMMA_R, 38278c2ecf20Sopenharmony_ci gamma_tb[gamma][0][i]); 38288c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x02, 0x2b); 38298c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x02, 0x28); 38308c2ecf20Sopenharmony_ci for (i = 0; i < 6; i++) 38318c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R56_GAMMA_G, 38328c2ecf20Sopenharmony_ci gamma_tb[gamma][1][i]); 38338c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x02, 0x2b); 38348c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x02, 0x28); 38358c2ecf20Sopenharmony_ci for (i = 0; i < 6; i++) 38368c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R57_GAMMA_B, 38378c2ecf20Sopenharmony_ci gamma_tb[gamma][2][i]); 38388c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x02, 0x28); 38398c2ecf20Sopenharmony_ci } 38408c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x03); 38418c2ecf20Sopenharmony_ci/* msleep(50); */ 38428c2ecf20Sopenharmony_ci} 38438c2ecf20Sopenharmony_ci 38448c2ecf20Sopenharmony_cistatic void setsharpness(struct gspca_dev *gspca_dev, s32 val) 38458c2ecf20Sopenharmony_ci{ 38468c2ecf20Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 38478c2ecf20Sopenharmony_ci 38488c2ecf20Sopenharmony_ci if (sd->bridge == BRIDGE_TP6800) { 38498c2ecf20Sopenharmony_ci val |= 0x08; /* grid compensation enable */ 38508c2ecf20Sopenharmony_ci if (gspca_dev->pixfmt.width == 640) 38518c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00); /* vga */ 38528c2ecf20Sopenharmony_ci else 38538c2ecf20Sopenharmony_ci val |= 0x04; /* scaling down enable */ 38548c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R5D_DEMOSAIC_CFG, val); 38558c2ecf20Sopenharmony_ci } else { 38568c2ecf20Sopenharmony_ci val = (val << 5) | 0x08; 38578c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x59, val); 38588c2ecf20Sopenharmony_ci } 38598c2ecf20Sopenharmony_ci} 38608c2ecf20Sopenharmony_ci 38618c2ecf20Sopenharmony_cistatic void setautogain(struct gspca_dev *gspca_dev, s32 val) 38628c2ecf20Sopenharmony_ci{ 38638c2ecf20Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 38648c2ecf20Sopenharmony_ci 38658c2ecf20Sopenharmony_ci sd->ag_cnt = val ? AG_CNT_START : -1; 38668c2ecf20Sopenharmony_ci} 38678c2ecf20Sopenharmony_ci 38688c2ecf20Sopenharmony_ci/* set the resolution for sensor cx0342 */ 38698c2ecf20Sopenharmony_cistatic void set_resolution(struct gspca_dev *gspca_dev) 38708c2ecf20Sopenharmony_ci{ 38718c2ecf20Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 38728c2ecf20Sopenharmony_ci 38738c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00); 38748c2ecf20Sopenharmony_ci if (gspca_dev->pixfmt.width == 320) { 38758c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x06); 38768c2ecf20Sopenharmony_ci msleep(100); 38778c2ecf20Sopenharmony_ci i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01); 38788c2ecf20Sopenharmony_ci msleep(100); 38798c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x03); 38808c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R78_FORMAT, 0x01); /* qvga */ 38818c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R5D_DEMOSAIC_CFG, 0x0d); 38828c2ecf20Sopenharmony_ci i2c_w(gspca_dev, CX0342_EXPO_LINE_L, 0x37); 38838c2ecf20Sopenharmony_ci i2c_w(gspca_dev, CX0342_EXPO_LINE_H, 0x01); 38848c2ecf20Sopenharmony_ci } else { 38858c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x05); 38868c2ecf20Sopenharmony_ci msleep(100); 38878c2ecf20Sopenharmony_ci i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01); 38888c2ecf20Sopenharmony_ci msleep(100); 38898c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x03); 38908c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00); /* vga */ 38918c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R5D_DEMOSAIC_CFG, 0x09); 38928c2ecf20Sopenharmony_ci i2c_w(gspca_dev, CX0342_EXPO_LINE_L, 0xcf); 38938c2ecf20Sopenharmony_ci i2c_w(gspca_dev, CX0342_EXPO_LINE_H, 0x00); 38948c2ecf20Sopenharmony_ci } 38958c2ecf20Sopenharmony_ci i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x01); 38968c2ecf20Sopenharmony_ci bulk_w(gspca_dev, 0x03, color_gain[SENSOR_CX0342], 38978c2ecf20Sopenharmony_ci ARRAY_SIZE(color_gain[0])); 38988c2ecf20Sopenharmony_ci setgamma(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma)); 38998c2ecf20Sopenharmony_ci if (sd->sensor == SENSOR_SOI763A) 39008c2ecf20Sopenharmony_ci setquality(gspca_dev, v4l2_ctrl_g_ctrl(sd->jpegqual)); 39018c2ecf20Sopenharmony_ci} 39028c2ecf20Sopenharmony_ci 39038c2ecf20Sopenharmony_ci/* convert the frame rate to a tp68x0 value */ 39048c2ecf20Sopenharmony_cistatic int get_fr_idx(struct gspca_dev *gspca_dev) 39058c2ecf20Sopenharmony_ci{ 39068c2ecf20Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 39078c2ecf20Sopenharmony_ci int i; 39088c2ecf20Sopenharmony_ci 39098c2ecf20Sopenharmony_ci if (sd->bridge == BRIDGE_TP6800) { 39108c2ecf20Sopenharmony_ci for (i = 0; i < ARRAY_SIZE(rates) - 1; i++) { 39118c2ecf20Sopenharmony_ci if (sd->framerate >= rates[i]) 39128c2ecf20Sopenharmony_ci break; 39138c2ecf20Sopenharmony_ci } 39148c2ecf20Sopenharmony_ci i = 6 - i; /* 1 = 5fps .. 6 = 30fps */ 39158c2ecf20Sopenharmony_ci 39168c2ecf20Sopenharmony_ci /* 640x480 * 30 fps does not work */ 39178c2ecf20Sopenharmony_ci if (i == 6 /* if 30 fps */ 39188c2ecf20Sopenharmony_ci && gspca_dev->pixfmt.width == 640) 39198c2ecf20Sopenharmony_ci i = 0x05; /* 15 fps */ 39208c2ecf20Sopenharmony_ci } else { 39218c2ecf20Sopenharmony_ci for (i = 0; i < ARRAY_SIZE(rates_6810) - 1; i++) { 39228c2ecf20Sopenharmony_ci if (sd->framerate >= rates_6810[i]) 39238c2ecf20Sopenharmony_ci break; 39248c2ecf20Sopenharmony_ci } 39258c2ecf20Sopenharmony_ci i = 7 - i; /* 3 = 5fps .. 7 = 30fps */ 39268c2ecf20Sopenharmony_ci 39278c2ecf20Sopenharmony_ci /* 640x480 * 30 fps does not work */ 39288c2ecf20Sopenharmony_ci if (i == 7 /* if 30 fps */ 39298c2ecf20Sopenharmony_ci && gspca_dev->pixfmt.width == 640) 39308c2ecf20Sopenharmony_ci i = 6; /* 15 fps */ 39318c2ecf20Sopenharmony_ci i |= 0x80; /* clock * 1 */ 39328c2ecf20Sopenharmony_ci } 39338c2ecf20Sopenharmony_ci return i; 39348c2ecf20Sopenharmony_ci} 39358c2ecf20Sopenharmony_ci 39368c2ecf20Sopenharmony_cistatic void setframerate(struct gspca_dev *gspca_dev, s32 val) 39378c2ecf20Sopenharmony_ci{ 39388c2ecf20Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 39398c2ecf20Sopenharmony_ci u8 fr_idx; 39408c2ecf20Sopenharmony_ci 39418c2ecf20Sopenharmony_ci fr_idx = get_fr_idx(gspca_dev); 39428c2ecf20Sopenharmony_ci 39438c2ecf20Sopenharmony_ci if (sd->bridge == BRIDGE_TP6810) { 39448c2ecf20Sopenharmony_ci reg_r(gspca_dev, 0x7b); 39458c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x7b, 39468c2ecf20Sopenharmony_ci sd->sensor == SENSOR_CX0342 ? 0x10 : 0x90); 39478c2ecf20Sopenharmony_ci if (val >= 128) 39488c2ecf20Sopenharmony_ci fr_idx = 0xf0; /* lower frame rate */ 39498c2ecf20Sopenharmony_ci } 39508c2ecf20Sopenharmony_ci 39518c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, fr_idx); 39528c2ecf20Sopenharmony_ci 39538c2ecf20Sopenharmony_ci if (sd->sensor == SENSOR_CX0342) 39548c2ecf20Sopenharmony_ci i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01); 39558c2ecf20Sopenharmony_ci} 39568c2ecf20Sopenharmony_ci 39578c2ecf20Sopenharmony_cistatic void setrgain(struct gspca_dev *gspca_dev, s32 rgain) 39588c2ecf20Sopenharmony_ci{ 39598c2ecf20Sopenharmony_ci i2c_w(gspca_dev, CX0342_RAW_RGAIN_H, rgain >> 8); 39608c2ecf20Sopenharmony_ci i2c_w(gspca_dev, CX0342_RAW_RGAIN_L, rgain); 39618c2ecf20Sopenharmony_ci i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x80); 39628c2ecf20Sopenharmony_ci} 39638c2ecf20Sopenharmony_ci 39648c2ecf20Sopenharmony_cistatic int sd_setgain(struct gspca_dev *gspca_dev) 39658c2ecf20Sopenharmony_ci{ 39668c2ecf20Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 39678c2ecf20Sopenharmony_ci s32 val = gspca_dev->gain->val; 39688c2ecf20Sopenharmony_ci 39698c2ecf20Sopenharmony_ci if (sd->sensor == SENSOR_CX0342) { 39708c2ecf20Sopenharmony_ci s32 old = gspca_dev->gain->cur.val ? 39718c2ecf20Sopenharmony_ci gspca_dev->gain->cur.val : 1; 39728c2ecf20Sopenharmony_ci 39738c2ecf20Sopenharmony_ci sd->blue->val = sd->blue->val * val / old; 39748c2ecf20Sopenharmony_ci if (sd->blue->val > 4095) 39758c2ecf20Sopenharmony_ci sd->blue->val = 4095; 39768c2ecf20Sopenharmony_ci sd->red->val = sd->red->val * val / old; 39778c2ecf20Sopenharmony_ci if (sd->red->val > 4095) 39788c2ecf20Sopenharmony_ci sd->red->val = 4095; 39798c2ecf20Sopenharmony_ci } 39808c2ecf20Sopenharmony_ci if (gspca_dev->streaming) { 39818c2ecf20Sopenharmony_ci if (sd->sensor == SENSOR_CX0342) 39828c2ecf20Sopenharmony_ci setexposure(gspca_dev, gspca_dev->exposure->val, 39838c2ecf20Sopenharmony_ci gspca_dev->gain->val, 39848c2ecf20Sopenharmony_ci sd->blue->val, sd->red->val); 39858c2ecf20Sopenharmony_ci else 39868c2ecf20Sopenharmony_ci setexposure(gspca_dev, gspca_dev->exposure->val, 39878c2ecf20Sopenharmony_ci gspca_dev->gain->val, 0, 0); 39888c2ecf20Sopenharmony_ci } 39898c2ecf20Sopenharmony_ci return gspca_dev->usb_err; 39908c2ecf20Sopenharmony_ci} 39918c2ecf20Sopenharmony_ci 39928c2ecf20Sopenharmony_cistatic void setbgain(struct gspca_dev *gspca_dev, s32 bgain) 39938c2ecf20Sopenharmony_ci{ 39948c2ecf20Sopenharmony_ci i2c_w(gspca_dev, CX0342_RAW_BGAIN_H, bgain >> 8); 39958c2ecf20Sopenharmony_ci i2c_w(gspca_dev, CX0342_RAW_BGAIN_L, bgain); 39968c2ecf20Sopenharmony_ci i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x80); 39978c2ecf20Sopenharmony_ci} 39988c2ecf20Sopenharmony_ci 39998c2ecf20Sopenharmony_ci/* this function is called at probe time */ 40008c2ecf20Sopenharmony_cistatic int sd_config(struct gspca_dev *gspca_dev, 40018c2ecf20Sopenharmony_ci const struct usb_device_id *id) 40028c2ecf20Sopenharmony_ci{ 40038c2ecf20Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 40048c2ecf20Sopenharmony_ci 40058c2ecf20Sopenharmony_ci sd->bridge = id->driver_info; 40068c2ecf20Sopenharmony_ci 40078c2ecf20Sopenharmony_ci gspca_dev->cam.cam_mode = vga_mode; 40088c2ecf20Sopenharmony_ci gspca_dev->cam.nmodes = ARRAY_SIZE(vga_mode); 40098c2ecf20Sopenharmony_ci gspca_dev->cam.mode_framerates = sd->bridge == BRIDGE_TP6800 ? 40108c2ecf20Sopenharmony_ci framerates : framerates_6810; 40118c2ecf20Sopenharmony_ci 40128c2ecf20Sopenharmony_ci sd->framerate = DEFAULT_FRAME_RATE; 40138c2ecf20Sopenharmony_ci return 0; 40148c2ecf20Sopenharmony_ci} 40158c2ecf20Sopenharmony_ci 40168c2ecf20Sopenharmony_ci/* this function is called at probe and resume time */ 40178c2ecf20Sopenharmony_cistatic int sd_init(struct gspca_dev *gspca_dev) 40188c2ecf20Sopenharmony_ci{ 40198c2ecf20Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 40208c2ecf20Sopenharmony_ci static const struct cmd tp6800_preinit[] = { 40218c2ecf20Sopenharmony_ci {TP6800_R10_SIF_TYPE, 0x01}, /* sif */ 40228c2ecf20Sopenharmony_ci {TP6800_R11_SIF_CONTROL, 0x01}, 40238c2ecf20Sopenharmony_ci {TP6800_R15_GPIO_PU, 0x9f}, 40248c2ecf20Sopenharmony_ci {TP6800_R16_GPIO_PD, 0x9f}, 40258c2ecf20Sopenharmony_ci {TP6800_R17_GPIO_IO, 0x80}, 40268c2ecf20Sopenharmony_ci {TP6800_R18_GPIO_DATA, 0x40}, /* LED off */ 40278c2ecf20Sopenharmony_ci }; 40288c2ecf20Sopenharmony_ci static const struct cmd tp6810_preinit[] = { 40298c2ecf20Sopenharmony_ci {TP6800_R2F_TIMING_CFG, 0x2f}, 40308c2ecf20Sopenharmony_ci {TP6800_R15_GPIO_PU, 0x6f}, 40318c2ecf20Sopenharmony_ci {TP6800_R16_GPIO_PD, 0x40}, 40328c2ecf20Sopenharmony_ci {TP6800_R17_GPIO_IO, 0x9f}, 40338c2ecf20Sopenharmony_ci {TP6800_R18_GPIO_DATA, 0xc1}, /* LED off */ 40348c2ecf20Sopenharmony_ci }; 40358c2ecf20Sopenharmony_ci 40368c2ecf20Sopenharmony_ci if (sd->bridge == BRIDGE_TP6800) 40378c2ecf20Sopenharmony_ci reg_w_buf(gspca_dev, tp6800_preinit, 40388c2ecf20Sopenharmony_ci ARRAY_SIZE(tp6800_preinit)); 40398c2ecf20Sopenharmony_ci else 40408c2ecf20Sopenharmony_ci reg_w_buf(gspca_dev, tp6810_preinit, 40418c2ecf20Sopenharmony_ci ARRAY_SIZE(tp6810_preinit)); 40428c2ecf20Sopenharmony_ci msleep(15); 40438c2ecf20Sopenharmony_ci reg_r(gspca_dev, TP6800_R18_GPIO_DATA); 40448c2ecf20Sopenharmony_ci gspca_dbg(gspca_dev, D_PROBE, "gpio: %02x\n", gspca_dev->usb_buf[0]); 40458c2ecf20Sopenharmony_ci/* values: 40468c2ecf20Sopenharmony_ci * 0x80: snapshot button 40478c2ecf20Sopenharmony_ci * 0x40: LED 40488c2ecf20Sopenharmony_ci * 0x20: (bridge / sensor) reset for tp6810 ? 40498c2ecf20Sopenharmony_ci * 0x07: sensor type ? 40508c2ecf20Sopenharmony_ci */ 40518c2ecf20Sopenharmony_ci 40528c2ecf20Sopenharmony_ci /* guess the sensor type */ 40538c2ecf20Sopenharmony_ci if (force_sensor >= 0) { 40548c2ecf20Sopenharmony_ci sd->sensor = force_sensor; 40558c2ecf20Sopenharmony_ci } else { 40568c2ecf20Sopenharmony_ci if (sd->bridge == BRIDGE_TP6800) { 40578c2ecf20Sopenharmony_ci/*fixme: not sure this is working*/ 40588c2ecf20Sopenharmony_ci switch (gspca_dev->usb_buf[0] & 0x07) { 40598c2ecf20Sopenharmony_ci case 0: 40608c2ecf20Sopenharmony_ci sd->sensor = SENSOR_SOI763A; 40618c2ecf20Sopenharmony_ci break; 40628c2ecf20Sopenharmony_ci case 1: 40638c2ecf20Sopenharmony_ci sd->sensor = SENSOR_CX0342; 40648c2ecf20Sopenharmony_ci break; 40658c2ecf20Sopenharmony_ci } 40668c2ecf20Sopenharmony_ci } else { 40678c2ecf20Sopenharmony_ci int sensor; 40688c2ecf20Sopenharmony_ci 40698c2ecf20Sopenharmony_ci sensor = probe_6810(gspca_dev); 40708c2ecf20Sopenharmony_ci if (sensor < 0) { 40718c2ecf20Sopenharmony_ci pr_warn("Unknown sensor %d - forced to soi763a\n", 40728c2ecf20Sopenharmony_ci -sensor); 40738c2ecf20Sopenharmony_ci sensor = SENSOR_SOI763A; 40748c2ecf20Sopenharmony_ci } 40758c2ecf20Sopenharmony_ci sd->sensor = sensor; 40768c2ecf20Sopenharmony_ci } 40778c2ecf20Sopenharmony_ci } 40788c2ecf20Sopenharmony_ci if (sd->sensor == SENSOR_SOI763A) { 40798c2ecf20Sopenharmony_ci pr_info("Sensor soi763a\n"); 40808c2ecf20Sopenharmony_ci if (sd->bridge == BRIDGE_TP6810) { 40818c2ecf20Sopenharmony_ci soi763a_6810_init(gspca_dev); 40828c2ecf20Sopenharmony_ci } 40838c2ecf20Sopenharmony_ci } else { 40848c2ecf20Sopenharmony_ci pr_info("Sensor cx0342\n"); 40858c2ecf20Sopenharmony_ci if (sd->bridge == BRIDGE_TP6810) { 40868c2ecf20Sopenharmony_ci cx0342_6810_init(gspca_dev); 40878c2ecf20Sopenharmony_ci } 40888c2ecf20Sopenharmony_ci } 40898c2ecf20Sopenharmony_ci 40908c2ecf20Sopenharmony_ci set_dqt(gspca_dev, 0); 40918c2ecf20Sopenharmony_ci return 0; 40928c2ecf20Sopenharmony_ci} 40938c2ecf20Sopenharmony_ci 40948c2ecf20Sopenharmony_ci/* This function is called before choosing the alt setting */ 40958c2ecf20Sopenharmony_cistatic int sd_isoc_init(struct gspca_dev *gspca_dev) 40968c2ecf20Sopenharmony_ci{ 40978c2ecf20Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 40988c2ecf20Sopenharmony_ci static const struct cmd cx_sensor_init[] = { 40998c2ecf20Sopenharmony_ci {CX0342_AUTO_ADC_CALIB, 0x81}, 41008c2ecf20Sopenharmony_ci {CX0342_EXPO_LINE_L, 0x37}, 41018c2ecf20Sopenharmony_ci {CX0342_EXPO_LINE_H, 0x01}, 41028c2ecf20Sopenharmony_ci {CX0342_RAW_GRGAIN_L, 0x00}, 41038c2ecf20Sopenharmony_ci {CX0342_RAW_GBGAIN_L, 0x00}, 41048c2ecf20Sopenharmony_ci {CX0342_RAW_RGAIN_L, 0x00}, 41058c2ecf20Sopenharmony_ci {CX0342_RAW_BGAIN_L, 0x00}, 41068c2ecf20Sopenharmony_ci {CX0342_SYS_CTRL_0, 0x81}, 41078c2ecf20Sopenharmony_ci }; 41088c2ecf20Sopenharmony_ci static const struct cmd cx_bridge_init[] = { 41098c2ecf20Sopenharmony_ci {0x4d, 0x00}, 41108c2ecf20Sopenharmony_ci {0x4c, 0xff}, 41118c2ecf20Sopenharmony_ci {0x4e, 0xff}, 41128c2ecf20Sopenharmony_ci {0x4f, 0x00}, 41138c2ecf20Sopenharmony_ci }; 41148c2ecf20Sopenharmony_ci static const struct cmd ov_sensor_init[] = { 41158c2ecf20Sopenharmony_ci {0x10, 0x75}, /* exposure */ 41168c2ecf20Sopenharmony_ci {0x76, 0x03}, 41178c2ecf20Sopenharmony_ci {0x00, 0x00}, /* gain */ 41188c2ecf20Sopenharmony_ci }; 41198c2ecf20Sopenharmony_ci static const struct cmd ov_bridge_init[] = { 41208c2ecf20Sopenharmony_ci {0x7b, 0x90}, 41218c2ecf20Sopenharmony_ci {TP6800_R3F_FRAME_RATE, 0x87}, 41228c2ecf20Sopenharmony_ci }; 41238c2ecf20Sopenharmony_ci 41248c2ecf20Sopenharmony_ci if (sd->bridge == BRIDGE_TP6800) 41258c2ecf20Sopenharmony_ci return 0; 41268c2ecf20Sopenharmony_ci if (sd->sensor == SENSOR_CX0342) { 41278c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x20); 41288c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x87); 41298c2ecf20Sopenharmony_ci i2c_w_buf(gspca_dev, cx_sensor_init, 41308c2ecf20Sopenharmony_ci ARRAY_SIZE(cx_sensor_init)); 41318c2ecf20Sopenharmony_ci reg_w_buf(gspca_dev, cx_bridge_init, 41328c2ecf20Sopenharmony_ci ARRAY_SIZE(cx_bridge_init)); 41338c2ecf20Sopenharmony_ci bulk_w(gspca_dev, 0x03, color_null, sizeof color_null); 41348c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x59, 0x40); 41358c2ecf20Sopenharmony_ci } else { 41368c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x21); 41378c2ecf20Sopenharmony_ci i2c_w_buf(gspca_dev, ov_sensor_init, 41388c2ecf20Sopenharmony_ci ARRAY_SIZE(ov_sensor_init)); 41398c2ecf20Sopenharmony_ci reg_r(gspca_dev, 0x7b); 41408c2ecf20Sopenharmony_ci reg_w_buf(gspca_dev, ov_bridge_init, 41418c2ecf20Sopenharmony_ci ARRAY_SIZE(ov_bridge_init)); 41428c2ecf20Sopenharmony_ci } 41438c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R78_FORMAT, 41448c2ecf20Sopenharmony_ci gspca_dev->curr_mode ? 0x00 : 0x01); 41458c2ecf20Sopenharmony_ci return gspca_dev->usb_err; 41468c2ecf20Sopenharmony_ci} 41478c2ecf20Sopenharmony_ci 41488c2ecf20Sopenharmony_cistatic void set_led(struct gspca_dev *gspca_dev, int on) 41498c2ecf20Sopenharmony_ci{ 41508c2ecf20Sopenharmony_ci u8 data; 41518c2ecf20Sopenharmony_ci 41528c2ecf20Sopenharmony_ci reg_r(gspca_dev, TP6800_R18_GPIO_DATA); 41538c2ecf20Sopenharmony_ci data = gspca_dev->usb_buf[0]; 41548c2ecf20Sopenharmony_ci if (on) 41558c2ecf20Sopenharmony_ci data &= ~0x40; 41568c2ecf20Sopenharmony_ci else 41578c2ecf20Sopenharmony_ci data |= 0x40; 41588c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, data); 41598c2ecf20Sopenharmony_ci} 41608c2ecf20Sopenharmony_ci 41618c2ecf20Sopenharmony_cistatic void cx0342_6800_start(struct gspca_dev *gspca_dev) 41628c2ecf20Sopenharmony_ci{ 41638c2ecf20Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 41648c2ecf20Sopenharmony_ci static const struct cmd reg_init[] = { 41658c2ecf20Sopenharmony_ci /* fixme: is this useful? */ 41668c2ecf20Sopenharmony_ci {TP6800_R17_GPIO_IO, 0x9f}, 41678c2ecf20Sopenharmony_ci {TP6800_R16_GPIO_PD, 0x40}, 41688c2ecf20Sopenharmony_ci {TP6800_R10_SIF_TYPE, 0x00}, /* i2c 8 bits */ 41698c2ecf20Sopenharmony_ci {TP6800_R50, 0x00}, 41708c2ecf20Sopenharmony_ci {TP6800_R51, 0x00}, 41718c2ecf20Sopenharmony_ci {TP6800_R52, 0xff}, 41728c2ecf20Sopenharmony_ci {TP6800_R53, 0x03}, 41738c2ecf20Sopenharmony_ci {TP6800_R54_DARK_CFG, 0x07}, 41748c2ecf20Sopenharmony_ci {TP6800_R5C_EDGE_THRLD, 0x40}, 41758c2ecf20Sopenharmony_ci {TP6800_R7A_BLK_THRLD, 0x40}, 41768c2ecf20Sopenharmony_ci {TP6800_R2F_TIMING_CFG, 0x17}, 41778c2ecf20Sopenharmony_ci {TP6800_R30_SENSOR_CFG, 0x18}, /* G1B..RG0 */ 41788c2ecf20Sopenharmony_ci {TP6800_R37_FRONT_DARK_ST, 0x00}, 41798c2ecf20Sopenharmony_ci {TP6800_R38_FRONT_DARK_END, 0x00}, 41808c2ecf20Sopenharmony_ci {TP6800_R39_REAR_DARK_ST_L, 0x00}, 41818c2ecf20Sopenharmony_ci {TP6800_R3A_REAR_DARK_ST_H, 0x00}, 41828c2ecf20Sopenharmony_ci {TP6800_R3B_REAR_DARK_END_L, 0x00}, 41838c2ecf20Sopenharmony_ci {TP6800_R3C_REAR_DARK_END_H, 0x00}, 41848c2ecf20Sopenharmony_ci {TP6800_R3D_HORIZ_DARK_LINE_L, 0x00}, 41858c2ecf20Sopenharmony_ci {TP6800_R3E_HORIZ_DARK_LINE_H, 0x00}, 41868c2ecf20Sopenharmony_ci {TP6800_R21_ENDP_1_CTL, 0x03}, 41878c2ecf20Sopenharmony_ci 41888c2ecf20Sopenharmony_ci {TP6800_R31_PIXEL_START, 0x0b}, 41898c2ecf20Sopenharmony_ci {TP6800_R32_PIXEL_END_L, 0x8a}, 41908c2ecf20Sopenharmony_ci {TP6800_R33_PIXEL_END_H, 0x02}, 41918c2ecf20Sopenharmony_ci {TP6800_R34_LINE_START, 0x0e}, 41928c2ecf20Sopenharmony_ci {TP6800_R35_LINE_END_L, 0xf4}, 41938c2ecf20Sopenharmony_ci {TP6800_R36_LINE_END_H, 0x01}, 41948c2ecf20Sopenharmony_ci {TP6800_R78_FORMAT, 0x00}, 41958c2ecf20Sopenharmony_ci {TP6800_R12_SIF_ADDR_S, 0x20}, /* cx0342 i2c addr */ 41968c2ecf20Sopenharmony_ci }; 41978c2ecf20Sopenharmony_ci static const struct cmd sensor_init[] = { 41988c2ecf20Sopenharmony_ci {CX0342_OUTPUT_CTRL, 0x07}, 41998c2ecf20Sopenharmony_ci {CX0342_BYPASS_MODE, 0x58}, 42008c2ecf20Sopenharmony_ci {CX0342_GPXLTHD_L, 0x16}, 42018c2ecf20Sopenharmony_ci {CX0342_RBPXLTHD_L, 0x16}, 42028c2ecf20Sopenharmony_ci {CX0342_PLANETHD_L, 0xc0}, 42038c2ecf20Sopenharmony_ci {CX0342_PLANETHD_H, 0x03}, 42048c2ecf20Sopenharmony_ci {CX0342_RB_GAP_L, 0xff}, 42058c2ecf20Sopenharmony_ci {CX0342_RB_GAP_H, 0x07}, 42068c2ecf20Sopenharmony_ci {CX0342_G_GAP_L, 0xff}, 42078c2ecf20Sopenharmony_ci {CX0342_G_GAP_H, 0x07}, 42088c2ecf20Sopenharmony_ci {CX0342_RST_OVERFLOW_L, 0x5c}, 42098c2ecf20Sopenharmony_ci {CX0342_RST_OVERFLOW_H, 0x01}, 42108c2ecf20Sopenharmony_ci {CX0342_DATA_OVERFLOW_L, 0xfc}, 42118c2ecf20Sopenharmony_ci {CX0342_DATA_OVERFLOW_H, 0x03}, 42128c2ecf20Sopenharmony_ci {CX0342_DATA_UNDERFLOW_L, 0x00}, 42138c2ecf20Sopenharmony_ci {CX0342_DATA_UNDERFLOW_H, 0x00}, 42148c2ecf20Sopenharmony_ci {CX0342_SYS_CTRL_0, 0x40}, 42158c2ecf20Sopenharmony_ci {CX0342_GLOBAL_GAIN, 0x01}, 42168c2ecf20Sopenharmony_ci {CX0342_CLOCK_GEN, 0x00}, 42178c2ecf20Sopenharmony_ci {CX0342_SYS_CTRL_0, 0x02}, 42188c2ecf20Sopenharmony_ci {CX0342_IDLE_CTRL, 0x05}, 42198c2ecf20Sopenharmony_ci {CX0342_ADCGN, 0x00}, 42208c2ecf20Sopenharmony_ci {CX0342_ADC_CTL, 0x00}, 42218c2ecf20Sopenharmony_ci {CX0342_LVRST_BLBIAS, 0x01}, 42228c2ecf20Sopenharmony_ci {CX0342_VTHSEL, 0x0b}, 42238c2ecf20Sopenharmony_ci {CX0342_RAMP_RIV, 0x0b}, 42248c2ecf20Sopenharmony_ci {CX0342_LDOSEL, 0x07}, 42258c2ecf20Sopenharmony_ci {CX0342_SPV_VALUE_L, 0x40}, 42268c2ecf20Sopenharmony_ci {CX0342_SPV_VALUE_H, 0x02}, 42278c2ecf20Sopenharmony_ci }; 42288c2ecf20Sopenharmony_ci 42298c2ecf20Sopenharmony_ci reg_w_buf(gspca_dev, reg_init, ARRAY_SIZE(reg_init)); 42308c2ecf20Sopenharmony_ci i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init)); 42318c2ecf20Sopenharmony_ci i2c_w_buf(gspca_dev, cx0342_timing_seq, ARRAY_SIZE(cx0342_timing_seq)); 42328c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R5C_EDGE_THRLD, 0x10); 42338c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R54_DARK_CFG, 0x00); 42348c2ecf20Sopenharmony_ci i2c_w(gspca_dev, CX0342_EXPO_LINE_H, 0x00); 42358c2ecf20Sopenharmony_ci i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x01); 42368c2ecf20Sopenharmony_ci if (sd->sensor == SENSOR_CX0342) 42378c2ecf20Sopenharmony_ci setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure), 42388c2ecf20Sopenharmony_ci v4l2_ctrl_g_ctrl(gspca_dev->gain), 42398c2ecf20Sopenharmony_ci v4l2_ctrl_g_ctrl(sd->blue), 42408c2ecf20Sopenharmony_ci v4l2_ctrl_g_ctrl(sd->red)); 42418c2ecf20Sopenharmony_ci else 42428c2ecf20Sopenharmony_ci setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure), 42438c2ecf20Sopenharmony_ci v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0); 42448c2ecf20Sopenharmony_ci set_led(gspca_dev, 1); 42458c2ecf20Sopenharmony_ci set_resolution(gspca_dev); 42468c2ecf20Sopenharmony_ci} 42478c2ecf20Sopenharmony_ci 42488c2ecf20Sopenharmony_cistatic void cx0342_6810_start(struct gspca_dev *gspca_dev) 42498c2ecf20Sopenharmony_ci{ 42508c2ecf20Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 42518c2ecf20Sopenharmony_ci static const struct cmd sensor_init_2[] = { 42528c2ecf20Sopenharmony_ci {CX0342_EXPO_LINE_L, 0x6f}, 42538c2ecf20Sopenharmony_ci {CX0342_EXPO_LINE_H, 0x02}, 42548c2ecf20Sopenharmony_ci {CX0342_RAW_GRGAIN_L, 0x00}, 42558c2ecf20Sopenharmony_ci {CX0342_RAW_GBGAIN_L, 0x00}, 42568c2ecf20Sopenharmony_ci {CX0342_RAW_RGAIN_L, 0x00}, 42578c2ecf20Sopenharmony_ci {CX0342_RAW_BGAIN_L, 0x00}, 42588c2ecf20Sopenharmony_ci {CX0342_SYS_CTRL_0, 0x81}, 42598c2ecf20Sopenharmony_ci }; 42608c2ecf20Sopenharmony_ci static const struct cmd bridge_init_2[] = { 42618c2ecf20Sopenharmony_ci {0x4d, 0x00}, 42628c2ecf20Sopenharmony_ci {0x4c, 0xff}, 42638c2ecf20Sopenharmony_ci {0x4e, 0xff}, 42648c2ecf20Sopenharmony_ci {0x4f, 0x00}, 42658c2ecf20Sopenharmony_ci {TP6800_R7A_BLK_THRLD, 0x00}, 42668c2ecf20Sopenharmony_ci {TP6800_R79_QUALITY, 0x04}, 42678c2ecf20Sopenharmony_ci {TP6800_R79_QUALITY, 0x01}, 42688c2ecf20Sopenharmony_ci }; 42698c2ecf20Sopenharmony_ci static const struct cmd bridge_init_3[] = { 42708c2ecf20Sopenharmony_ci {TP6800_R31_PIXEL_START, 0x08}, 42718c2ecf20Sopenharmony_ci {TP6800_R32_PIXEL_END_L, 0x87}, 42728c2ecf20Sopenharmony_ci {TP6800_R33_PIXEL_END_H, 0x02}, 42738c2ecf20Sopenharmony_ci {TP6800_R34_LINE_START, 0x0e}, 42748c2ecf20Sopenharmony_ci {TP6800_R35_LINE_END_L, 0xf4}, 42758c2ecf20Sopenharmony_ci {TP6800_R36_LINE_END_H, 0x01}, 42768c2ecf20Sopenharmony_ci }; 42778c2ecf20Sopenharmony_ci static const struct cmd sensor_init_3[] = { 42788c2ecf20Sopenharmony_ci {CX0342_AUTO_ADC_CALIB, 0x81}, 42798c2ecf20Sopenharmony_ci {CX0342_EXPO_LINE_L, 0x6f}, 42808c2ecf20Sopenharmony_ci {CX0342_EXPO_LINE_H, 0x02}, 42818c2ecf20Sopenharmony_ci {CX0342_RAW_GRGAIN_L, 0x00}, 42828c2ecf20Sopenharmony_ci {CX0342_RAW_GBGAIN_L, 0x00}, 42838c2ecf20Sopenharmony_ci {CX0342_RAW_RGAIN_L, 0x00}, 42848c2ecf20Sopenharmony_ci {CX0342_RAW_BGAIN_L, 0x00}, 42858c2ecf20Sopenharmony_ci {CX0342_SYS_CTRL_0, 0x81}, 42868c2ecf20Sopenharmony_ci }; 42878c2ecf20Sopenharmony_ci static const struct cmd bridge_init_5[] = { 42888c2ecf20Sopenharmony_ci {0x4d, 0x00}, 42898c2ecf20Sopenharmony_ci {0x4c, 0xff}, 42908c2ecf20Sopenharmony_ci {0x4e, 0xff}, 42918c2ecf20Sopenharmony_ci {0x4f, 0x00}, 42928c2ecf20Sopenharmony_ci }; 42938c2ecf20Sopenharmony_ci static const struct cmd sensor_init_4[] = { 42948c2ecf20Sopenharmony_ci {CX0342_EXPO_LINE_L, 0xd3}, 42958c2ecf20Sopenharmony_ci {CX0342_EXPO_LINE_H, 0x01}, 42968c2ecf20Sopenharmony_ci/*fixme: gains, but 00..80 only*/ 42978c2ecf20Sopenharmony_ci {CX0342_RAW_GRGAIN_L, 0x40}, 42988c2ecf20Sopenharmony_ci {CX0342_RAW_GBGAIN_L, 0x40}, 42998c2ecf20Sopenharmony_ci {CX0342_RAW_RGAIN_L, 0x40}, 43008c2ecf20Sopenharmony_ci {CX0342_RAW_BGAIN_L, 0x40}, 43018c2ecf20Sopenharmony_ci {CX0342_SYS_CTRL_0, 0x81}, 43028c2ecf20Sopenharmony_ci }; 43038c2ecf20Sopenharmony_ci static const struct cmd sensor_init_5[] = { 43048c2ecf20Sopenharmony_ci {CX0342_IDLE_CTRL, 0x05}, 43058c2ecf20Sopenharmony_ci {CX0342_ADCGN, 0x00}, 43068c2ecf20Sopenharmony_ci {CX0342_ADC_CTL, 0x00}, 43078c2ecf20Sopenharmony_ci {CX0342_LVRST_BLBIAS, 0x01}, 43088c2ecf20Sopenharmony_ci {CX0342_VTHSEL, 0x0b}, 43098c2ecf20Sopenharmony_ci {CX0342_RAMP_RIV, 0x0b}, 43108c2ecf20Sopenharmony_ci {CX0342_LDOSEL, 0x07}, 43118c2ecf20Sopenharmony_ci {CX0342_SPV_VALUE_L, 0x40}, 43128c2ecf20Sopenharmony_ci {CX0342_SPV_VALUE_H, 0x02}, 43138c2ecf20Sopenharmony_ci {CX0342_AUTO_ADC_CALIB, 0x81}, 43148c2ecf20Sopenharmony_ci }; 43158c2ecf20Sopenharmony_ci 43168c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x22, gspca_dev->alt); 43178c2ecf20Sopenharmony_ci i2c_w_buf(gspca_dev, sensor_init_2, ARRAY_SIZE(sensor_init_2)); 43188c2ecf20Sopenharmony_ci reg_w_buf(gspca_dev, bridge_init_2, ARRAY_SIZE(bridge_init_2)); 43198c2ecf20Sopenharmony_ci reg_w_buf(gspca_dev, tp6810_cx_init_common, 43208c2ecf20Sopenharmony_ci ARRAY_SIZE(tp6810_cx_init_common)); 43218c2ecf20Sopenharmony_ci reg_w_buf(gspca_dev, bridge_init_3, ARRAY_SIZE(bridge_init_3)); 43228c2ecf20Sopenharmony_ci if (gspca_dev->curr_mode) { 43238c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x4a, 0x7f); 43248c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x07, 0x05); 43258c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00); /* vga */ 43268c2ecf20Sopenharmony_ci } else { 43278c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x4a, 0xff); 43288c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x07, 0x85); 43298c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R78_FORMAT, 0x01); /* qvga */ 43308c2ecf20Sopenharmony_ci } 43318c2ecf20Sopenharmony_ci setgamma(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma)); 43328c2ecf20Sopenharmony_ci reg_w_buf(gspca_dev, tp6810_bridge_start, 43338c2ecf20Sopenharmony_ci ARRAY_SIZE(tp6810_bridge_start)); 43348c2ecf20Sopenharmony_ci setsharpness(gspca_dev, v4l2_ctrl_g_ctrl(sd->sharpness)); 43358c2ecf20Sopenharmony_ci bulk_w(gspca_dev, 0x03, color_gain[SENSOR_CX0342], 43368c2ecf20Sopenharmony_ci ARRAY_SIZE(color_gain[0])); 43378c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x87); 43388c2ecf20Sopenharmony_ci i2c_w_buf(gspca_dev, sensor_init_3, ARRAY_SIZE(sensor_init_3)); 43398c2ecf20Sopenharmony_ci reg_w_buf(gspca_dev, bridge_init_5, ARRAY_SIZE(bridge_init_5)); 43408c2ecf20Sopenharmony_ci i2c_w_buf(gspca_dev, sensor_init_4, ARRAY_SIZE(sensor_init_4)); 43418c2ecf20Sopenharmony_ci reg_w_buf(gspca_dev, bridge_init_5, ARRAY_SIZE(bridge_init_5)); 43428c2ecf20Sopenharmony_ci i2c_w_buf(gspca_dev, sensor_init_5, ARRAY_SIZE(sensor_init_5)); 43438c2ecf20Sopenharmony_ci 43448c2ecf20Sopenharmony_ci set_led(gspca_dev, 1); 43458c2ecf20Sopenharmony_ci/* setquality(gspca_dev, v4l2_ctrl_g_ctrl(sd->jpegqual)); */ 43468c2ecf20Sopenharmony_ci} 43478c2ecf20Sopenharmony_ci 43488c2ecf20Sopenharmony_cistatic void soi763a_6800_start(struct gspca_dev *gspca_dev) 43498c2ecf20Sopenharmony_ci{ 43508c2ecf20Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 43518c2ecf20Sopenharmony_ci static const struct cmd reg_init[] = { 43528c2ecf20Sopenharmony_ci {TP6800_R79_QUALITY, 0x04}, 43538c2ecf20Sopenharmony_ci {TP6800_R79_QUALITY, 0x01}, 43548c2ecf20Sopenharmony_ci {TP6800_R10_SIF_TYPE, 0x00}, /* i2c 8 bits */ 43558c2ecf20Sopenharmony_ci 43568c2ecf20Sopenharmony_ci {TP6800_R50, 0x00}, 43578c2ecf20Sopenharmony_ci {TP6800_R51, 0x00}, 43588c2ecf20Sopenharmony_ci {TP6800_R52, 0xff}, 43598c2ecf20Sopenharmony_ci {TP6800_R53, 0x03}, 43608c2ecf20Sopenharmony_ci {TP6800_R54_DARK_CFG, 0x07}, 43618c2ecf20Sopenharmony_ci {TP6800_R5C_EDGE_THRLD, 0x40}, 43628c2ecf20Sopenharmony_ci 43638c2ecf20Sopenharmony_ci {TP6800_R79_QUALITY, 0x03}, 43648c2ecf20Sopenharmony_ci {TP6800_R7A_BLK_THRLD, 0x40}, 43658c2ecf20Sopenharmony_ci 43668c2ecf20Sopenharmony_ci {TP6800_R2F_TIMING_CFG, 0x46}, 43678c2ecf20Sopenharmony_ci {TP6800_R30_SENSOR_CFG, 0x10}, /* BG1..G0R */ 43688c2ecf20Sopenharmony_ci {TP6800_R37_FRONT_DARK_ST, 0x00}, 43698c2ecf20Sopenharmony_ci {TP6800_R38_FRONT_DARK_END, 0x00}, 43708c2ecf20Sopenharmony_ci {TP6800_R39_REAR_DARK_ST_L, 0x00}, 43718c2ecf20Sopenharmony_ci {TP6800_R3A_REAR_DARK_ST_H, 0x00}, 43728c2ecf20Sopenharmony_ci {TP6800_R3B_REAR_DARK_END_L, 0x00}, 43738c2ecf20Sopenharmony_ci {TP6800_R3C_REAR_DARK_END_H, 0x00}, 43748c2ecf20Sopenharmony_ci {TP6800_R3D_HORIZ_DARK_LINE_L, 0x00}, 43758c2ecf20Sopenharmony_ci {TP6800_R3E_HORIZ_DARK_LINE_H, 0x00}, 43768c2ecf20Sopenharmony_ci {TP6800_R21_ENDP_1_CTL, 0x03}, 43778c2ecf20Sopenharmony_ci 43788c2ecf20Sopenharmony_ci {TP6800_R3F_FRAME_RATE, 0x04}, /* 15 fps */ 43798c2ecf20Sopenharmony_ci {TP6800_R5D_DEMOSAIC_CFG, 0x0e}, /* scale down - medium edge */ 43808c2ecf20Sopenharmony_ci 43818c2ecf20Sopenharmony_ci {TP6800_R31_PIXEL_START, 0x1b}, 43828c2ecf20Sopenharmony_ci {TP6800_R32_PIXEL_END_L, 0x9a}, 43838c2ecf20Sopenharmony_ci {TP6800_R33_PIXEL_END_H, 0x02}, 43848c2ecf20Sopenharmony_ci {TP6800_R34_LINE_START, 0x0f}, 43858c2ecf20Sopenharmony_ci {TP6800_R35_LINE_END_L, 0xf4}, 43868c2ecf20Sopenharmony_ci {TP6800_R36_LINE_END_H, 0x01}, 43878c2ecf20Sopenharmony_ci {TP6800_R78_FORMAT, 0x01}, /* qvga */ 43888c2ecf20Sopenharmony_ci {TP6800_R12_SIF_ADDR_S, 0x21}, /* soi763a i2c addr */ 43898c2ecf20Sopenharmony_ci {TP6800_R1A_SIF_TX_DATA2, 0x00}, 43908c2ecf20Sopenharmony_ci }; 43918c2ecf20Sopenharmony_ci static const struct cmd sensor_init[] = { 43928c2ecf20Sopenharmony_ci {0x12, 0x48}, /* mirror - RGB */ 43938c2ecf20Sopenharmony_ci {0x13, 0xa0}, /* clock - no AGC nor AEC */ 43948c2ecf20Sopenharmony_ci {0x03, 0xa4}, /* saturation */ 43958c2ecf20Sopenharmony_ci {0x04, 0x30}, /* hue */ 43968c2ecf20Sopenharmony_ci {0x05, 0x88}, /* contrast */ 43978c2ecf20Sopenharmony_ci {0x06, 0x60}, /* brightness */ 43988c2ecf20Sopenharmony_ci {0x10, 0x41}, /* AEC */ 43998c2ecf20Sopenharmony_ci {0x11, 0x40}, /* clock rate */ 44008c2ecf20Sopenharmony_ci {0x13, 0xa0}, 44018c2ecf20Sopenharmony_ci {0x14, 0x00}, /* 640x480 */ 44028c2ecf20Sopenharmony_ci {0x15, 0x14}, 44038c2ecf20Sopenharmony_ci {0x1f, 0x41}, 44048c2ecf20Sopenharmony_ci {0x20, 0x80}, 44058c2ecf20Sopenharmony_ci {0x23, 0xee}, 44068c2ecf20Sopenharmony_ci {0x24, 0x50}, 44078c2ecf20Sopenharmony_ci {0x25, 0x7a}, 44088c2ecf20Sopenharmony_ci {0x26, 0x00}, 44098c2ecf20Sopenharmony_ci {0x27, 0xe2}, 44108c2ecf20Sopenharmony_ci {0x28, 0xb0}, 44118c2ecf20Sopenharmony_ci {0x2a, 0x00}, 44128c2ecf20Sopenharmony_ci {0x2b, 0x00}, 44138c2ecf20Sopenharmony_ci {0x2d, 0x81}, 44148c2ecf20Sopenharmony_ci {0x2f, 0x9d}, 44158c2ecf20Sopenharmony_ci {0x60, 0x80}, 44168c2ecf20Sopenharmony_ci {0x61, 0x00}, 44178c2ecf20Sopenharmony_ci {0x62, 0x88}, 44188c2ecf20Sopenharmony_ci {0x63, 0x11}, 44198c2ecf20Sopenharmony_ci {0x64, 0x89}, 44208c2ecf20Sopenharmony_ci {0x65, 0x00}, 44218c2ecf20Sopenharmony_ci {0x67, 0x94}, 44228c2ecf20Sopenharmony_ci {0x68, 0x7a}, 44238c2ecf20Sopenharmony_ci {0x69, 0x0f}, 44248c2ecf20Sopenharmony_ci {0x6c, 0x80}, 44258c2ecf20Sopenharmony_ci {0x6d, 0x80}, 44268c2ecf20Sopenharmony_ci {0x6e, 0x80}, 44278c2ecf20Sopenharmony_ci {0x6f, 0xff}, 44288c2ecf20Sopenharmony_ci {0x71, 0x20}, 44298c2ecf20Sopenharmony_ci {0x74, 0x20}, 44308c2ecf20Sopenharmony_ci {0x75, 0x86}, 44318c2ecf20Sopenharmony_ci {0x77, 0xb5}, 44328c2ecf20Sopenharmony_ci {0x17, 0x18}, /* H href start */ 44338c2ecf20Sopenharmony_ci {0x18, 0xbf}, /* H href end */ 44348c2ecf20Sopenharmony_ci {0x19, 0x03}, /* V start */ 44358c2ecf20Sopenharmony_ci {0x1a, 0xf8}, /* V end */ 44368c2ecf20Sopenharmony_ci {0x01, 0x80}, /* blue gain */ 44378c2ecf20Sopenharmony_ci {0x02, 0x80}, /* red gain */ 44388c2ecf20Sopenharmony_ci }; 44398c2ecf20Sopenharmony_ci 44408c2ecf20Sopenharmony_ci reg_w_buf(gspca_dev, reg_init, ARRAY_SIZE(reg_init)); 44418c2ecf20Sopenharmony_ci 44428c2ecf20Sopenharmony_ci i2c_w(gspca_dev, 0x12, 0x80); /* sensor reset */ 44438c2ecf20Sopenharmony_ci msleep(10); 44448c2ecf20Sopenharmony_ci 44458c2ecf20Sopenharmony_ci i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init)); 44468c2ecf20Sopenharmony_ci 44478c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R5C_EDGE_THRLD, 0x10); 44488c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R54_DARK_CFG, 0x00); 44498c2ecf20Sopenharmony_ci 44508c2ecf20Sopenharmony_ci setsharpness(gspca_dev, v4l2_ctrl_g_ctrl(sd->sharpness)); 44518c2ecf20Sopenharmony_ci 44528c2ecf20Sopenharmony_ci bulk_w(gspca_dev, 0x03, color_gain[SENSOR_SOI763A], 44538c2ecf20Sopenharmony_ci ARRAY_SIZE(color_gain[0])); 44548c2ecf20Sopenharmony_ci 44558c2ecf20Sopenharmony_ci set_led(gspca_dev, 1); 44568c2ecf20Sopenharmony_ci if (sd->sensor == SENSOR_CX0342) 44578c2ecf20Sopenharmony_ci setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure), 44588c2ecf20Sopenharmony_ci v4l2_ctrl_g_ctrl(gspca_dev->gain), 44598c2ecf20Sopenharmony_ci v4l2_ctrl_g_ctrl(sd->blue), 44608c2ecf20Sopenharmony_ci v4l2_ctrl_g_ctrl(sd->red)); 44618c2ecf20Sopenharmony_ci else 44628c2ecf20Sopenharmony_ci setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure), 44638c2ecf20Sopenharmony_ci v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0); 44648c2ecf20Sopenharmony_ci if (sd->sensor == SENSOR_SOI763A) 44658c2ecf20Sopenharmony_ci setquality(gspca_dev, v4l2_ctrl_g_ctrl(sd->jpegqual)); 44668c2ecf20Sopenharmony_ci setgamma(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma)); 44678c2ecf20Sopenharmony_ci} 44688c2ecf20Sopenharmony_ci 44698c2ecf20Sopenharmony_cistatic void soi763a_6810_start(struct gspca_dev *gspca_dev) 44708c2ecf20Sopenharmony_ci{ 44718c2ecf20Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 44728c2ecf20Sopenharmony_ci static const struct cmd bridge_init_2[] = { 44738c2ecf20Sopenharmony_ci {TP6800_R7A_BLK_THRLD, 0x00}, 44748c2ecf20Sopenharmony_ci {TP6800_R79_QUALITY, 0x04}, 44758c2ecf20Sopenharmony_ci {TP6800_R79_QUALITY, 0x01}, 44768c2ecf20Sopenharmony_ci }; 44778c2ecf20Sopenharmony_ci static const struct cmd bridge_init_3[] = { 44788c2ecf20Sopenharmony_ci {TP6800_R31_PIXEL_START, 0x20}, 44798c2ecf20Sopenharmony_ci {TP6800_R32_PIXEL_END_L, 0x9f}, 44808c2ecf20Sopenharmony_ci {TP6800_R33_PIXEL_END_H, 0x02}, 44818c2ecf20Sopenharmony_ci {TP6800_R34_LINE_START, 0x13}, 44828c2ecf20Sopenharmony_ci {TP6800_R35_LINE_END_L, 0xf8}, 44838c2ecf20Sopenharmony_ci {TP6800_R36_LINE_END_H, 0x01}, 44848c2ecf20Sopenharmony_ci }; 44858c2ecf20Sopenharmony_ci static const struct cmd bridge_init_6[] = { 44868c2ecf20Sopenharmony_ci {0x08, 0xff}, 44878c2ecf20Sopenharmony_ci {0x09, 0xff}, 44888c2ecf20Sopenharmony_ci {0x0a, 0x5f}, 44898c2ecf20Sopenharmony_ci {0x0b, 0x80}, 44908c2ecf20Sopenharmony_ci }; 44918c2ecf20Sopenharmony_ci 44928c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x22, gspca_dev->alt); 44938c2ecf20Sopenharmony_ci bulk_w(gspca_dev, 0x03, color_null, sizeof color_null); 44948c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x59, 0x40); 44958c2ecf20Sopenharmony_ci if (sd->sensor == SENSOR_CX0342) 44968c2ecf20Sopenharmony_ci setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure), 44978c2ecf20Sopenharmony_ci v4l2_ctrl_g_ctrl(gspca_dev->gain), 44988c2ecf20Sopenharmony_ci v4l2_ctrl_g_ctrl(sd->blue), 44998c2ecf20Sopenharmony_ci v4l2_ctrl_g_ctrl(sd->red)); 45008c2ecf20Sopenharmony_ci else 45018c2ecf20Sopenharmony_ci setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure), 45028c2ecf20Sopenharmony_ci v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0); 45038c2ecf20Sopenharmony_ci reg_w_buf(gspca_dev, bridge_init_2, ARRAY_SIZE(bridge_init_2)); 45048c2ecf20Sopenharmony_ci reg_w_buf(gspca_dev, tp6810_ov_init_common, 45058c2ecf20Sopenharmony_ci ARRAY_SIZE(tp6810_ov_init_common)); 45068c2ecf20Sopenharmony_ci reg_w_buf(gspca_dev, bridge_init_3, ARRAY_SIZE(bridge_init_3)); 45078c2ecf20Sopenharmony_ci if (gspca_dev->curr_mode) { 45088c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x4a, 0x7f); 45098c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x07, 0x05); 45108c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00); /* vga */ 45118c2ecf20Sopenharmony_ci } else { 45128c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x4a, 0xff); 45138c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x07, 0x85); 45148c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R78_FORMAT, 0x01); /* qvga */ 45158c2ecf20Sopenharmony_ci } 45168c2ecf20Sopenharmony_ci setgamma(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma)); 45178c2ecf20Sopenharmony_ci reg_w_buf(gspca_dev, tp6810_bridge_start, 45188c2ecf20Sopenharmony_ci ARRAY_SIZE(tp6810_bridge_start)); 45198c2ecf20Sopenharmony_ci 45208c2ecf20Sopenharmony_ci if (gspca_dev->curr_mode) { 45218c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x4f, 0x00); 45228c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x4e, 0x7c); 45238c2ecf20Sopenharmony_ci } 45248c2ecf20Sopenharmony_ci 45258c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x00, 0x00); 45268c2ecf20Sopenharmony_ci 45278c2ecf20Sopenharmony_ci setsharpness(gspca_dev, v4l2_ctrl_g_ctrl(sd->sharpness)); 45288c2ecf20Sopenharmony_ci bulk_w(gspca_dev, 0x03, color_gain[SENSOR_SOI763A], 45298c2ecf20Sopenharmony_ci ARRAY_SIZE(color_gain[0])); 45308c2ecf20Sopenharmony_ci set_led(gspca_dev, 1); 45318c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0xf0); 45328c2ecf20Sopenharmony_ci if (sd->sensor == SENSOR_CX0342) 45338c2ecf20Sopenharmony_ci setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure), 45348c2ecf20Sopenharmony_ci v4l2_ctrl_g_ctrl(gspca_dev->gain), 45358c2ecf20Sopenharmony_ci v4l2_ctrl_g_ctrl(sd->blue), 45368c2ecf20Sopenharmony_ci v4l2_ctrl_g_ctrl(sd->red)); 45378c2ecf20Sopenharmony_ci else 45388c2ecf20Sopenharmony_ci setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure), 45398c2ecf20Sopenharmony_ci v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0); 45408c2ecf20Sopenharmony_ci reg_w_buf(gspca_dev, bridge_init_6, ARRAY_SIZE(bridge_init_6)); 45418c2ecf20Sopenharmony_ci} 45428c2ecf20Sopenharmony_ci 45438c2ecf20Sopenharmony_ci/* -- start the camera -- */ 45448c2ecf20Sopenharmony_cistatic int sd_start(struct gspca_dev *gspca_dev) 45458c2ecf20Sopenharmony_ci{ 45468c2ecf20Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 45478c2ecf20Sopenharmony_ci 45488c2ecf20Sopenharmony_ci jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height, 45498c2ecf20Sopenharmony_ci gspca_dev->pixfmt.width); 45508c2ecf20Sopenharmony_ci set_dqt(gspca_dev, sd->quality); 45518c2ecf20Sopenharmony_ci if (sd->bridge == BRIDGE_TP6800) { 45528c2ecf20Sopenharmony_ci if (sd->sensor == SENSOR_CX0342) 45538c2ecf20Sopenharmony_ci cx0342_6800_start(gspca_dev); 45548c2ecf20Sopenharmony_ci else 45558c2ecf20Sopenharmony_ci soi763a_6800_start(gspca_dev); 45568c2ecf20Sopenharmony_ci } else { 45578c2ecf20Sopenharmony_ci if (sd->sensor == SENSOR_CX0342) 45588c2ecf20Sopenharmony_ci cx0342_6810_start(gspca_dev); 45598c2ecf20Sopenharmony_ci else 45608c2ecf20Sopenharmony_ci soi763a_6810_start(gspca_dev); 45618c2ecf20Sopenharmony_ci reg_w_buf(gspca_dev, tp6810_late_start, 45628c2ecf20Sopenharmony_ci ARRAY_SIZE(tp6810_late_start)); 45638c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x80, 0x03); 45648c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x82, gspca_dev->curr_mode ? 0x0a : 0x0e); 45658c2ecf20Sopenharmony_ci 45668c2ecf20Sopenharmony_ci if (sd->sensor == SENSOR_CX0342) 45678c2ecf20Sopenharmony_ci setexposure(gspca_dev, 45688c2ecf20Sopenharmony_ci v4l2_ctrl_g_ctrl(gspca_dev->exposure), 45698c2ecf20Sopenharmony_ci v4l2_ctrl_g_ctrl(gspca_dev->gain), 45708c2ecf20Sopenharmony_ci v4l2_ctrl_g_ctrl(sd->blue), 45718c2ecf20Sopenharmony_ci v4l2_ctrl_g_ctrl(sd->red)); 45728c2ecf20Sopenharmony_ci else 45738c2ecf20Sopenharmony_ci setexposure(gspca_dev, 45748c2ecf20Sopenharmony_ci v4l2_ctrl_g_ctrl(gspca_dev->exposure), 45758c2ecf20Sopenharmony_ci v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0); 45768c2ecf20Sopenharmony_ci if (sd->sensor == SENSOR_SOI763A) 45778c2ecf20Sopenharmony_ci setquality(gspca_dev, 45788c2ecf20Sopenharmony_ci v4l2_ctrl_g_ctrl(sd->jpegqual)); 45798c2ecf20Sopenharmony_ci if (sd->bridge == BRIDGE_TP6810) 45808c2ecf20Sopenharmony_ci setautogain(gspca_dev, 45818c2ecf20Sopenharmony_ci v4l2_ctrl_g_ctrl(gspca_dev->autogain)); 45828c2ecf20Sopenharmony_ci } 45838c2ecf20Sopenharmony_ci 45848c2ecf20Sopenharmony_ci setframerate(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure)); 45858c2ecf20Sopenharmony_ci 45868c2ecf20Sopenharmony_ci return gspca_dev->usb_err; 45878c2ecf20Sopenharmony_ci} 45888c2ecf20Sopenharmony_ci 45898c2ecf20Sopenharmony_cistatic void sd_stopN(struct gspca_dev *gspca_dev) 45908c2ecf20Sopenharmony_ci{ 45918c2ecf20Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 45928c2ecf20Sopenharmony_ci 45938c2ecf20Sopenharmony_ci if (sd->bridge == BRIDGE_TP6800) 45948c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R2F_TIMING_CFG, 0x03); 45958c2ecf20Sopenharmony_ci set_led(gspca_dev, 0); 45968c2ecf20Sopenharmony_ci reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00); 45978c2ecf20Sopenharmony_ci} 45988c2ecf20Sopenharmony_ci 45998c2ecf20Sopenharmony_cistatic void sd_pkt_scan(struct gspca_dev *gspca_dev, 46008c2ecf20Sopenharmony_ci u8 *data, 46018c2ecf20Sopenharmony_ci int len) 46028c2ecf20Sopenharmony_ci{ 46038c2ecf20Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 46048c2ecf20Sopenharmony_ci 46058c2ecf20Sopenharmony_ci /* the start of frame contains: 46068c2ecf20Sopenharmony_ci * ff d8 46078c2ecf20Sopenharmony_ci * ff fe 46088c2ecf20Sopenharmony_ci * width / 16 46098c2ecf20Sopenharmony_ci * height / 8 46108c2ecf20Sopenharmony_ci * quality 46118c2ecf20Sopenharmony_ci */ 46128c2ecf20Sopenharmony_ci if (sd->bridge == BRIDGE_TP6810) { 46138c2ecf20Sopenharmony_ci if (*data != 0x5a) { 46148c2ecf20Sopenharmony_ci/*fixme: don't discard the whole frame..*/ 46158c2ecf20Sopenharmony_ci if (*data == 0xaa || *data == 0x00) 46168c2ecf20Sopenharmony_ci return; 46178c2ecf20Sopenharmony_ci if (*data > 0xc0) { 46188c2ecf20Sopenharmony_ci gspca_dbg(gspca_dev, D_FRAM, "bad frame\n"); 46198c2ecf20Sopenharmony_ci gspca_dev->last_packet_type = DISCARD_PACKET; 46208c2ecf20Sopenharmony_ci return; 46218c2ecf20Sopenharmony_ci } 46228c2ecf20Sopenharmony_ci } 46238c2ecf20Sopenharmony_ci data++; 46248c2ecf20Sopenharmony_ci len--; 46258c2ecf20Sopenharmony_ci if (len < 2) { 46268c2ecf20Sopenharmony_ci gspca_dev->last_packet_type = DISCARD_PACKET; 46278c2ecf20Sopenharmony_ci return; 46288c2ecf20Sopenharmony_ci } 46298c2ecf20Sopenharmony_ci if (*data == 0xff && data[1] == 0xd8) { 46308c2ecf20Sopenharmony_ci/*fixme: there may be information in the 4 high bits*/ 46318c2ecf20Sopenharmony_ci if (len < 7) { 46328c2ecf20Sopenharmony_ci gspca_dev->last_packet_type = DISCARD_PACKET; 46338c2ecf20Sopenharmony_ci return; 46348c2ecf20Sopenharmony_ci } 46358c2ecf20Sopenharmony_ci if ((data[6] & 0x0f) != sd->quality) 46368c2ecf20Sopenharmony_ci set_dqt(gspca_dev, data[6] & 0x0f); 46378c2ecf20Sopenharmony_ci gspca_frame_add(gspca_dev, FIRST_PACKET, 46388c2ecf20Sopenharmony_ci sd->jpeg_hdr, JPEG_HDR_SZ); 46398c2ecf20Sopenharmony_ci gspca_frame_add(gspca_dev, INTER_PACKET, 46408c2ecf20Sopenharmony_ci data + 7, len - 7); 46418c2ecf20Sopenharmony_ci } else if (data[len - 2] == 0xff && data[len - 1] == 0xd9) { 46428c2ecf20Sopenharmony_ci gspca_frame_add(gspca_dev, LAST_PACKET, 46438c2ecf20Sopenharmony_ci data, len); 46448c2ecf20Sopenharmony_ci } else { 46458c2ecf20Sopenharmony_ci gspca_frame_add(gspca_dev, INTER_PACKET, 46468c2ecf20Sopenharmony_ci data, len); 46478c2ecf20Sopenharmony_ci } 46488c2ecf20Sopenharmony_ci return; 46498c2ecf20Sopenharmony_ci } 46508c2ecf20Sopenharmony_ci 46518c2ecf20Sopenharmony_ci switch (*data) { 46528c2ecf20Sopenharmony_ci case 0x55: 46538c2ecf20Sopenharmony_ci gspca_frame_add(gspca_dev, LAST_PACKET, data, 0); 46548c2ecf20Sopenharmony_ci 46558c2ecf20Sopenharmony_ci if (len < 8 46568c2ecf20Sopenharmony_ci || data[1] != 0xff || data[2] != 0xd8 46578c2ecf20Sopenharmony_ci || data[3] != 0xff || data[4] != 0xfe) { 46588c2ecf20Sopenharmony_ci 46598c2ecf20Sopenharmony_ci /* Have only seen this with corrupt frames */ 46608c2ecf20Sopenharmony_ci gspca_dev->last_packet_type = DISCARD_PACKET; 46618c2ecf20Sopenharmony_ci return; 46628c2ecf20Sopenharmony_ci } 46638c2ecf20Sopenharmony_ci if (data[7] != sd->quality) 46648c2ecf20Sopenharmony_ci set_dqt(gspca_dev, data[7]); 46658c2ecf20Sopenharmony_ci gspca_frame_add(gspca_dev, FIRST_PACKET, 46668c2ecf20Sopenharmony_ci sd->jpeg_hdr, JPEG_HDR_SZ); 46678c2ecf20Sopenharmony_ci gspca_frame_add(gspca_dev, INTER_PACKET, 46688c2ecf20Sopenharmony_ci data + 8, len - 8); 46698c2ecf20Sopenharmony_ci break; 46708c2ecf20Sopenharmony_ci case 0xaa: 46718c2ecf20Sopenharmony_ci gspca_dev->last_packet_type = DISCARD_PACKET; 46728c2ecf20Sopenharmony_ci break; 46738c2ecf20Sopenharmony_ci case 0xcc: 46748c2ecf20Sopenharmony_ci if (len >= 3 && (data[1] != 0xff || data[2] != 0xd8)) 46758c2ecf20Sopenharmony_ci gspca_frame_add(gspca_dev, INTER_PACKET, 46768c2ecf20Sopenharmony_ci data + 1, len - 1); 46778c2ecf20Sopenharmony_ci else 46788c2ecf20Sopenharmony_ci gspca_dev->last_packet_type = DISCARD_PACKET; 46798c2ecf20Sopenharmony_ci break; 46808c2ecf20Sopenharmony_ci } 46818c2ecf20Sopenharmony_ci} 46828c2ecf20Sopenharmony_ci 46838c2ecf20Sopenharmony_cistatic void sd_dq_callback(struct gspca_dev *gspca_dev) 46848c2ecf20Sopenharmony_ci{ 46858c2ecf20Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 46868c2ecf20Sopenharmony_ci int ret, alen; 46878c2ecf20Sopenharmony_ci int luma, expo; 46888c2ecf20Sopenharmony_ci 46898c2ecf20Sopenharmony_ci if (sd->ag_cnt < 0) 46908c2ecf20Sopenharmony_ci return; 46918c2ecf20Sopenharmony_ci if (--sd->ag_cnt > 5) 46928c2ecf20Sopenharmony_ci return; 46938c2ecf20Sopenharmony_ci switch (sd->ag_cnt) { 46948c2ecf20Sopenharmony_ci/* case 5: */ 46958c2ecf20Sopenharmony_ci default: 46968c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x7d, 0x00); 46978c2ecf20Sopenharmony_ci break; 46988c2ecf20Sopenharmony_ci case 4: 46998c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x27, 0xb0); 47008c2ecf20Sopenharmony_ci break; 47018c2ecf20Sopenharmony_ci case 3: 47028c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x0c, 0x01); 47038c2ecf20Sopenharmony_ci break; 47048c2ecf20Sopenharmony_ci case 2: 47058c2ecf20Sopenharmony_ci ret = usb_bulk_msg(gspca_dev->dev, 47068c2ecf20Sopenharmony_ci usb_rcvbulkpipe(gspca_dev->dev, 0x02), 47078c2ecf20Sopenharmony_ci gspca_dev->usb_buf, 47088c2ecf20Sopenharmony_ci 32, 47098c2ecf20Sopenharmony_ci &alen, 47108c2ecf20Sopenharmony_ci 500); 47118c2ecf20Sopenharmony_ci if (ret < 0) { 47128c2ecf20Sopenharmony_ci pr_err("bulk err %d\n", ret); 47138c2ecf20Sopenharmony_ci break; 47148c2ecf20Sopenharmony_ci } 47158c2ecf20Sopenharmony_ci /* values not used (unknown) */ 47168c2ecf20Sopenharmony_ci break; 47178c2ecf20Sopenharmony_ci case 1: 47188c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x27, 0xd0); 47198c2ecf20Sopenharmony_ci break; 47208c2ecf20Sopenharmony_ci case 0: 47218c2ecf20Sopenharmony_ci ret = usb_bulk_msg(gspca_dev->dev, 47228c2ecf20Sopenharmony_ci usb_rcvbulkpipe(gspca_dev->dev, 0x02), 47238c2ecf20Sopenharmony_ci gspca_dev->usb_buf, 47248c2ecf20Sopenharmony_ci 32, 47258c2ecf20Sopenharmony_ci &alen, 47268c2ecf20Sopenharmony_ci 500); 47278c2ecf20Sopenharmony_ci if (ret < 0) { 47288c2ecf20Sopenharmony_ci pr_err("bulk err %d\n", ret); 47298c2ecf20Sopenharmony_ci break; 47308c2ecf20Sopenharmony_ci } 47318c2ecf20Sopenharmony_ci luma = ((gspca_dev->usb_buf[8] << 8) + gspca_dev->usb_buf[7] + 47328c2ecf20Sopenharmony_ci (gspca_dev->usb_buf[11] << 8) + gspca_dev->usb_buf[10] + 47338c2ecf20Sopenharmony_ci (gspca_dev->usb_buf[14] << 8) + gspca_dev->usb_buf[13] + 47348c2ecf20Sopenharmony_ci (gspca_dev->usb_buf[17] << 8) + gspca_dev->usb_buf[16] + 47358c2ecf20Sopenharmony_ci (gspca_dev->usb_buf[20] << 8) + gspca_dev->usb_buf[19] + 47368c2ecf20Sopenharmony_ci (gspca_dev->usb_buf[23] << 8) + gspca_dev->usb_buf[22] + 47378c2ecf20Sopenharmony_ci (gspca_dev->usb_buf[26] << 8) + gspca_dev->usb_buf[25] + 47388c2ecf20Sopenharmony_ci (gspca_dev->usb_buf[29] << 8) + gspca_dev->usb_buf[28]) 47398c2ecf20Sopenharmony_ci / 8; 47408c2ecf20Sopenharmony_ci if (gspca_dev->pixfmt.width == 640) 47418c2ecf20Sopenharmony_ci luma /= 4; 47428c2ecf20Sopenharmony_ci reg_w(gspca_dev, 0x7d, 0x00); 47438c2ecf20Sopenharmony_ci 47448c2ecf20Sopenharmony_ci expo = v4l2_ctrl_g_ctrl(gspca_dev->exposure); 47458c2ecf20Sopenharmony_ci ret = gspca_expo_autogain(gspca_dev, luma, 47468c2ecf20Sopenharmony_ci 60, /* desired luma */ 47478c2ecf20Sopenharmony_ci 6, /* dead zone */ 47488c2ecf20Sopenharmony_ci 2, /* gain knee */ 47498c2ecf20Sopenharmony_ci 70); /* expo knee */ 47508c2ecf20Sopenharmony_ci sd->ag_cnt = AG_CNT_START; 47518c2ecf20Sopenharmony_ci if (sd->bridge == BRIDGE_TP6810) { 47528c2ecf20Sopenharmony_ci int new_expo = v4l2_ctrl_g_ctrl(gspca_dev->exposure); 47538c2ecf20Sopenharmony_ci 47548c2ecf20Sopenharmony_ci if ((expo >= 128 && new_expo < 128) 47558c2ecf20Sopenharmony_ci || (expo < 128 && new_expo >= 128)) 47568c2ecf20Sopenharmony_ci setframerate(gspca_dev, new_expo); 47578c2ecf20Sopenharmony_ci } 47588c2ecf20Sopenharmony_ci break; 47598c2ecf20Sopenharmony_ci } 47608c2ecf20Sopenharmony_ci} 47618c2ecf20Sopenharmony_ci 47628c2ecf20Sopenharmony_ci/* get stream parameters (framerate) */ 47638c2ecf20Sopenharmony_cistatic void sd_get_streamparm(struct gspca_dev *gspca_dev, 47648c2ecf20Sopenharmony_ci struct v4l2_streamparm *parm) 47658c2ecf20Sopenharmony_ci{ 47668c2ecf20Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 47678c2ecf20Sopenharmony_ci struct v4l2_captureparm *cp = &parm->parm.capture; 47688c2ecf20Sopenharmony_ci struct v4l2_fract *tpf = &cp->timeperframe; 47698c2ecf20Sopenharmony_ci int fr, i; 47708c2ecf20Sopenharmony_ci 47718c2ecf20Sopenharmony_ci tpf->numerator = 1; 47728c2ecf20Sopenharmony_ci i = get_fr_idx(gspca_dev); 47738c2ecf20Sopenharmony_ci if (i & 0x80) { 47748c2ecf20Sopenharmony_ci if (sd->bridge == BRIDGE_TP6800) 47758c2ecf20Sopenharmony_ci fr = rates[6 - (i & 0x07)]; 47768c2ecf20Sopenharmony_ci else 47778c2ecf20Sopenharmony_ci fr = rates_6810[7 - (i & 0x07)]; 47788c2ecf20Sopenharmony_ci } else { 47798c2ecf20Sopenharmony_ci fr = rates[6 - i]; 47808c2ecf20Sopenharmony_ci } 47818c2ecf20Sopenharmony_ci tpf->denominator = fr; 47828c2ecf20Sopenharmony_ci} 47838c2ecf20Sopenharmony_ci 47848c2ecf20Sopenharmony_ci/* set stream parameters (framerate) */ 47858c2ecf20Sopenharmony_cistatic void sd_set_streamparm(struct gspca_dev *gspca_dev, 47868c2ecf20Sopenharmony_ci struct v4l2_streamparm *parm) 47878c2ecf20Sopenharmony_ci{ 47888c2ecf20Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 47898c2ecf20Sopenharmony_ci struct v4l2_captureparm *cp = &parm->parm.capture; 47908c2ecf20Sopenharmony_ci struct v4l2_fract *tpf = &cp->timeperframe; 47918c2ecf20Sopenharmony_ci int fr, i; 47928c2ecf20Sopenharmony_ci 47938c2ecf20Sopenharmony_ci if (tpf->numerator == 0 || tpf->denominator == 0) 47948c2ecf20Sopenharmony_ci sd->framerate = DEFAULT_FRAME_RATE; 47958c2ecf20Sopenharmony_ci else 47968c2ecf20Sopenharmony_ci sd->framerate = tpf->denominator / tpf->numerator; 47978c2ecf20Sopenharmony_ci 47988c2ecf20Sopenharmony_ci if (gspca_dev->streaming) 47998c2ecf20Sopenharmony_ci setframerate(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure)); 48008c2ecf20Sopenharmony_ci 48018c2ecf20Sopenharmony_ci /* Return the actual framerate */ 48028c2ecf20Sopenharmony_ci i = get_fr_idx(gspca_dev); 48038c2ecf20Sopenharmony_ci if (i & 0x80) 48048c2ecf20Sopenharmony_ci fr = rates_6810[7 - (i & 0x07)]; 48058c2ecf20Sopenharmony_ci else 48068c2ecf20Sopenharmony_ci fr = rates[6 - i]; 48078c2ecf20Sopenharmony_ci tpf->numerator = 1; 48088c2ecf20Sopenharmony_ci tpf->denominator = fr; 48098c2ecf20Sopenharmony_ci} 48108c2ecf20Sopenharmony_ci 48118c2ecf20Sopenharmony_cistatic int sd_set_jcomp(struct gspca_dev *gspca_dev, 48128c2ecf20Sopenharmony_ci const struct v4l2_jpegcompression *jcomp) 48138c2ecf20Sopenharmony_ci{ 48148c2ecf20Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 48158c2ecf20Sopenharmony_ci 48168c2ecf20Sopenharmony_ci if (sd->sensor != SENSOR_SOI763A) 48178c2ecf20Sopenharmony_ci return -ENOTTY; 48188c2ecf20Sopenharmony_ci v4l2_ctrl_s_ctrl(sd->jpegqual, jcomp->quality); 48198c2ecf20Sopenharmony_ci return 0; 48208c2ecf20Sopenharmony_ci} 48218c2ecf20Sopenharmony_ci 48228c2ecf20Sopenharmony_cistatic int sd_get_jcomp(struct gspca_dev *gspca_dev, 48238c2ecf20Sopenharmony_ci struct v4l2_jpegcompression *jcomp) 48248c2ecf20Sopenharmony_ci{ 48258c2ecf20Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 48268c2ecf20Sopenharmony_ci 48278c2ecf20Sopenharmony_ci if (sd->sensor != SENSOR_SOI763A) 48288c2ecf20Sopenharmony_ci return -ENOTTY; 48298c2ecf20Sopenharmony_ci memset(jcomp, 0, sizeof *jcomp); 48308c2ecf20Sopenharmony_ci jcomp->quality = v4l2_ctrl_g_ctrl(sd->jpegqual); 48318c2ecf20Sopenharmony_ci jcomp->jpeg_markers = V4L2_JPEG_MARKER_DHT 48328c2ecf20Sopenharmony_ci | V4L2_JPEG_MARKER_DQT; 48338c2ecf20Sopenharmony_ci return 0; 48348c2ecf20Sopenharmony_ci} 48358c2ecf20Sopenharmony_ci 48368c2ecf20Sopenharmony_cistatic int sd_s_ctrl(struct v4l2_ctrl *ctrl) 48378c2ecf20Sopenharmony_ci{ 48388c2ecf20Sopenharmony_ci struct gspca_dev *gspca_dev = 48398c2ecf20Sopenharmony_ci container_of(ctrl->handler, struct gspca_dev, ctrl_handler); 48408c2ecf20Sopenharmony_ci struct sd *sd = (struct sd *)gspca_dev; 48418c2ecf20Sopenharmony_ci 48428c2ecf20Sopenharmony_ci gspca_dev->usb_err = 0; 48438c2ecf20Sopenharmony_ci 48448c2ecf20Sopenharmony_ci if (!gspca_dev->streaming) 48458c2ecf20Sopenharmony_ci return 0; 48468c2ecf20Sopenharmony_ci 48478c2ecf20Sopenharmony_ci switch (ctrl->id) { 48488c2ecf20Sopenharmony_ci case V4L2_CID_SHARPNESS: 48498c2ecf20Sopenharmony_ci setsharpness(gspca_dev, ctrl->val); 48508c2ecf20Sopenharmony_ci break; 48518c2ecf20Sopenharmony_ci case V4L2_CID_GAMMA: 48528c2ecf20Sopenharmony_ci setgamma(gspca_dev, ctrl->val); 48538c2ecf20Sopenharmony_ci break; 48548c2ecf20Sopenharmony_ci case V4L2_CID_BLUE_BALANCE: 48558c2ecf20Sopenharmony_ci setbgain(gspca_dev, ctrl->val); 48568c2ecf20Sopenharmony_ci break; 48578c2ecf20Sopenharmony_ci case V4L2_CID_RED_BALANCE: 48588c2ecf20Sopenharmony_ci setrgain(gspca_dev, ctrl->val); 48598c2ecf20Sopenharmony_ci break; 48608c2ecf20Sopenharmony_ci case V4L2_CID_EXPOSURE: 48618c2ecf20Sopenharmony_ci sd_setgain(gspca_dev); 48628c2ecf20Sopenharmony_ci break; 48638c2ecf20Sopenharmony_ci case V4L2_CID_AUTOGAIN: 48648c2ecf20Sopenharmony_ci if (ctrl->val) 48658c2ecf20Sopenharmony_ci break; 48668c2ecf20Sopenharmony_ci sd_setgain(gspca_dev); 48678c2ecf20Sopenharmony_ci break; 48688c2ecf20Sopenharmony_ci case V4L2_CID_JPEG_COMPRESSION_QUALITY: 48698c2ecf20Sopenharmony_ci jpeg_set_qual(sd->jpeg_hdr, ctrl->val); 48708c2ecf20Sopenharmony_ci break; 48718c2ecf20Sopenharmony_ci } 48728c2ecf20Sopenharmony_ci return gspca_dev->usb_err; 48738c2ecf20Sopenharmony_ci} 48748c2ecf20Sopenharmony_ci 48758c2ecf20Sopenharmony_cistatic const struct v4l2_ctrl_ops sd_ctrl_ops = { 48768c2ecf20Sopenharmony_ci .s_ctrl = sd_s_ctrl, 48778c2ecf20Sopenharmony_ci}; 48788c2ecf20Sopenharmony_ci 48798c2ecf20Sopenharmony_cistatic int sd_init_controls(struct gspca_dev *gspca_dev) 48808c2ecf20Sopenharmony_ci{ 48818c2ecf20Sopenharmony_ci struct sd *sd = (struct sd *)gspca_dev; 48828c2ecf20Sopenharmony_ci struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; 48838c2ecf20Sopenharmony_ci 48848c2ecf20Sopenharmony_ci gspca_dev->vdev.ctrl_handler = hdl; 48858c2ecf20Sopenharmony_ci v4l2_ctrl_handler_init(hdl, 4); 48868c2ecf20Sopenharmony_ci gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, 48878c2ecf20Sopenharmony_ci V4L2_CID_EXPOSURE, 1, 0xdc, 1, 0x4e); 48888c2ecf20Sopenharmony_ci if (sd->sensor == SENSOR_CX0342) { 48898c2ecf20Sopenharmony_ci sd->red = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, 48908c2ecf20Sopenharmony_ci V4L2_CID_RED_BALANCE, 0, 4095, 1, 256); 48918c2ecf20Sopenharmony_ci sd->blue = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, 48928c2ecf20Sopenharmony_ci V4L2_CID_BLUE_BALANCE, 0, 4095, 1, 256); 48938c2ecf20Sopenharmony_ci } 48948c2ecf20Sopenharmony_ci if (sd->sensor == SENSOR_SOI763A) 48958c2ecf20Sopenharmony_ci gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, 48968c2ecf20Sopenharmony_ci V4L2_CID_GAIN, 0, 15, 1, 3); 48978c2ecf20Sopenharmony_ci else 48988c2ecf20Sopenharmony_ci gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, 48998c2ecf20Sopenharmony_ci V4L2_CID_GAIN, 0, 4095, 1, 256); 49008c2ecf20Sopenharmony_ci sd->sharpness = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, 49018c2ecf20Sopenharmony_ci V4L2_CID_SHARPNESS, 0, 3, 1, 2); 49028c2ecf20Sopenharmony_ci sd->gamma = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, 49038c2ecf20Sopenharmony_ci V4L2_CID_GAMMA, 0, NGAMMA - 1, 1, 49048c2ecf20Sopenharmony_ci (sd->sensor == SENSOR_SOI763A && 49058c2ecf20Sopenharmony_ci sd->bridge == BRIDGE_TP6800) ? 0 : 1); 49068c2ecf20Sopenharmony_ci if (sd->bridge == BRIDGE_TP6810) 49078c2ecf20Sopenharmony_ci gspca_dev->autogain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, 49088c2ecf20Sopenharmony_ci V4L2_CID_AUTOGAIN, 0, 1, 1, 1); 49098c2ecf20Sopenharmony_ci if (sd->sensor == SENSOR_SOI763A) 49108c2ecf20Sopenharmony_ci sd->jpegqual = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, 49118c2ecf20Sopenharmony_ci V4L2_CID_JPEG_COMPRESSION_QUALITY, 49128c2ecf20Sopenharmony_ci 0, 15, 1, (sd->bridge == BRIDGE_TP6810) ? 0 : 13); 49138c2ecf20Sopenharmony_ci 49148c2ecf20Sopenharmony_ci if (hdl->error) { 49158c2ecf20Sopenharmony_ci pr_err("Could not initialize controls\n"); 49168c2ecf20Sopenharmony_ci return hdl->error; 49178c2ecf20Sopenharmony_ci } 49188c2ecf20Sopenharmony_ci if (gspca_dev->autogain) 49198c2ecf20Sopenharmony_ci v4l2_ctrl_auto_cluster(3, &gspca_dev->autogain, 0, false); 49208c2ecf20Sopenharmony_ci else 49218c2ecf20Sopenharmony_ci v4l2_ctrl_cluster(2, &gspca_dev->exposure); 49228c2ecf20Sopenharmony_ci return 0; 49238c2ecf20Sopenharmony_ci} 49248c2ecf20Sopenharmony_ci 49258c2ecf20Sopenharmony_cistatic const struct sd_desc sd_desc = { 49268c2ecf20Sopenharmony_ci .name = KBUILD_MODNAME, 49278c2ecf20Sopenharmony_ci .config = sd_config, 49288c2ecf20Sopenharmony_ci .init = sd_init, 49298c2ecf20Sopenharmony_ci .init_controls = sd_init_controls, 49308c2ecf20Sopenharmony_ci .isoc_init = sd_isoc_init, 49318c2ecf20Sopenharmony_ci .start = sd_start, 49328c2ecf20Sopenharmony_ci .stopN = sd_stopN, 49338c2ecf20Sopenharmony_ci .pkt_scan = sd_pkt_scan, 49348c2ecf20Sopenharmony_ci .dq_callback = sd_dq_callback, 49358c2ecf20Sopenharmony_ci .get_streamparm = sd_get_streamparm, 49368c2ecf20Sopenharmony_ci .set_streamparm = sd_set_streamparm, 49378c2ecf20Sopenharmony_ci .get_jcomp = sd_get_jcomp, 49388c2ecf20Sopenharmony_ci .set_jcomp = sd_set_jcomp, 49398c2ecf20Sopenharmony_ci}; 49408c2ecf20Sopenharmony_ci 49418c2ecf20Sopenharmony_cistatic const struct usb_device_id device_table[] = { 49428c2ecf20Sopenharmony_ci {USB_DEVICE(0x06a2, 0x0003), .driver_info = BRIDGE_TP6800}, 49438c2ecf20Sopenharmony_ci {USB_DEVICE(0x06a2, 0x6810), .driver_info = BRIDGE_TP6810}, 49448c2ecf20Sopenharmony_ci {} /* Terminating entry */ 49458c2ecf20Sopenharmony_ci}; 49468c2ecf20Sopenharmony_ci 49478c2ecf20Sopenharmony_ciMODULE_DEVICE_TABLE(usb, device_table); 49488c2ecf20Sopenharmony_ci 49498c2ecf20Sopenharmony_cistatic int sd_probe(struct usb_interface *interface, 49508c2ecf20Sopenharmony_ci const struct usb_device_id *id) 49518c2ecf20Sopenharmony_ci{ 49528c2ecf20Sopenharmony_ci return gspca_dev_probe(interface, id, &sd_desc, sizeof(struct sd), 49538c2ecf20Sopenharmony_ci THIS_MODULE); 49548c2ecf20Sopenharmony_ci} 49558c2ecf20Sopenharmony_ci 49568c2ecf20Sopenharmony_cistatic struct usb_driver sd_driver = { 49578c2ecf20Sopenharmony_ci .name = KBUILD_MODNAME, 49588c2ecf20Sopenharmony_ci .id_table = device_table, 49598c2ecf20Sopenharmony_ci .probe = sd_probe, 49608c2ecf20Sopenharmony_ci .disconnect = gspca_disconnect, 49618c2ecf20Sopenharmony_ci#ifdef CONFIG_PM 49628c2ecf20Sopenharmony_ci .suspend = gspca_suspend, 49638c2ecf20Sopenharmony_ci .resume = gspca_resume, 49648c2ecf20Sopenharmony_ci .reset_resume = gspca_resume, 49658c2ecf20Sopenharmony_ci#endif 49668c2ecf20Sopenharmony_ci}; 49678c2ecf20Sopenharmony_ci 49688c2ecf20Sopenharmony_cimodule_usb_driver(sd_driver); 49698c2ecf20Sopenharmony_ci 49708c2ecf20Sopenharmony_cimodule_param(force_sensor, int, 0644); 49718c2ecf20Sopenharmony_ciMODULE_PARM_DESC(force_sensor, 49728c2ecf20Sopenharmony_ci "Force sensor. 0: cx0342, 1: soi763a"); 4973