mirror of
https://github.com/openharmony/device_board_kaihong.git
synced 2026-07-01 22:24:05 -04:00
@@ -18,14 +18,17 @@ extern "C" {
|
||||
#include <jpeglib.h>
|
||||
#include <transupp.h>
|
||||
}
|
||||
|
||||
namespace OHOS::Camera {
|
||||
uint32_t RKCodecNode::previewWidth_ = 0;
|
||||
uint32_t RKCodecNode::previewHeight_ = 0;
|
||||
const unsigned long long TIME_CONVERSION_NS_S = 1000000000ULL; /* ns to s */
|
||||
|
||||
RKCodecNode::RKCodecNode(const std::string& name, const std::string& type) : NodeBase(name, type)
|
||||
RKCodecNode::RKCodecNode(const std::string &name, const std::string &type)
|
||||
: NodeBase(name, type)
|
||||
{
|
||||
CAMERA_LOGV("%{public}s enter, type(%{public}s)\n", name_.c_str(), type_.c_str());
|
||||
CAMERA_LOGV("%{public}s enter, type(%{public}s)\n", name_.c_str(),
|
||||
type_.c_str());
|
||||
}
|
||||
|
||||
RKCodecNode::~RKCodecNode()
|
||||
@@ -59,47 +62,52 @@ RKCodecNode::RKCodecNode(const std::string& name, const std::string& type) : Nod
|
||||
return RC_OK;
|
||||
}
|
||||
|
||||
static void RotJpegImg(
|
||||
const unsigned char *inputImg, size_t inputSize, unsigned char **outImg, size_t *outSize, JXFORM_CODE rotDegrees)
|
||||
{
|
||||
struct jpeg_decompress_struct inputInfo;
|
||||
struct jpeg_error_mgr jerrIn;
|
||||
struct jpeg_compress_struct outInfo;
|
||||
struct jpeg_error_mgr jerrOut;
|
||||
jvirt_barray_ptr *src_coef_arrays;
|
||||
jvirt_barray_ptr *dst_coef_arrays;
|
||||
inputInfo.err = jpeg_std_error(&jerrIn);
|
||||
jpeg_create_decompress(&inputInfo);
|
||||
outInfo.err = jpeg_std_error(&jerrOut);
|
||||
jpeg_create_compress(&outInfo);
|
||||
jpeg_mem_src(&inputInfo, inputImg, inputSize);
|
||||
jpeg_mem_dest(&outInfo, outImg, (unsigned long *)outSize);
|
||||
JCOPY_OPTION copyoption;
|
||||
jpeg_transform_info transformoption;
|
||||
transformoption.transform = rotDegrees;
|
||||
transformoption.perfect = TRUE;
|
||||
transformoption.trim = FALSE;
|
||||
transformoption.force_grayscale = FALSE;
|
||||
transformoption.crop = FALSE;
|
||||
jcopy_markers_setup(&inputInfo, copyoption);
|
||||
(void)jpeg_read_header(&inputInfo, TRUE);
|
||||
if (!jtransform_request_workspace(&inputInfo, &transformoption)) {
|
||||
CAMERA_LOGE("%s: transformation is not perfect", __func__);
|
||||
return;
|
||||
static void RotJpegImg(const unsigned char *inputImg, size_t inputSize,
|
||||
unsigned char **outImg, size_t *outSize,
|
||||
JXFORM_CODE rotDegrees)
|
||||
{
|
||||
struct jpeg_decompress_struct inputInfo;
|
||||
struct jpeg_error_mgr jerrIn;
|
||||
struct jpeg_compress_struct outInfo;
|
||||
struct jpeg_error_mgr jerrOut;
|
||||
jvirt_barray_ptr *src_coef_arrays;
|
||||
jvirt_barray_ptr *dst_coef_arrays;
|
||||
inputInfo.err = jpeg_std_error(&jerrIn);
|
||||
jpeg_create_decompress(&inputInfo);
|
||||
outInfo.err = jpeg_std_error(&jerrOut);
|
||||
jpeg_create_compress(&outInfo);
|
||||
jpeg_mem_src(&inputInfo, inputImg, inputSize);
|
||||
jpeg_mem_dest(&outInfo, outImg, (unsigned long *)outSize);
|
||||
JCOPY_OPTION copyoption;
|
||||
jpeg_transform_info transformoption;
|
||||
transformoption.transform = rotDegrees;
|
||||
transformoption.perfect = TRUE;
|
||||
transformoption.trim = FALSE;
|
||||
transformoption.force_grayscale = FALSE;
|
||||
transformoption.crop = FALSE;
|
||||
jcopy_markers_setup(&inputInfo, copyoption);
|
||||
(void)jpeg_read_header(&inputInfo, TRUE);
|
||||
if (!jtransform_request_workspace(&inputInfo, &transformoption)) {
|
||||
CAMERA_LOGE("%s: transformation is not perfect", __func__);
|
||||
return;
|
||||
}
|
||||
src_coef_arrays = jpeg_read_coefficients(&inputInfo);
|
||||
jpeg_copy_critical_parameters(&inputInfo, &outInfo);
|
||||
dst_coef_arrays = jtransform_adjust_parameters(
|
||||
&inputInfo, &outInfo, src_coef_arrays, &transformoption);
|
||||
jpeg_write_coefficients(&outInfo, dst_coef_arrays);
|
||||
jcopy_markers_execute(&inputInfo, &outInfo, copyoption);
|
||||
jtransform_execute_transformation(&inputInfo, &outInfo, src_coef_arrays,
|
||||
&transformoption);
|
||||
jpeg_finish_compress(&outInfo);
|
||||
jpeg_destroy_compress(&outInfo);
|
||||
(void)jpeg_finish_decompress(&inputInfo);
|
||||
jpeg_destroy_decompress(&inputInfo);
|
||||
}
|
||||
src_coef_arrays = jpeg_read_coefficients(&inputInfo);
|
||||
jpeg_copy_critical_parameters(&inputInfo, &outInfo);
|
||||
dst_coef_arrays = jtransform_adjust_parameters(&inputInfo, &outInfo, src_coef_arrays, &transformoption);
|
||||
jpeg_write_coefficients(&outInfo, dst_coef_arrays);
|
||||
jcopy_markers_execute(&inputInfo, &outInfo, copyoption);
|
||||
jtransform_execute_transformation(&inputInfo, &outInfo, src_coef_arrays, &transformoption);
|
||||
jpeg_finish_compress(&outInfo);
|
||||
jpeg_destroy_compress(&outInfo);
|
||||
(void)jpeg_finish_decompress(&inputInfo);
|
||||
jpeg_destroy_decompress(&inputInfo);
|
||||
}
|
||||
void RKCodecNode::encodeJpegToMemory(unsigned char* image, int width, int height,
|
||||
const char* comment, unsigned long* jpegSize, unsigned char** jpegBuf)
|
||||
void RKCodecNode::encodeJpegToMemory(unsigned char *image, int width,
|
||||
int height, const char *comment,
|
||||
unsigned long *jpegSize,
|
||||
unsigned char **jpegBuf)
|
||||
{
|
||||
struct jpeg_compress_struct cInfo;
|
||||
struct jpeg_error_mgr jErr;
|
||||
@@ -123,25 +131,28 @@ void RKCodecNode::encodeJpegToMemory(unsigned char* image, int width, int height
|
||||
jpeg_start_compress(&cInfo, TRUE);
|
||||
|
||||
if (comment) {
|
||||
jpeg_write_marker(&cInfo, JPEG_COM, (const JOCTET*)comment, strlen(comment));
|
||||
jpeg_write_marker(&cInfo, JPEG_COM, (const JOCTET *)comment,
|
||||
strlen(comment));
|
||||
}
|
||||
|
||||
row_stride = width;
|
||||
while (cInfo.next_scanline < cInfo.image_height) {
|
||||
row_pointer[0] = &image[cInfo.next_scanline * row_stride * pixelsThick];
|
||||
row_pointer[0] =
|
||||
&image[cInfo.next_scanline * row_stride * pixelsThick];
|
||||
jpeg_write_scanlines(&cInfo, row_pointer, 1);
|
||||
}
|
||||
|
||||
jpeg_finish_compress(&cInfo);
|
||||
jpeg_destroy_compress(&cInfo);
|
||||
size_t rotJpgSize = 0;
|
||||
unsigned char* rotJpgBuf = nullptr;
|
||||
RotJpegImg(*jpegBuf, *jpegSize, &rotJpgBuf, &rotJpgSize, JXFORM_ROT_270);
|
||||
if (rotJpgBuf != nullptr && rotJpgSize != 0) {
|
||||
free(*jpegBuf);
|
||||
*jpegBuf = rotJpgBuf;
|
||||
*jpegSize = rotJpgSize;
|
||||
}
|
||||
size_t rotJpgSize = 0;
|
||||
unsigned char *rotJpgBuf = nullptr;
|
||||
RotJpegImg(*jpegBuf, *jpegSize, &rotJpgBuf, &rotJpgSize,
|
||||
JXFORM_ROT_270);
|
||||
if (rotJpgBuf != nullptr && rotJpgSize != 0) {
|
||||
free(*jpegBuf);
|
||||
*jpegBuf = rotJpgBuf;
|
||||
*jpegSize = rotJpgSize;
|
||||
}
|
||||
}
|
||||
|
||||
int RKCodecNode::findStartCode(unsigned char *data, size_t dataSz)
|
||||
@@ -155,7 +166,7 @@ void RKCodecNode::encodeJpegToMemory(unsigned char* image, int width, int height
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ((dataSz > dataSize) && (data[0] == 0) && (data[1] == 0) && \
|
||||
if ((dataSz > dataSize) && (data[0] == 0) && (data[1] == 0) &&
|
||||
(data[dataBit2] == 0) && (data[dataBit3] == 1)) {
|
||||
return 4; // 4:start node
|
||||
}
|
||||
@@ -165,7 +176,8 @@ void RKCodecNode::encodeJpegToMemory(unsigned char* image, int width, int height
|
||||
|
||||
static constexpr uint32_t nalBit = 0x1F;
|
||||
|
||||
void RKCodecNode::SerchIFps(unsigned char* buf, size_t bufSize, std::shared_ptr<IBuffer>& buffer)
|
||||
void RKCodecNode::SerchIFps(unsigned char *buf, size_t bufSize,
|
||||
std::shared_ptr<IBuffer> &buffer)
|
||||
{
|
||||
size_t nalType = 0;
|
||||
size_t idx = 0;
|
||||
@@ -184,10 +196,14 @@ void RKCodecNode::SerchIFps(unsigned char* buf, size_t bufSize, std::shared_ptr<
|
||||
size -= 1;
|
||||
} else {
|
||||
nalType = ((buf[idx + ret]) & nalBit);
|
||||
CAMERA_LOGI("ForkNode::ForkBuffers nalu == 0x%{public}x buf == 0x%{public}x \n", nalType, buf[idx + ret]);
|
||||
CAMERA_LOGI("ForkNode::ForkBuffers nalu == 0x%{public}x buf == "
|
||||
"0x%{public}x \n",
|
||||
nalType, buf[idx + ret]);
|
||||
if (nalType == nalTypeValue) {
|
||||
buffer->SetEsKeyFrame(1);
|
||||
CAMERA_LOGI("ForkNode::ForkBuffers SetEsKeyFrame == 1 nalu == 0x%{public}x\n", nalType);
|
||||
CAMERA_LOGI("ForkNode::ForkBuffers SetEsKeyFrame == 1 nalu "
|
||||
"== 0x%{public}x\n",
|
||||
nalType);
|
||||
break;
|
||||
} else {
|
||||
idx += ret;
|
||||
@@ -202,7 +218,8 @@ void RKCodecNode::SerchIFps(unsigned char* buf, size_t bufSize, std::shared_ptr<
|
||||
|
||||
if (idx >= bufSize) {
|
||||
buffer->SetEsKeyFrame(0);
|
||||
CAMERA_LOGI("ForkNode::ForkBuffers SetEsKeyFrame == 0 nalu == 0x%{public}x idx = %{public}d\n",
|
||||
CAMERA_LOGI("ForkNode::ForkBuffers SetEsKeyFrame == 0 nalu == "
|
||||
"0x%{public}x idx = %{public}d\n",
|
||||
nalType, idx);
|
||||
}
|
||||
}
|
||||
@@ -217,18 +234,21 @@ void RKCodecNode::SerchIFps(unsigned char* buf, size_t bufSize, std::shared_ptr<
|
||||
int dma_fd = buffer->GetFileDescriptor();
|
||||
void *temp = malloc(buffer->GetSize());
|
||||
if (temp == nullptr) {
|
||||
CAMERA_LOGI("RKCodecNode::Yuv420ToRGBA8888 malloc buffer == nullptr");
|
||||
CAMERA_LOGI(
|
||||
"RKCodecNode::Yuv420ToRGBA8888 malloc buffer == nullptr");
|
||||
return;
|
||||
}
|
||||
|
||||
previewWidth_ = buffer->GetWidth();
|
||||
previewHeight_ = buffer->GetHeight();
|
||||
int ret = memcpy_s(temp, buffer->GetSize(), (const void *)buffer->GetVirAddress(), buffer->GetSize());
|
||||
if (ret == 0) {
|
||||
buffer->SetEsFrameSize(buffer->GetSize());
|
||||
} else {
|
||||
int ret =
|
||||
memcpy_s(temp, buffer->GetSize(),
|
||||
(const void *)buffer->GetVirAddress(), buffer->GetSize());
|
||||
if (ret == 0) {
|
||||
buffer->SetEsFrameSize(buffer->GetSize());
|
||||
} else {
|
||||
printf("memcpy_s failed!\n");
|
||||
buffer->SetEsFrameSize(0);
|
||||
buffer->SetEsFrameSize(0);
|
||||
}
|
||||
RockchipRga rkRga;
|
||||
|
||||
@@ -245,9 +265,11 @@ void RKCodecNode::SerchIFps(unsigned char* buf, size_t bufSize, std::shared_ptr<
|
||||
dst.virAddr = 0;
|
||||
|
||||
rga_set_rect(&src.rect, 0, 0, buffer->GetWidth(), buffer->GetHeight(),
|
||||
buffer->GetWidth(), buffer->GetHeight(), RK_FORMAT_YCbCr_420_P);
|
||||
buffer->GetWidth(), buffer->GetHeight(),
|
||||
RK_FORMAT_YCbCr_420_P);
|
||||
rga_set_rect(&dst.rect, 0, 0, buffer->GetWidth(), buffer->GetHeight(),
|
||||
buffer->GetWidth(), buffer->GetHeight(), RK_FORMAT_RGBA_8888);
|
||||
buffer->GetWidth(), buffer->GetHeight(),
|
||||
RK_FORMAT_RGBA_8888);
|
||||
|
||||
rkRga.RkRgaBlit(&src, &dst, NULL);
|
||||
rkRga.RkRgaFlush();
|
||||
@@ -265,7 +287,7 @@ void RKCodecNode::SerchIFps(unsigned char* buf, size_t bufSize, std::shared_ptr<
|
||||
|
||||
int dma_fd = buffer->GetFileDescriptor();
|
||||
unsigned char *jBuf = nullptr;
|
||||
unsigned long jpegSize = 0;
|
||||
unsigned long jpegSize = 0;
|
||||
uint32_t tempSize = (previewWidth_ * previewHeight_ * RGB24Width);
|
||||
|
||||
void *temp = malloc(tempSize);
|
||||
@@ -294,9 +316,11 @@ unsigned long jpegSize = 0;
|
||||
|
||||
rkRga.RkRgaBlit(&src, &dst, NULL);
|
||||
rkRga.RkRgaFlush();
|
||||
encodeJpegToMemory((unsigned char *)temp, previewWidth_, previewHeight_, nullptr, &jpegSize, &jBuf);
|
||||
encodeJpegToMemory((unsigned char *)temp, previewWidth_, previewHeight_,
|
||||
nullptr, &jpegSize, &jBuf);
|
||||
|
||||
int ret = memcpy_s((unsigned char*)buffer->GetVirAddress(), buffer->GetSize(), jBuf, jpegSize);
|
||||
int ret = memcpy_s((unsigned char *)buffer->GetVirAddress(),
|
||||
buffer->GetSize(), jBuf, jpegSize);
|
||||
if (ret == 0) {
|
||||
buffer->SetEsFrameSize(jpegSize);
|
||||
} else {
|
||||
@@ -307,7 +331,8 @@ unsigned long jpegSize = 0;
|
||||
free(jBuf);
|
||||
free(temp);
|
||||
|
||||
CAMERA_LOGE("RKCodecNode::Yuv420ToJpeg jpegSize = %{public}d\n", jpegSize);
|
||||
CAMERA_LOGE("RKCodecNode::Yuv420ToJpeg jpegSize = %{public}d\n",
|
||||
jpegSize);
|
||||
}
|
||||
|
||||
void RKCodecNode::Yuv420ToH264(std::shared_ptr<IBuffer> &buffer)
|
||||
@@ -331,14 +356,18 @@ unsigned long jpegSize = 0;
|
||||
args.type = MPP_VIDEO_CodingAVC;
|
||||
halCtx_ = hal_mpp_ctx_create(&args);
|
||||
if (halCtx_ == nullptr) {
|
||||
CAMERA_LOGI("RKCodecNode::Yuv420ToH264 halCtx_ = %{public}p\n", halCtx_);
|
||||
CAMERA_LOGI("RKCodecNode::Yuv420ToH264 halCtx_ = %{public}p\n",
|
||||
halCtx_);
|
||||
return;
|
||||
}
|
||||
mppStatus_ = 1;
|
||||
buf_size = ((MpiEncTestData *)halCtx_)->frame_size;
|
||||
|
||||
ret = hal_mpp_encode(halCtx_, dma_fd, (unsigned char *)buffer->GetVirAddress(), &buf_size);
|
||||
SerchIFps((unsigned char *)buffer->GetVirAddress(), buf_size, buffer);
|
||||
ret = hal_mpp_encode(halCtx_, dma_fd,
|
||||
(unsigned char *)buffer->GetVirAddress(),
|
||||
&buf_size);
|
||||
SerchIFps((unsigned char *)buffer->GetVirAddress(), buf_size,
|
||||
buffer);
|
||||
|
||||
buffer->SetEsFrameSize(buf_size);
|
||||
clock_gettime(CLOCK_MONOTONIC, &ts);
|
||||
@@ -347,19 +376,24 @@ unsigned long jpegSize = 0;
|
||||
CAMERA_LOGI("RKCodecNode::Yuv420ToH264 video capture on\n");
|
||||
} else {
|
||||
if (halCtx_ == nullptr) {
|
||||
CAMERA_LOGI("RKCodecNode::Yuv420ToH264 halCtx_ = %{public}p\n", halCtx_);
|
||||
CAMERA_LOGI("RKCodecNode::Yuv420ToH264 halCtx_ = %{public}p\n",
|
||||
halCtx_);
|
||||
return;
|
||||
}
|
||||
buf_size = ((MpiEncTestData *)halCtx_)->frame_size;
|
||||
ret = hal_mpp_encode(halCtx_, dma_fd, (unsigned char *)buffer->GetVirAddress(), &buf_size);
|
||||
SerchIFps((unsigned char *)buffer->GetVirAddress(), buf_size, buffer);
|
||||
ret = hal_mpp_encode(halCtx_, dma_fd,
|
||||
(unsigned char *)buffer->GetVirAddress(),
|
||||
&buf_size);
|
||||
SerchIFps((unsigned char *)buffer->GetVirAddress(), buf_size,
|
||||
buffer);
|
||||
buffer->SetEsFrameSize(buf_size);
|
||||
clock_gettime(CLOCK_MONOTONIC, &ts);
|
||||
timestamp = ts.tv_nsec + ts.tv_sec * TIME_CONVERSION_NS_S;
|
||||
buffer->SetEsTimestamp(timestamp);
|
||||
}
|
||||
|
||||
CAMERA_LOGI("ForkNode::ForkBuffers H264 size = %{public}d ret = %{public}d timestamp = %{public}lld\n",
|
||||
CAMERA_LOGI("ForkNode::ForkBuffers H264 size = %{public}d ret = "
|
||||
"%{public}d timestamp = %{public}lld\n",
|
||||
buf_size, ret, timestamp);
|
||||
}
|
||||
|
||||
@@ -380,18 +414,20 @@ unsigned long jpegSize = 0;
|
||||
Yuv420ToRGBA8888(buffer);
|
||||
}
|
||||
|
||||
std::vector<std::shared_ptr<IPort>> outPutPorts_;
|
||||
std::vector<std::shared_ptr<IPort>> outPutPorts_;
|
||||
outPutPorts_ = GetOutPorts();
|
||||
for (auto &it : outPutPorts_) {
|
||||
if (it->format_.streamId_ == id) {
|
||||
it->DeliverBuffer(buffer);
|
||||
CAMERA_LOGI("RKCodecNode deliver buffer streamid = %{public}d", it->format_.streamId_);
|
||||
CAMERA_LOGI("RKCodecNode deliver buffer streamid = %{public}d",
|
||||
it->format_.streamId_);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RetCode RKCodecNode::Capture(const int32_t streamId, const int32_t captureId)
|
||||
RetCode RKCodecNode::Capture(const int32_t streamId,
|
||||
const int32_t captureId)
|
||||
{
|
||||
CAMERA_LOGV("RKCodecNode::Capture");
|
||||
return RC_OK;
|
||||
@@ -399,7 +435,8 @@ RetCode RKCodecNode::Capture(const int32_t streamId, const int32_t captureId)
|
||||
|
||||
RetCode RKCodecNode::CancelCapture(const int32_t streamId)
|
||||
{
|
||||
CAMERA_LOGI("RKCodecNode::CancelCapture streamid = %{public}d", streamId);
|
||||
CAMERA_LOGI("RKCodecNode::CancelCapture streamid = %{public}d",
|
||||
streamId);
|
||||
|
||||
return RC_OK;
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#include "mpp_mem.h"
|
||||
#include "mpp_log.h"
|
||||
#include "mpp_common.h"
|
||||
|
||||
extern "C" {
|
||||
#include "mpi_enc_utils.h"
|
||||
}
|
||||
@@ -41,15 +42,18 @@ namespace OHOS::Camera {
|
||||
RetCode Start(const int32_t streamId) override;
|
||||
RetCode Stop(const int32_t streamId) override;
|
||||
void DeliverBuffer(std::shared_ptr<IBuffer> &buffer) override;
|
||||
virtual RetCode Capture(const int32_t streamId, const int32_t captureId) override;
|
||||
virtual RetCode Capture(const int32_t streamId,
|
||||
const int32_t captureId) override;
|
||||
RetCode CancelCapture(const int32_t streamId) override;
|
||||
RetCode Flush(const int32_t streamId);
|
||||
|
||||
private:
|
||||
void encodeJpegToMemory(unsigned char *image, int width, int height,
|
||||
const char* comment, unsigned long* jpegSize, unsigned char** jpegBuf);
|
||||
const char *comment, unsigned long *jpegSize,
|
||||
unsigned char **jpegBuf);
|
||||
int findStartCode(unsigned char *data, size_t dataSz);
|
||||
void SerchIFps(unsigned char* buf, size_t bufSize, std::shared_ptr<IBuffer>& buffer);
|
||||
void SerchIFps(unsigned char *buf, size_t bufSize,
|
||||
std::shared_ptr<IBuffer> &buffer);
|
||||
void Yuv420ToRGBA8888(std::shared_ptr<IBuffer> &buffer);
|
||||
void Yuv420ToJpeg(std::shared_ptr<IBuffer> &buffer);
|
||||
void Yuv420ToH264(std::shared_ptr<IBuffer> &buffer);
|
||||
|
||||
@@ -53,17 +53,20 @@ static int32_t ChipDetect(ChipDevice *device)
|
||||
xSolution = (buf[GT_SOLU_X_HIGH] << ONE_BYTE_OFFSET) | buf[GT_SOLU_X_LOW];
|
||||
ySolution = (buf[GT_SOLU_Y_HIGH] << ONE_BYTE_OFFSET) | buf[GT_SOLU_Y_LOW];
|
||||
#if defined(CONFIG_ARCH_ROCKCHIP)
|
||||
if (version != 0x1020 || buf[GT_PROD_ID_1ST] != '9' || buf[GT_PROD_ID_2ND] != '2') {
|
||||
// return HDF_FAILURE;
|
||||
if (version != 0x1020 || buf[GT_PROD_ID_1ST] != '9' ||
|
||||
buf[GT_PROD_ID_2ND] != '2') {
|
||||
}
|
||||
#endif
|
||||
HDF_LOGI("%s: IC FW version is 0x%x", __func__, version);
|
||||
if (buf[GT_FW_VER_HIGH] == 0x0) {
|
||||
HDF_LOGI("Product ID : %c%c%c_%02x%02x, xSol = %d, ySol = %d", buf[GT_PROD_ID_1ST], buf[GT_PROD_ID_2ND],
|
||||
buf[GT_PROD_ID_3RD], buf[GT_FW_VER_HIGH], buf[GT_FW_VER_LOW], xSolution, ySolution);
|
||||
HDF_LOGI("Product ID : %c%c%c_%02x%02x, xSol = %d, ySol = %d",
|
||||
buf[GT_PROD_ID_1ST], buf[GT_PROD_ID_2ND], buf[GT_PROD_ID_3RD],
|
||||
buf[GT_FW_VER_HIGH], buf[GT_FW_VER_LOW], xSolution, ySolution);
|
||||
} else {
|
||||
HDF_LOGI("Product_ID: %c%c%c%c_%02x%02x, x_sol = %d, y_sol = %d", buf[GT_PROD_ID_1ST], buf[GT_PROD_ID_2ND],
|
||||
buf[GT_PROD_ID_3RD], buf[GT_PROD_ID_4TH], buf[GT_FW_VER_HIGH], buf[GT_FW_VER_LOW], xSolution, ySolution);
|
||||
HDF_LOGI("Product_ID: %c%c%c%c_%02x%02x, x_sol = %d, y_sol = %d",
|
||||
buf[GT_PROD_ID_1ST], buf[GT_PROD_ID_2ND], buf[GT_PROD_ID_3RD],
|
||||
buf[GT_PROD_ID_4TH], buf[GT_FW_VER_HIGH], buf[GT_FW_VER_LOW],
|
||||
xSolution, ySolution);
|
||||
}
|
||||
|
||||
(void)ChipInit(device);
|
||||
@@ -76,7 +79,8 @@ static int ChipCleanBuffer(InputI2cClient *i2cClient)
|
||||
{
|
||||
int32_t ret;
|
||||
uint8_t writeBuf[GT_CLEAN_DATA_LEN];
|
||||
writeBuf[GT_REG_HIGH_POS] = (GT_BUF_STATE_ADDR >> ONE_BYTE_OFFSET) & ONE_BYTE_MASK;
|
||||
writeBuf[GT_REG_HIGH_POS] =
|
||||
(GT_BUF_STATE_ADDR >> ONE_BYTE_OFFSET) & ONE_BYTE_MASK;
|
||||
writeBuf[GT_REG_LOW_POS] = GT_BUF_STATE_ADDR & ONE_BYTE_MASK;
|
||||
writeBuf[GT_CLEAN_POS] = GT_CLEAN_FLAG;
|
||||
ret = InputI2cWrite(i2cClient, writeBuf, GT_CLEAN_DATA_LEN);
|
||||
@@ -86,9 +90,10 @@ static int ChipCleanBuffer(InputI2cClient *i2cClient)
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define X_OFFSET 1
|
||||
#define X_OFFSET 1
|
||||
|
||||
static void ParsePointData(ChipDevice *device, FrameData *frame, uint8_t *buf, uint8_t pointNum)
|
||||
static void ParsePointData(ChipDevice *device, FrameData *frame, uint8_t *buf,
|
||||
uint8_t pointNum)
|
||||
{
|
||||
int32_t chipVer = device->chipCfg->chipVersion;
|
||||
int32_t resX = device->driver->boardCfg->attr.resolutionX;
|
||||
@@ -96,42 +101,68 @@ static void ParsePointData(ChipDevice *device, FrameData *frame, uint8_t *buf, u
|
||||
int32_t i;
|
||||
|
||||
for (i = 0; i < pointNum; i++) {
|
||||
if (chipVer == 0) { // chipversion A:gt911_zsj5p5
|
||||
if (chipVer == 0) { // chipversion A:gt911_zsj5p5
|
||||
frame->fingers[i].trackId = buf[GT_POINT_SIZE * i + GT_TRACK_ID];
|
||||
#if defined(CONFIG_ARCH_SPRD)
|
||||
frame->fingers[i].y = (resX - 1 - ((buf[GT_POINT_SIZE * i + GT_X_LOW] & ONE_BYTE_MASK) |
|
||||
((buf[GT_POINT_SIZE * i + GT_X_HIGH] & ONE_BYTE_MASK) <<
|
||||
ONE_BYTE_OFFSET))) * resY / resX;
|
||||
frame->fingers[i].x = ((buf[GT_POINT_SIZE * i + GT_Y_LOW] & ONE_BYTE_MASK) |
|
||||
((buf[GT_POINT_SIZE * i + GT_Y_HIGH] & ONE_BYTE_MASK) <<
|
||||
ONE_BYTE_OFFSET)) * resX / resY;
|
||||
frame->fingers[i].y =
|
||||
(resX - 1 -
|
||||
((buf[GT_POINT_SIZE * i + GT_X_LOW] & ONE_BYTE_MASK) |
|
||||
((buf[GT_POINT_SIZE * i + GT_X_HIGH] & ONE_BYTE_MASK)
|
||||
<< ONE_BYTE_OFFSET))) *
|
||||
resY / resX;
|
||||
frame->fingers[i].x =
|
||||
((buf[GT_POINT_SIZE * i + GT_Y_LOW] & ONE_BYTE_MASK) |
|
||||
((buf[GT_POINT_SIZE * i + GT_Y_HIGH] & ONE_BYTE_MASK)
|
||||
<< ONE_BYTE_OFFSET)) *
|
||||
resX / resY;
|
||||
#elif defined(CONFIG_ARCH_ROCKCHIP)
|
||||
frame->fingers[i].x = ((buf[GT_POINT_SIZE * i + GT_X_LOW] & ONE_BYTE_MASK) |
|
||||
((buf[GT_POINT_SIZE * i + GT_X_HIGH] & ONE_BYTE_MASK) << ONE_BYTE_OFFSET));
|
||||
frame->fingers[i].y = ((buf[GT_POINT_SIZE * i + GT_Y_LOW] & ONE_BYTE_MASK) |
|
||||
((buf[GT_POINT_SIZE * i + GT_Y_HIGH] & ONE_BYTE_MASK) << ONE_BYTE_OFFSET));
|
||||
frame->fingers[i].x =
|
||||
((buf[GT_POINT_SIZE * i + GT_X_LOW] & ONE_BYTE_MASK) |
|
||||
((buf[GT_POINT_SIZE * i + GT_X_HIGH] & ONE_BYTE_MASK)
|
||||
<< ONE_BYTE_OFFSET));
|
||||
frame->fingers[i].y =
|
||||
((buf[GT_POINT_SIZE * i + GT_Y_LOW] & ONE_BYTE_MASK) |
|
||||
((buf[GT_POINT_SIZE * i + GT_Y_HIGH] & ONE_BYTE_MASK)
|
||||
<< ONE_BYTE_OFFSET));
|
||||
#else
|
||||
frame->fingers[i].y = (buf[GT_POINT_SIZE * i + GT_X_LOW] & ONE_BYTE_MASK) |
|
||||
((buf[GT_POINT_SIZE * i + GT_X_HIGH] & ONE_BYTE_MASK) << ONE_BYTE_OFFSET);
|
||||
frame->fingers[i].x = (buf[GT_POINT_SIZE * i + GT_Y_LOW] & ONE_BYTE_MASK) |
|
||||
((buf[GT_POINT_SIZE * i + GT_Y_HIGH] & ONE_BYTE_MASK) << ONE_BYTE_OFFSET);
|
||||
frame->fingers[i].y =
|
||||
(buf[GT_POINT_SIZE * i + GT_X_LOW] & ONE_BYTE_MASK) |
|
||||
((buf[GT_POINT_SIZE * i + GT_X_HIGH] & ONE_BYTE_MASK)
|
||||
<< ONE_BYTE_OFFSET);
|
||||
frame->fingers[i].x =
|
||||
(buf[GT_POINT_SIZE * i + GT_Y_LOW] & ONE_BYTE_MASK) |
|
||||
((buf[GT_POINT_SIZE * i + GT_Y_HIGH] & ONE_BYTE_MASK)
|
||||
<< ONE_BYTE_OFFSET);
|
||||
#endif
|
||||
if (frame->fingers[i].x == 0) {
|
||||
frame->fingers[i].x = X_OFFSET;
|
||||
}
|
||||
} else if (chipVer == 1) { // chipversion B:gt911_zsj4p0
|
||||
frame->fingers[i].x = resX - 1 - ((buf[GT_POINT_SIZE * i + GT_X_LOW] & ONE_BYTE_MASK) |
|
||||
((buf[GT_POINT_SIZE * i + GT_X_HIGH] & ONE_BYTE_MASK) << ONE_BYTE_OFFSET));
|
||||
frame->fingers[i].y = resY - 1 - ((buf[GT_POINT_SIZE * i + GT_Y_LOW] & ONE_BYTE_MASK) |
|
||||
((buf[GT_POINT_SIZE * i + GT_Y_HIGH] & ONE_BYTE_MASK) << ONE_BYTE_OFFSET));
|
||||
} else { // chipversion C:gt911_tg7p0
|
||||
frame->fingers[i].x = resX - 1 - ((buf[GT_POINT_SIZE * i + GT_Y_LOW] & ONE_BYTE_MASK) |
|
||||
((buf[GT_POINT_SIZE * i + GT_Y_HIGH] & ONE_BYTE_MASK) << ONE_BYTE_OFFSET));
|
||||
frame->fingers[i].y = resY - 1 - ((buf[GT_POINT_SIZE * i + GT_X_LOW] & ONE_BYTE_MASK) |
|
||||
((buf[GT_POINT_SIZE * i + GT_X_HIGH] & ONE_BYTE_MASK) << ONE_BYTE_OFFSET));
|
||||
} else if (chipVer == 1) { // chipversion B:gt911_zsj4p0
|
||||
frame->fingers[i].x =
|
||||
resX - 1 -
|
||||
((buf[GT_POINT_SIZE * i + GT_X_LOW] & ONE_BYTE_MASK) |
|
||||
((buf[GT_POINT_SIZE * i + GT_X_HIGH] & ONE_BYTE_MASK)
|
||||
<< ONE_BYTE_OFFSET));
|
||||
frame->fingers[i].y =
|
||||
resY - 1 -
|
||||
((buf[GT_POINT_SIZE * i + GT_Y_LOW] & ONE_BYTE_MASK) |
|
||||
((buf[GT_POINT_SIZE * i + GT_Y_HIGH] & ONE_BYTE_MASK)
|
||||
<< ONE_BYTE_OFFSET));
|
||||
} else { // chipversion C:gt911_tg7p0
|
||||
frame->fingers[i].x =
|
||||
resX - 1 -
|
||||
((buf[GT_POINT_SIZE * i + GT_Y_LOW] & ONE_BYTE_MASK) |
|
||||
((buf[GT_POINT_SIZE * i + GT_Y_HIGH] & ONE_BYTE_MASK)
|
||||
<< ONE_BYTE_OFFSET));
|
||||
frame->fingers[i].y =
|
||||
resY - 1 -
|
||||
((buf[GT_POINT_SIZE * i + GT_X_LOW] & ONE_BYTE_MASK) |
|
||||
((buf[GT_POINT_SIZE * i + GT_X_HIGH] & ONE_BYTE_MASK)
|
||||
<< ONE_BYTE_OFFSET));
|
||||
}
|
||||
frame->fingers[i].valid = true;
|
||||
HDF_LOGE("%s: frame->fingers[%d].x = %d,frame->fingers[%d].y = %d", __func__, i,frame->fingers[i].x,i,frame->fingers[i].y);
|
||||
HDF_LOGE("%s: frame->fingers[%d].x = %d,frame->fingers[%d].y = %d",
|
||||
__func__, i, frame->fingers[i].x, i, frame->fingers[i].y);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -149,7 +180,8 @@ static int32_t ChipDataHandle(ChipDevice *device)
|
||||
reg[1] = GT_BUF_STATE_ADDR & ONE_BYTE_MASK;
|
||||
ret = InputI2cRead(i2cClient, reg, GT_ADDR_LEN, &touchStatus, 1);
|
||||
if (ret < 0 || touchStatus == GT_EVENT_INVALID) {
|
||||
HDF_LOGE("InputI2cRead fail || ouchStatus is GT_EVENT_INVALID %s", __func__);
|
||||
HDF_LOGE("InputI2cRead fail || ouchStatus is GT_EVENT_INVALID %s",
|
||||
__func__);
|
||||
return HDF_FAILURE;
|
||||
}
|
||||
|
||||
@@ -172,7 +204,8 @@ static int32_t ChipDataHandle(ChipDevice *device)
|
||||
}
|
||||
frame->realPointNum = pointNum;
|
||||
frame->definedEvent = TOUCH_DOWN;
|
||||
(void)InputI2cRead(i2cClient, reg, GT_ADDR_LEN, buf, GT_POINT_SIZE * pointNum);
|
||||
(void)InputI2cRead(i2cClient, reg, GT_ADDR_LEN, buf,
|
||||
GT_POINT_SIZE * pointNum);
|
||||
ParsePointData(device, frame, buf, pointNum);
|
||||
|
||||
EXIT:
|
||||
@@ -216,26 +249,35 @@ static int32_t UpdateFirmware(ChipDevice *device)
|
||||
|
||||
static void SetAbility(ChipDevice *device)
|
||||
{
|
||||
device->driver->inputDev->abilitySet.devProp[0] = SET_BIT(INPUT_PROP_DIRECT);
|
||||
device->driver->inputDev->abilitySet.eventType[0] = SET_BIT(EV_SYN) |
|
||||
SET_BIT(EV_KEY) | SET_BIT(EV_ABS);
|
||||
device->driver->inputDev->abilitySet.absCode[0] = SET_BIT(ABS_X) | SET_BIT(ABS_Y);
|
||||
device->driver->inputDev->abilitySet.absCode[1] = SET_BIT(ABS_MT_POSITION_X) |
|
||||
SET_BIT(ABS_MT_POSITION_Y) | SET_BIT(ABS_MT_TRACKING_ID);
|
||||
device->driver->inputDev->abilitySet.keyCode[KEY_CODE_4TH] = SET_BIT(KEY_UP) | SET_BIT(KEY_DOWN);
|
||||
device->driver->inputDev->abilitySet.devProp[0] =
|
||||
SET_BIT(INPUT_PROP_DIRECT);
|
||||
device->driver->inputDev->abilitySet.eventType[0] =
|
||||
SET_BIT(EV_SYN) | SET_BIT(EV_KEY) | SET_BIT(EV_ABS);
|
||||
device->driver->inputDev->abilitySet.absCode[0] =
|
||||
SET_BIT(ABS_X) | SET_BIT(ABS_Y);
|
||||
device->driver->inputDev->abilitySet.absCode[1] =
|
||||
SET_BIT(ABS_MT_POSITION_X) | SET_BIT(ABS_MT_POSITION_Y) |
|
||||
SET_BIT(ABS_MT_TRACKING_ID);
|
||||
device->driver->inputDev->abilitySet.keyCode[KEY_CODE_4TH] =
|
||||
SET_BIT(KEY_UP) | SET_BIT(KEY_DOWN);
|
||||
device->driver->inputDev->attrSet.axisInfo[ABS_X].min = 0;
|
||||
device->driver->inputDev->attrSet.axisInfo[ABS_X].max = device->boardCfg->attr.resolutionX - 1;
|
||||
device->driver->inputDev->attrSet.axisInfo[ABS_X].max =
|
||||
device->boardCfg->attr.resolutionX - 1;
|
||||
device->driver->inputDev->attrSet.axisInfo[ABS_X].range = 0;
|
||||
device->driver->inputDev->attrSet.axisInfo[ABS_Y].min = 0;
|
||||
device->driver->inputDev->attrSet.axisInfo[ABS_Y].max = device->boardCfg->attr.resolutionY - 1;
|
||||
device->driver->inputDev->attrSet.axisInfo[ABS_Y].max =
|
||||
device->boardCfg->attr.resolutionY - 1;
|
||||
device->driver->inputDev->attrSet.axisInfo[ABS_Y].range = 0;
|
||||
device->driver->inputDev->attrSet.axisInfo[ABS_MT_POSITION_X].min = 0;
|
||||
device->driver->inputDev->attrSet.axisInfo[ABS_MT_POSITION_X].max = device->boardCfg->attr.resolutionX - 1;
|
||||
device->driver->inputDev->attrSet.axisInfo[ABS_MT_POSITION_X].max =
|
||||
device->boardCfg->attr.resolutionX - 1;
|
||||
device->driver->inputDev->attrSet.axisInfo[ABS_MT_POSITION_X].range = 0;
|
||||
device->driver->inputDev->attrSet.axisInfo[ABS_MT_POSITION_Y].min = 0;
|
||||
device->driver->inputDev->attrSet.axisInfo[ABS_MT_POSITION_Y].max = device->boardCfg->attr.resolutionY - 1;
|
||||
device->driver->inputDev->attrSet.axisInfo[ABS_MT_POSITION_Y].max =
|
||||
device->boardCfg->attr.resolutionY - 1;
|
||||
device->driver->inputDev->attrSet.axisInfo[ABS_MT_POSITION_Y].range = 0;
|
||||
device->driver->inputDev->attrSet.axisInfo[ABS_MT_TRACKING_ID].max = MAX_POINT;
|
||||
device->driver->inputDev->attrSet.axisInfo[ABS_MT_TRACKING_ID].max =
|
||||
MAX_POINT;
|
||||
}
|
||||
|
||||
static struct TouchChipOps g_gt911ChipOps = {
|
||||
|
||||
@@ -10,91 +10,90 @@
|
||||
#define TOUCH_GT911_H
|
||||
|
||||
/* the macro defines of GT911 */
|
||||
#define MAX_SUPPORT_POINT 5
|
||||
#define ONE_BYTE_MASK 0xFF
|
||||
#define ONE_BYTE_OFFSET 8
|
||||
#define GT_EVENT_UP 0x80
|
||||
#define GT_EVENT_INVALID 0
|
||||
#define MAX_SUPPORT_POINT 5
|
||||
#define ONE_BYTE_MASK 0xFF
|
||||
#define ONE_BYTE_OFFSET 8
|
||||
#define GT_EVENT_UP 0x80
|
||||
#define GT_EVENT_INVALID 0
|
||||
|
||||
#define GT_POINT_SIZE 8
|
||||
#define GT_TRACK_ID 0
|
||||
#define GT_X_LOW 1
|
||||
#define GT_X_HIGH 2
|
||||
#define GT_Y_LOW 3
|
||||
#define GT_Y_HIGH 4
|
||||
#define GT_ADDR_LEN 2
|
||||
#define GT_BUF_STATE_ADDR 0x814E
|
||||
#define GT_X_LOW_BYTE_BASE 0x814F
|
||||
#define GT_FINGER_NUM_MASK 0x0F
|
||||
#define GT_CLEAN_DATA_LEN 3
|
||||
#define GT_REG_HIGH_POS 0
|
||||
#define GT_REG_LOW_POS 1
|
||||
#define GT_CLEAN_POS 2
|
||||
#define GT_CLEAN_FLAG 0x0
|
||||
#define GT_POINT_SIZE 8
|
||||
#define GT_TRACK_ID 0
|
||||
#define GT_X_LOW 1
|
||||
#define GT_X_HIGH 2
|
||||
#define GT_Y_LOW 3
|
||||
#define GT_Y_HIGH 4
|
||||
#define GT_ADDR_LEN 2
|
||||
#define GT_BUF_STATE_ADDR 0x814E
|
||||
#define GT_X_LOW_BYTE_BASE 0x814F
|
||||
#define GT_FINGER_NUM_MASK 0x0F
|
||||
#define GT_CLEAN_DATA_LEN 3
|
||||
#define GT_REG_HIGH_POS 0
|
||||
#define GT_REG_LOW_POS 1
|
||||
#define GT_CLEAN_POS 2
|
||||
#define GT_CLEAN_FLAG 0x0
|
||||
/* Config info macro of GT911 */
|
||||
#define GT_CFG_INFO_ADDR 0x8140
|
||||
#define GT_CFG_INFO_LEN 10
|
||||
#define GT_PROD_ID_1ST 0
|
||||
#define GT_PROD_ID_2ND 1
|
||||
#define GT_PROD_ID_3RD 2
|
||||
#define GT_PROD_ID_4TH 3
|
||||
#define GT_FW_VER_LOW 4
|
||||
#define GT_FW_VER_HIGH 5
|
||||
#define GT_SOLU_X_LOW 6
|
||||
#define GT_SOLU_X_HIGH 7
|
||||
#define GT_SOLU_Y_LOW 8
|
||||
#define GT_SOLU_Y_HIGH 9
|
||||
#define FIRMWARE_3RD 2
|
||||
#define KEY_CODE_4TH 3
|
||||
#define GT_CFG_INFO_ADDR 0x8140
|
||||
#define GT_CFG_INFO_LEN 10
|
||||
#define GT_PROD_ID_1ST 0
|
||||
#define GT_PROD_ID_2ND 1
|
||||
#define GT_PROD_ID_3RD 2
|
||||
#define GT_PROD_ID_4TH 3
|
||||
#define GT_FW_VER_LOW 4
|
||||
#define GT_FW_VER_HIGH 5
|
||||
#define GT_SOLU_X_LOW 6
|
||||
#define GT_SOLU_X_HIGH 7
|
||||
#define GT_SOLU_Y_LOW 8
|
||||
#define GT_SOLU_Y_HIGH 9
|
||||
#define FIRMWARE_3RD 2
|
||||
#define KEY_CODE_4TH 3
|
||||
#if defined(CONFIG_ARCH_ROCKCHIP)
|
||||
#define FIRMWARE_LEN 241
|
||||
#define GTP_REG_CONFIG_DATA 0x8050
|
||||
#define FIRMWARE_LEN 241
|
||||
#define GTP_REG_CONFIG_DATA 0x8050
|
||||
#else
|
||||
#define FIRMWARE_LEN 188
|
||||
#define FIRMWARE_LEN 188
|
||||
#endif
|
||||
#if defined(CONFIG_ARCH_ROCKCHIP)
|
||||
uint8_t firmWareParm[FIRMWARE_LEN] = {
|
||||
0x80,0x50,0x64,0xD0,0x02,0x00,0x05,0x05,0x05,0x00,0x01,0x00, /* 0x8050 is reg, GTP_REG_CONFIG_DATA */
|
||||
0x00,0x0F,0x46,0x2D,0x53,0x11,0x00,0x00,0x50,0x11,
|
||||
0x14,0x14,0x14,0x20,0x0A,0x04,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x53,0x00,0x14,0x00,0x00,0x00,0x00,0x00,
|
||||
0x3C,0x00,0x14,0x64,0x1E,0x28,0x8C,0x0C,0x0E,0x37,
|
||||
0x39,0x09,0x06,0x20,0x37,0x20,0x12,0x03,0x24,0x00,
|
||||
0x00,0x19,0x6E,0x80,0x14,0x02,0x00,0x00,0x54,0xB2,
|
||||
0x27,0x84,0x35,0x6A,0x43,0x59,0x51,0x4E,0x5F,0x4E,
|
||||
0x00,0x00,0x00,0x10,0x28,0x48,0x00,0xF0,0x4A,0x3A,
|
||||
0xFF,0xF0,0x27,0x05,0x00,0x00,0x00,0x00,0x00,0x03,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x32,0x20,0x50,0x3C,0x3C,0x00,0x00,0x00,0x00,0x00,
|
||||
0x0D,0x06,0x0C,0x05,0x0B,0x04,0x0A,0x03,0x09,0x02,
|
||||
0x08,0x01,0x07,0x00,0x00,0x01,0x02,0x03,0x04,0x05,
|
||||
0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,
|
||||
0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x3C,0x00,0x05,0x1E,0x00,0x02,
|
||||
0x2A,0x1E,0x19,0x14,0x02,0x00,0x03,0x0A,0x05,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x04,
|
||||
0x22,0x03,0x00,0x00,0x33,0x00,0x0F,0x00,0x00,0x28,
|
||||
0x50,0x3C,0x50,0x00,0x00,0x05,0x5F,0xEB,0x01
|
||||
};
|
||||
0x80, 0x50, 0x64, 0xD0, 0x02, 0x00, 0x05, 0x05, 0x05, 0x00, 0x01,
|
||||
0x00, /* 0x8050 is reg, GTP_REG_CONFIG_DATA */
|
||||
0x00, 0x0F, 0x46, 0x2D, 0x53, 0x11, 0x00, 0x00, 0x50, 0x11, 0x14,
|
||||
0x14, 0x14, 0x20, 0x0A, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x53, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x14,
|
||||
0x64, 0x1E, 0x28, 0x8C, 0x0C, 0x0E, 0x37, 0x39, 0x09, 0x06, 0x20,
|
||||
0x37, 0x20, 0x12, 0x03, 0x24, 0x00, 0x00, 0x19, 0x6E, 0x80, 0x14,
|
||||
0x02, 0x00, 0x00, 0x54, 0xB2, 0x27, 0x84, 0x35, 0x6A, 0x43, 0x59,
|
||||
0x51, 0x4E, 0x5F, 0x4E, 0x00, 0x00, 0x00, 0x10, 0x28, 0x48, 0x00,
|
||||
0xF0, 0x4A, 0x3A, 0xFF, 0xF0, 0x27, 0x05, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32,
|
||||
0x20, 0x50, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x06,
|
||||
0x0C, 0x05, 0x0B, 0x04, 0x0A, 0x03, 0x09, 0x02, 0x08, 0x01, 0x07,
|
||||
0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
|
||||
0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14,
|
||||
0x15, 0x16, 0x17, 0x18, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x05,
|
||||
0x1E, 0x00, 0x02, 0x2A, 0x1E, 0x19, 0x14, 0x02, 0x00, 0x03, 0x0A,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
|
||||
0x04, 0x22, 0x03, 0x00, 0x00, 0x33, 0x00, 0x0F, 0x00, 0x00, 0x28,
|
||||
0x50, 0x3C, 0x50, 0x00, 0x00, 0x05, 0x5F, 0xEB, 0x01};
|
||||
#else
|
||||
uint8_t firmWareParm[FIRMWARE_LEN] = {
|
||||
0x80, 0x47, 0x45, 0xC0, 0x03, 0xE0, 0x01, 0x05, 0x3D, 0x00, 0x01, 0x08, 0x28, 0x0F,
|
||||
0x50, 0x32, 0x03, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1A, 0x1E,
|
||||
0x14, 0x86, 0x26, 0x08, 0x55, 0x57, 0xB2, 0x04, 0x00, 0x00, 0x00, 0x42, 0x02, 0x11,
|
||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x78, 0x94,
|
||||
0xD5, 0x02, 0x07, 0x00, 0x00, 0x04, 0x97, 0x40, 0x00, 0x8A, 0x4A, 0x00, 0x80, 0x55,
|
||||
0x00, 0x77, 0x61, 0x00, 0x6F, 0x70, 0x00, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x0E, 0x0C, 0x0A, 0x08, 0x06, 0x04, 0x02, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x22, 0x21, 0x20, 0x1F, 0x1E, 0x1D, 0x00, 0x02, 0x04, 0x06,
|
||||
0x08, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x5C, 0x01
|
||||
};
|
||||
0x80, 0x47, 0x45, 0xC0, 0x03, 0xE0, 0x01, 0x05, 0x3D, 0x00, 0x01, 0x08,
|
||||
0x28, 0x0F, 0x50, 0x32, 0x03, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x18, 0x1A, 0x1E, 0x14, 0x86, 0x26, 0x08, 0x55, 0x57, 0xB2, 0x04,
|
||||
0x00, 0x00, 0x00, 0x42, 0x02, 0x11, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x78, 0x94, 0xD5, 0x02, 0x07, 0x00,
|
||||
0x00, 0x04, 0x97, 0x40, 0x00, 0x8A, 0x4A, 0x00, 0x80, 0x55, 0x00, 0x77,
|
||||
0x61, 0x00, 0x6F, 0x70, 0x00, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x0E, 0x0C, 0x0A, 0x08, 0x06,
|
||||
0x04, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x22, 0x21, 0x20, 0x1F, 0x1E, 0x1D, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x01};
|
||||
#endif
|
||||
#endif
|
||||
@@ -27,7 +27,6 @@ ohos_prebuilt_etc("init.rk3566.usb.cfg") {
|
||||
install_enable = true
|
||||
}
|
||||
|
||||
|
||||
ohos_prebuilt_etc("fstab.rk3566") {
|
||||
source = "fstab.rk3566"
|
||||
part_name = "kaihong_products"
|
||||
@@ -35,7 +34,6 @@ ohos_prebuilt_etc("fstab.rk3566") {
|
||||
install_enable = true
|
||||
}
|
||||
|
||||
|
||||
group("init_configs") {
|
||||
deps = [
|
||||
":fstab.rk3566",
|
||||
|
||||
Reference in New Issue
Block a user