Files
2026-08-24 10:03:24 +08:00

428 lines
22 KiB
C

/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (c) 2019 Amlogic, Inc. All rights reserved.
*/
#ifndef _AW21036B_SEI_H_
#define _AW21036B_SEI_H_
#include <linux/gpio/consumer.h>
#define MAX_I2C_BUFFER_SIZE 65536
#define AW21036_ID 0x18
struct meson_aw21036_io {
unsigned int r_io;
unsigned int g_io;
unsigned int b_io;
};
struct meson_aw21036_colors {
unsigned char red;
unsigned char green;
unsigned char blue;
};
struct meson_aw21036 {
//struct device *dev;
struct i2c_client *i2c;
struct device *dev;
struct led_classdev cdev;
struct work_struct brightness_work;
struct work_struct leds_work;
struct workqueue_struct *leds_wq;
struct gpio_desc *reset_gpiod;
unsigned char chipid;
int imax;
int platform;
struct meson_aw21036_io *io;
struct meson_aw21036_colors *colors;
int led_counts;
int g_time_value;
};
//global variables declaration
struct meson_aw21036 *aw21036;
// function declaration
static void meson_aw21036_set_colors(unsigned int *colors, unsigned int counts);
static int aw21036_i2c_write(struct meson_aw21036 *aw21036, unsigned char reg_addr, unsigned char reg_data);
static int aw21036_hw_reset(struct meson_aw21036 *aw21036);
static int *all_data[16] = {0};
static int length_data[16] = {0};
static unsigned int state_mode=0;
/*2:S905X2 SEI520, 3:S905X3 SEI600TID; 4:S905X3 SEI610/SEI610F, 6:SEI610FPT*/
static unsigned int platform_id = 0;
static unsigned int hwen_id = 3;
static unsigned int __maybe_unused isel_id = 3;
static int driver_init_flag = 0; // driver init flag, 0: not init, 1: init
static unsigned int ledr_value = 0, ledg_value = 0, ledb_value = 0;
static u8 led_value[4] = {0};
static int time_val = 0, cycles_val = 0, instruct_val = 0;
static u8 tmp_w[128][37] = {0}; //length_data
static unsigned int tmp_color[13] = {};
/*
Iout = K * Vrext/Rext * GCC/255 * WB/255 * COLn/255 * BRn/255
GCC : 8bit, default 0; user set 0 to colse all leds, default set 0xff when init
WB : 8bit, default 0xff;
BRn : user set for brightness
COLn: default set 0xff;
*/
static u8 tmp_col[37] = {\
0xff,0xff,0xff, 0xff,0xff,0xff, 0xff,0xff,0xff, 0xff,0xff,0xff,\
0xff,0xff,0xff, 0xff,0xff,0xff, 0xff,0xff,0xff, 0xff,0xff,0xff,\
0xff,0xff,0xff, 0xff,0xff,0xff, 0xff,0xff,0xff, 0xff,0xff,0xff,\
};
static u8 __maybe_unused tmp_ledon[10] = {
0x68, 0xdd, 0xf5, 0x68, 0xdd, 0xf5, 0x68, 0xdd, 0xf5,
};
static u8 __maybe_unused tmp_ledoff[10] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
//#define NO_DIRECTION_CORRECT
//default mode:OFF all leds
static int data_mode0[] = {\
0x64,0x01,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
};
//Mode One:White light flashes 5 times,interval:100 milliseconds;loop 1 time.
//time_val: 0x64,cycles_val: 0x01,
//Fully on value is 192. When flashing, value 128. Off - On - Off - On - Off.
#if 0
//SEI610F/SEI520
static int data_mode1[] = {\
0x64,0x01,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
0xC0,0xC0,0xC0, 0xC0,0xC0,0xC0, 0xC0,0xC0,0xC0, 0xC0,0xC0,0xC0, 0xC0,0xC0,0xC0, 0xC0,0xC0,0xC0,
0xC0,0xC0,0xC0, 0xC0,0xC0,0xC0, 0xC0,0xC0,0xC0, 0xC0,0xC0,0xC0, 0xC0,0xC0,0xC0, 0xC0,0xC0,0xC0,
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x80,0x80,0x80, 0x80,0x80,0x80, 0x80,0x80,0x80, 0x80,0x80,0x80, 0x80,0x80,0x80, 0x80,0x80,0x80,
0x80,0x80,0x80, 0x80,0x80,0x80, 0x80,0x80,0x80, 0x80,0x80,0x80, 0x80,0x80,0x80, 0x80,0x80,0x80,
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
}
#else
//SEI610F/SEI520
static int data_mode1[] = {\
0xC8,0x00,\
0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0x00,0x00,0x00,
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0x00,0x00,0x00,
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x00,0x00,0x00,
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x00,0x00,0x00,
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0x00,0x00,0x00,
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0x00,0x00,0x00,
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x00,0x00,0x00,
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x00,0x00,0x00,
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0x00,0x00,0x00,
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0x00,0x00,0x00,
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x00,0x00,0x00,
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x00,0x00,0x00,
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0x00,0x00,0x00,
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0x00,0x00,0x00,
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0x00,0x00,0x00,
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0x00,0x00,0x00,
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x00,0x00,0x00,
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x00,0x00,0x00,
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
};
#endif
//Mode TWO:White running lights; Time interval: 100ms; Infinite loop
//time_val: 0x64,cycles_val: 0x00,
//Very bright - Slightly bright - Slightly bright - Slightly bright - Very bright
#ifdef NO_DIRECTION_CORRECT
static int data_mode2[] = {
0xC8,0x00,\
0xC0,0xC0,0xC0, 0x10,0x10,0x10, 0x10,0x10,0x10, 0x10,0x10,0x10, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x10,0x10,0x10, 0xC0,0xC0,0xC0, 0x10,0x10,0x10, 0x10,0x10,0x10, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x10,0x10,0x10, 0x10,0x10,0x10, 0xC0,0xC0,0xC0, 0x10,0x10,0x10, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x10,0x10,0x10, 0x10,0x10,0x10, 0x10,0x10,0x10, 0xC0,0xC0,0xC0, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
};
#else
static int data_mode2[] = {
0x4B,0x00,\
0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0xd0,0xd0,0xd0, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0xd0,0xd0,0xd0, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0xd0,0xd0,0xd0, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x10,0x04,0x07, 0x10,0x04,0x07, 0xd0,0xd0,0xd0, 0x10,0x04,0x07, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x10,0x04,0x07, 0x10,0x04,0x07, 0xd0,0xd0,0xd0, 0x10,0x04,0x07, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x10,0x04,0x07, 0x10,0x04,0x07, 0xd0,0xd0,0xd0, 0x10,0x04,0x07, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x10,0x04,0x07, 0xd0,0xd0,0xd0, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x10,0x04,0x07, 0xd0,0xd0,0xd0, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x10,0x04,0x07, 0xd0,0xd0,0xd0, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x00,0x00,0x00, 0x00,0x00,0x00,
0xd0,0xd0,0xd0, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x00,0x00,0x00, 0x00,0x00,0x00,
0xd0,0xd0,0xd0, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x00,0x00,0x00, 0x00,0x00,0x00,
0xd0,0xd0,0xd0, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x00,0x00,0x00, 0x00,0x00,0x00,
};
#endif
//time_val: 0x64,cycles_val: 0x00,
#if 1
static int data_mode3[] = {
0x4B,0x00,\
0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x00,0x00,0x00,
0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x00,0x00,0x00,
0x20,0x08,0x0e, 0x20,0x08,0x0e, 0x20,0x08,0x0e, 0x20,0x08,0x0e, 0x20,0x08,0x0e, 0x00,0x00,0x00,
0x20,0x08,0x0e, 0x20,0x08,0x0e, 0x20,0x08,0x0e, 0x20,0x08,0x0e, 0x20,0x08,0x0e, 0x00,0x00,0x00,
0x30,0x0c,0x15, 0x30,0x0c,0x15, 0x30,0x0c,0x15, 0x30,0x0c,0x15, 0x30,0x0c,0x15, 0x00,0x00,0x00,
0x30,0x0c,0x15, 0x30,0x0c,0x15, 0x30,0x0c,0x15, 0x30,0x0c,0x15, 0x30,0x0c,0x15, 0x00,0x00,0x00,
0x60,0x18,0x2a, 0x60,0x18,0x2a, 0x60,0x18,0x2a, 0x60,0x18,0x2a, 0x60,0x18,0x2a, 0x00,0x00,0x00,
0x60,0x18,0x2a, 0x60,0x18,0x2a, 0x60,0x18,0x2a, 0x60,0x18,0x2a, 0x60,0x18,0x2a, 0x00,0x00,0x00,
0x90,0x24,0x3f, 0x90,0x24,0x3f, 0x90,0x24,0x3f, 0x90,0x24,0x3f, 0x90,0x24,0x3f, 0x00,0x00,0x00,
0x90,0x24,0x3f, 0x90,0x24,0x3f, 0x90,0x24,0x3f, 0x90,0x24,0x3f, 0x90,0x24,0x3f, 0x00,0x00,0x00,
0xb0,0x2c,0x4b, 0xb0,0x2c,0x4b, 0xb0,0x2c,0x4b, 0xb0,0x2c,0x4b, 0xb0,0x2c,0x4b, 0x00,0x00,0x00,
0xb0,0x2c,0x4b, 0xb0,0x2c,0x4b, 0xb0,0x2c,0x4b, 0xb0,0x2c,0x4b, 0xb0,0x2c,0x4b, 0x00,0x00,0x00,
0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0x00,0x00,0x00,
0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0x00,0x00,0x00,
0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0x00,0x00,0x00,
0xb0,0x2c,0x4b, 0xb0,0x2c,0x4b, 0xb0,0x2c,0x4b, 0xb0,0x2c,0x4b, 0xb0,0x2c,0x4b, 0x00,0x00,0x00,
0xb0,0x2c,0x4b, 0xb0,0x2c,0x4b, 0xb0,0x2c,0x4b, 0xb0,0x2c,0x4b, 0xb0,0x2c,0x4b, 0x00,0x00,0x00,
0x90,0x24,0x3f, 0x90,0x24,0x3f, 0x90,0x24,0x3f, 0x90,0x24,0x3f, 0x90,0x24,0x3f, 0x00,0x00,0x00,
0x90,0x24,0x3f, 0x90,0x24,0x3f, 0x90,0x24,0x3f, 0x90,0x24,0x3f, 0x90,0x24,0x3f, 0x00,0x00,0x00,
0x60,0x18,0x2a, 0x60,0x18,0x2a, 0x60,0x18,0x2a, 0x60,0x18,0x2a, 0x60,0x18,0x2a, 0x00,0x00,0x00,
0x60,0x18,0x2a, 0x60,0x18,0x2a, 0x60,0x18,0x2a, 0x60,0x18,0x2a, 0x60,0x18,0x2a, 0x00,0x00,0x00,
0x30,0x0c,0x15, 0x30,0x0c,0x15, 0x30,0x0c,0x15, 0x30,0x0c,0x15, 0x30,0x0c,0x15, 0x00,0x00,0x00,
0x30,0x0c,0x15, 0x30,0x0c,0x15, 0x30,0x0c,0x15, 0x30,0x0c,0x15, 0x30,0x0c,0x15, 0x00,0x00,0x00,
0x20,0x08,0x0e, 0x20,0x08,0x0e, 0x20,0x08,0x0e, 0x20,0x08,0x0e, 0x20,0x08,0x0e, 0x00,0x00,0x00,
0x20,0x08,0x0e, 0x20,0x08,0x0e, 0x20,0x08,0x0e, 0x20,0x08,0x0e, 0x20,0x08,0x0e, 0x00,0x00,0x00,
0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x00,0x00,0x00,
0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x10,0x04,0x07, 0x00,0x00,0x00,
};
#else
static int data_mode3[] = {
0x32,0x00,\
0x03,0x03,0x03, 0x03,0x03,0x03, 0x03,0x03,0x03, 0x03,0x03,0x03, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x03,0x03,0x03, 0x03,0x03,0x03, 0x03,0x03,0x03, 0x03,0x03,0x03, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x05,0x05,0x05, 0x05,0x05,0x05, 0x05,0x05,0x05, 0x05,0x05,0x05, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x05,0x05,0x05, 0x05,0x05,0x05, 0x05,0x05,0x05, 0x05,0x05,0x05, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x07,0x07,0x07, 0x07,0x07,0x07, 0x07,0x07,0x07, 0x07,0x07,0x07, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x07,0x07,0x07, 0x07,0x07,0x07, 0x07,0x07,0x07, 0x07,0x07,0x07, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x09,0x09,0x09, 0x09,0x09,0x09, 0x09,0x09,0x09, 0x09,0x09,0x09, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x09,0x09,0x09, 0x09,0x09,0x09, 0x09,0x09,0x09, 0x09,0x09,0x09, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x0B,0x0B,0x0B, 0x0B,0x0B,0x0B, 0x0B,0x0B,0x0B, 0x0B,0x0B,0x0B, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x0B,0x0B,0x0B, 0x0B,0x0B,0x0B, 0x0B,0x0B,0x0B, 0x0B,0x0B,0x0B, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x0F,0x0F,0x0F, 0x0F,0x0F,0x0F, 0x0F,0x0F,0x0F, 0x0F,0x0F,0x0F, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x0F,0x0F,0x0F, 0x0F,0x0F,0x0F, 0x0F,0x0F,0x0F, 0x0F,0x0F,0x0F, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x15,0x15,0x15, 0x15,0x15,0x15, 0x15,0x15,0x15, 0x15,0x15,0x15, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x15,0x15,0x15, 0x15,0x15,0x15, 0x15,0x15,0x15, 0x15,0x15,0x15, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x21,0x21,0x21, 0x21,0x21,0x21, 0x21,0x21,0x21, 0x21,0x21,0x21, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x21,0x21,0x21, 0x21,0x21,0x21, 0x21,0x21,0x21, 0x21,0x21,0x21, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x27,0x27,0x27, 0x27,0x27,0x27, 0x27,0x27,0x27, 0x27,0x27,0x27, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x27,0x27,0x27, 0x27,0x27,0x27, 0x27,0x27,0x27, 0x27,0x27,0x27, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x21,0x21,0x21, 0x21,0x21,0x21, 0x21,0x21,0x21, 0x21,0x21,0x21, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x21,0x21,0x21, 0x21,0x21,0x21, 0x21,0x21,0x21, 0x21,0x21,0x21, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x15,0x15,0x15, 0x15,0x15,0x15, 0x15,0x15,0x15, 0x15,0x15,0x15, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x15,0x15,0x15, 0x15,0x15,0x15, 0x15,0x15,0x15, 0x15,0x15,0x15, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x0F,0x0F,0x0F, 0x0F,0x0F,0x0F, 0x0F,0x0F,0x0F, 0x0F,0x0F,0x0F, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x0F,0x0F,0x0F, 0x0F,0x0F,0x0F, 0x0F,0x0F,0x0F, 0x0F,0x0F,0x0F, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x0B,0x0B,0x0B, 0x0B,0x0B,0x0B, 0x0B,0x0B,0x0B, 0x0B,0x0B,0x0B, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x0B,0x0B,0x0B, 0x0B,0x0B,0x0B, 0x0B,0x0B,0x0B, 0x0B,0x0B,0x0B, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x09,0x09,0x09, 0x09,0x09,0x09, 0x09,0x09,0x09, 0x09,0x09,0x09, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x09,0x09,0x09, 0x09,0x09,0x09, 0x09,0x09,0x09, 0x09,0x09,0x09, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x07,0x07,0x07, 0x07,0x07,0x07, 0x07,0x07,0x07, 0x07,0x07,0x07, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x07,0x07,0x07, 0x07,0x07,0x07, 0x07,0x07,0x07, 0x07,0x07,0x07, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x05,0x05,0x05, 0x05,0x05,0x05, 0x05,0x05,0x05, 0x05,0x05,0x05, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x05,0x05,0x05, 0x05,0x05,0x05, 0x05,0x05,0x05, 0x05,0x05,0x05, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x03,0x03,0x03, 0x03,0x03,0x03, 0x03,0x03,0x03, 0x03,0x03,0x03, 0x00,0x00,0x00, 0x00,0x00,0x00,
0x03,0x03,0x03, 0x03,0x03,0x03, 0x03,0x03,0x03, 0x03,0x03,0x03, 0x00,0x00,0x00, 0x00,0x00,0x00,
};
#endif
//time_val: 0x64,cycles_val: 0x00,
static int data_mode4[] = {
0x64,0x01,\
0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0xd0,0xd0,0xd0, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
};
//time_val: 0x64,cycles_val: 0x00,
static int data_mode5[] = {
0x64,0x01,\
0xd0,0x45,0x00, 0xd0,0x45,0x00, 0xd0,0x45,0x00, 0xd0,0x45,0x00, 0xd0,0x45,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
};
//time_val: 0x64,cycles_val: 0x01,
#ifdef NO_DIRECTION_CORRECT
static int data_mode6[] = {
0xC8,0x01,\
0x00,0x00,0x80, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x80, 0x80,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x80, 0x80,0x00,0xFF, 0x8C,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x80, 0x80,0x00,0xFF, 0x8C,0x00,0x00, 0x80,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x80, 0x80,0x00,0xFF, 0x8C,0x00,0x00, 0x80,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x80, 0x80,0x00,0xFF, 0x8C,0x00,0x00, 0x80,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
};
#else
static int data_mode6[] = {
0xE8,0x01,\
0x00,0x00,0xd0, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0xd0, 0xd0,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0xd0, 0xd0,0x00,0x00, 0xd0,0x45,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0xd0, 0xd0,0x00,0x00, 0xd0,0x45,0x00, 0x00,0xd0,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0xd0, 0xd0,0x00,0x00, 0xd0,0x45,0x00, 0x00,0xd0,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0xd0, 0xd0,0x00,0x00, 0xd0,0x45,0x00, 0x00,0xd0,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0xd0, 0xd0,0x00,0x00, 0xd0,0x45,0x00, 0x00,0xd0,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
};
#endif
//time_val: 0x64,cycles_val: 0x00,
static int data_mode7[] = {
0x64,0x01,\
0x00,0x00,0x00, 0x80,0x00,0x00, 0x80,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,\
};
//time_val: 0x64,cycles_val: 0x00,
static int data_mode8[] = {
0x64,0x01,\
0xF5,0x00,0x00, 0xF5,0x00,0x00, 0xF5,0x00,0x00, 0xF5,0x00,0x00, 0xF5,0x00,0x00, 0xF5,0x00,0x00,\
0xF5,0x00,0x00, 0xF5,0x00,0x00, 0xF5,0x00,0x00, 0xF5,0x00,0x00, 0xF5,0x00,0x00, 0xF5,0x00,0x00,\
};
//time_val: 0x64,cycles_val: 0x00,
static int data_mode9[] = {
0x64,0x01,\
0x00,0xF5,0x00, 0x00,0xF5,0x00, 0x00,0xF5,0x00, 0x00,0xF5,0x00, 0x00,0xF5,0x00, 0x00,0xF5,0x00,\
0x00,0xF5,0x00, 0x00,0xF5,0x00, 0x00,0xF5,0x00, 0x00,0xF5,0x00, 0x00,0xF5,0x00, 0x00,0xF5,0x00,\
};
//time_val: 0x64,cycles_val: 0x00,
static int data_mode10[] = {
0x64,0x01,\
0x00,0x00,0xF5, 0x00,0x00,0xF5, 0x00,0x00,0xF5, 0x00,0x00,0xF5, 0x00,0x00,0xF5, 0x00,0x00,0xF5,\
0x00,0x00,0xF5, 0x00,0x00,0xF5, 0x00,0x00,0xF5, 0x00,0x00,0xF5, 0x00,0x00,0xF5, 0x00,0x00,0xF5,\
};
//time_val: 0x64,cycles_val: 0x00,
static int data_mode11[] = {
0x64,0x01,\
0xF5,0xF5,0xF5, 0xF5,0xF5,0xF5, 0xF5,0xF5,0xF5, 0xF5,0xF5,0xF5, 0xF5,0xF5,0xF5, 0xF5,0xF5,0xF5,\
0xF5,0xF5,0xF5, 0xF5,0xF5,0xF5, 0xF5,0xF5,0xF5, 0xF5,0xF5,0xF5, 0xF5,0xF5,0xF5, 0xF5,0xF5,0xF5,\
};
//time_val: 0x64,cycles_val: 0x00,
static int data_mode12[] = {
0x64,0x01,\
0x00,0x30,0x20, 0x00,0x30,0x20, 0x00,0x30,0x20, 0x00,0x30,0x20, 0x00,0x30,0x20, 0x00,0x30,0x20,\
0x00,0x30,0x20, 0x00,0x30,0x20, 0x00,0x30,0x20, 0x00,0x30,0x20, 0x00,0x30,0x20, 0x00,0x30,0x20,\
};
#endif