[1]RAM跑什么频率
cat /sys/kernel/debug/clk/bimc_clk/measure
[2]
root@c1_dcg:/sys/class/leds/lcd-backlight # cat brightness
cat brightness
[3]root@c1_dcg:/ # cat proc/kmsg
[4]monkey --ignore-crashes --ignore-timeouts --kill-process-after-error --ignore-security-exceptions --throttle 1500 -v -v -v -s 5 60000000
[5]中断唤醒:
在终端输入下列命令:
# echo 1 > /sys/module/msm_show_resume_irq/parameters/debug_mask
[6]三十万前摄卡死,发现是mipi振幅太小,导致驱动能力不足,通过调整gc0339_lib.c的0x6a寄存器的振幅值与preview.h中的ae值改善
[7]
GPB1,即定时器1.
定时器的输入频率 = PCLK /{prescaler value + 1} / {divider value}。
[8]
蓝牙鼠标在Setting界面边缘地带显示异常
此问题是高通平台问题,原因是SurfaceFlinger图层合成有问题
Region::const_iterator head = layer->visibleRegion.begin();
Region::const_iterator tail = layer->visibleRegion.end();
while (head != tail) {
if (head->left <0 || head->top <0 || head->right >= hw->getWidth() |
| head->bottom >= hw->getHeight() )
{
cur->setSkip(true);
break;
}
head++;
}
SurfaceFlinger参考:
http://blog.csdn.net/luoshengyang/article/details/8079456
[9]
diff --git a/drivers/media/platform/msm/camera_v2/sensor/msm_sensor.c b/drivers/media/platform/msm/camera_v2/sensor/msm_sensor.c
index 0143a81..6bafaf2 100755
--- a/drivers/media/platform/msm/camera_v2/sensor/msm_sensor.c
+++ b/drivers/media/platform/msm/camera_v2/sensor/msm_sensor.c
@@ -1125,6 +1125,70 @@ static struct msm_camera_i2c_fn_t msm_sensor_qup_func_tbl = {
.i2c_write_conf_tbl = msm_camera_qup_i2c_write_conf_tbl,
};
+
+/* add sensor info
+*/
+static struct kobject *msm_sensor_device;
+static char module_info[80] = {0};
+
+static void msm_sensor_set_module_info(struct msm_sensor_ctrl_t *s_ctrl)
+{
+ printk("s_ctrl->sensordata->camera_type = %d\n", s_ctrl->sensordata->sensor_info->position);
+ switch (s_ctrl->sensordata->sensor_info->position) {
+ case BACK_CAMERA_B:
+ strcat(module_info, "back: ");
+ break;
+ case FRONT_CAMERA_B:
+ strcat(module_info, "front: ");
+ break;
+ default:
+ strcat(module_info, "unknown: ");
+ break;
+ }
+
+ strcat(module_info, s_ctrl->sensordata->sensor_name);
+ strcat(module_info, "\n");
+}
+
+static ssize_t msm_sensor_module_id_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ ssize_t rc = 0;
+
+ sprintf(buf, "%s\n", module_info);
+ rc = strlen(buf) + 1;
+
+ return rc;
+}
+
+static DEVICE_ATTR(sensor, 0444, msm_sensor_module_id_show, NULL);
+
+static int32_t msm_sensor_init_device_name(void)
+{
+ int32_t rc = 0;
+
+ msm_sensor_device = kobject_create_and_add("android_camera", NULL);
+ if (msm_sensor_device == NULL) {
+ pr_info("%s: subsystem_register failed\n", __func__);
+ rc = -ENOMEM;
+ return rc ;
+ }
+ rc = sysfs_create_file(msm_sensor_device, &dev_attr_sensor.attr);
+ if (rc) {
+ pr_info("%s: sysfs_create_file failed\n", __func__);
+ kobject_del(msm_sensor_device);
+ }
+
+ return 0 ;
+}
+/* add sensor info
+*/
+
+
int32_t msm_sensor_platform_probe(struct platform_device *pdev, void *data)
{
int rc = 0;
@@ -1214,6 +1278,9 @@ int32_t msm_sensor_platform_probe(struct platform_device *pdev, void *data)
msm_sd_register(&s_ctrl->msm_sd);
CDBG("%s:%d\n", __func__, __LINE__);
+ msm_sensor_init_device_name();
+ msm_sensor_set_module_info(s_ctrl);
+
s_ctrl->func_tbl->sensor_power_down(s_ctrl);
CDBG("%s:%d\n", __func__, __LINE__);
return rc;
[10]monkey测试过程中遇到手机切到download模式的情况。从dump内核log看发生了data abort
日志里面有很多用户态的错误,一般这个不会导致重启。
重启原因是:
<3>[223906.016015] ion_sg_table: invalid handle passed to map_dma.
<4>[223906.020751] ------------[ cut here ]------------
<4>[223906.025369] WARNING: at /home/ubuntu/jenkins/jenkins/workspace/Build-W5256HTC-EU-8610-ARM11/label/SCM_glsrv4_Lin/kernel/drivers/gpu/ion/msm/ion_iommu_map.c:522 ion_unmap_iommu+0x12c/0x1ac()
<6>[223906.042347] ion_unmap_iommu: (5,0) was never mapped for 000bdd83
<6>[223906.042366] Modules linked in: [last unloaded: wlan]
<6>[223906.042424] [<c010cc94>] (unwind_backtrace+0x0/0x138) from [<c018b6a8>] (warn_slowpath_common+0x4c/0x64)
<6>[223906.042461] [<c018b6a8>] (warn_slowpath_common+0x4c/0x64) from [<c018b754>] (warn_slowpath_fmt+0x30/0x40)
<6>[223906.042498] [<c018b754>] (warn_slowpath_fmt+0x30/0x40) from [<c0478b60>] (ion_unmap_iommu+0x12c/0x1ac)
<6>[223906.042543] [<c0478b60>] (ion_unmap_iommu+0x12c/0x1ac) from [<c05c96fc>] (msm_isp_buf_unprepare+0xc8/0x120)
<6>[223906.042584] [<c05c96fc>] (msm_isp_buf_unprepare+0xc8/0x120) from [<c05c97a4>] (msm_isp_release_bufq+0x50/0x70)
<6>[223906.042622] [<c05c97a4>] (msm_isp_release_bufq+0x50/0x70) from [<c05ca290>] (msm_isp_proc_buf_cmd+0x7c/0x84)
<6>[223906.042662] [<c05ca290>] (msm_isp_proc_buf_cmd+0x7c/0x84) from [<c05cc0e0>] (msm_isp_ioctl+0x9c/0x354)
<6>[223906.042701] [<c05cc0e0>] (msm_isp_ioctl+0x9c/0x354) from [<c05e9a7c>] (subdev_do_ioctl+0x144/0x558)
<6>[223906.042741] [<c05e9a7c>] (subdev_do_ioctl+0x144/0x558) from [<c05dee78>] (video_usercopy+0x148/0x57c)
<6>[223906.042779] [<c05dee78>] (video_usercopy+0x148/0x57c) from [<c05de168>] (v4l2_ioctl+0x94/0x138)
<6>[223906.042817] [<c05de168>] (v4l2_ioctl+0x94/0x138) from [<c026ed48>] (do_vfs_ioctl+0x84/0x5ac)
<6>[223906.042852] [<c026ed48>] (do_vfs_ioctl+0x84/0x5ac) from [<c026f2dc>] (sys_ioctl+0x6c/0x7c)
<6>[223906.042887] [<c026f2dc>] (sys_ioctl+0x6c/0x7c) from [<c0106720>] (ret_fast_syscall+0x0/0x30)
<4>[223906.042910] ---[ end trace c716865583a4b41b ]---
<1>[223906.047027] Unable to handle kernel paging request at virtual address 000bdd87
<1>[223906.054252] pgd = f2f4c000
<1>[223906.057082] [000bdd87] *pgd=00000000
<0>[223906.060681] Internal error: Oops: 5 [#1] PREEMPT SMP ARM
<6>[223906.066062] Modules linked in: [last unloaded: wlan]
<6>[223906.071099] CPU: 2 Tainted: G W O (3.4.0-g80ec9c8-01181-g969bc63-dirty #1)
<6>[223906.079089] PC is at ion_free+0x8/0xac
<6>[223906.082907] LR is at msm_isp_buf_unprepare+0xd8/0x120
这个看上去和显示有关
[11]
貌似是CPU接屏ID的管脚被屏损坏了。发现屏的这个ID脚在屏上是直接接到VDDIO上,没有串联电阻,我们主板上对应的GPIO口也没有串入限流的电阻。所以,高度怀疑是这个GPIO口在被直接接到电源VDDIO后造成损坏。
[12]
在Pre-CS2.1.21.3基线,YUV模组显示黑屏,RAW显示正常。
sensor.c,isp_stats.h,isp_hw.c,cpp_module.c
D/QCamera2HWI( 206): int qcamera::QCamera2HardwareInterface::startPreview(): X
D/QCamera2HWI( 206): [KPI Perf] static int qcamera::QCamera2HardwareInterface::start_preview(camera_device*): X
E/QCameraParameters( 206): [KPI Perf] int32_t qcamera::QCameraParameters::setFaceDetection(bool): PROFILE_FACE_DETECTION_VALUE = 1 num_fd = 5
D/QCameraParameters( 206): int32_t qcamera::QCameraParameters::initBatchUpdate(void*):Initializing batch parameter set
D/QCameraParameters( 206): int32_t qcamera::QCameraParameters::AddSetParmEntryToBatch(void*, cam_intf_parm_type_t, uint32_t, void*): num_entry: 1, paramType: 30, paramLength: 8, aligned_size_req: 24
E/mm-camera( 225): mct_pipeline_process_set:command=800000e
E/mm-camera( 225): mct_pipeline_send_ctrl_events: Send Set Parm events
D/QCameraParameters( 206): int32_t qcamera::QCameraParameters::commitSetBatch():waiting for commitSetBatch to complete
D/QCameraParameters( 206): int32_t qcamera::QCameraParameters::setFaceDetection(bool): FaceProcMask -> 1
D/Camera ( 2281): app passed NULL surface
I/CameraClient( 206): stopPreview: Disable picture related messages
E/QCamera2HWI( 206): [KPI Perf] static void qcamera::QCamera2HardwareInterface::stop_preview(camera_device*): E PROFILE_STOP_PREVIEW
D/QCamera2HWI( 206): int qcamera::QCamera2HardwareInterface::stopPreview(): E
Via above log:
the walkflow is :
start_preview->QCameraParameters::setFaceDetection-> initBatchUpdate-> AddSetParmEntryToBatch ->D/Camera ( 2281): app passed NULL surface
It seems that the is a Null surface passed from upper layer.
In normal preview, the log: "app passed Null surface doesn't appear".
catch yuv data.
static void isp_ch_util_dump_frame(int ion_fd, mct_stream_info_t *stream_info,
isp_frame_buffer_t *image_buf, uint32_t frame_idx)
{
...
CDBG("%s:frame_idx %d enabled %d streamtype %d width %d height %d",....
property_get("persist.camera.isp.dump", value, "0");
enabled = atoi(value);
if(!enabled){
sDumpFrmCnt = 0;
return;
}
if(sDumpFrmCnt >= 0 && sDumpFrmCnt <= frm_num) {
...
"/data/isp_dump_%d_preview_%d_%d.yuv"
// "/data/isp_dump_%d_video_%d_%d.yuv"
"/data/isp_dump_%d_postview_%d_%d.yuv"
"/data/isp_dump_%d_snapshot_%d_%d.yuv"
the yuv data will be saved in /data/
please try to use below cmd and upload yuv data.
adb shell setprop persist.camera.isp.dump 1
adb shell setprop persist.camera.isp.dump 1
取出preview, postview, snapshot的yuv data.
setprop persist.camera.isp.dump 1
diff --git a/QCamera2/HAL/QCamera2HWICallbacks.cpp b/QCamera2/HAL/QCamera2HWICallbacks.cpp
index 6b40ec3..a3f1614 100644 --- a/ QCamera2/HAL/QCamera2HWICallbacks.cpp +++ b/ QCamera2/HAL/QCamera2HWICallbacks.cpp
@@ -1430,8 +1430,11 @@ void QCamera2HardwareInterface::dumpFrameToFile(QCameraStream *stream,
case QCAMERA_DUMP_FRM_SNAPSHOT:
{
mParameters.getStreamDimension(CAM_STREAM_TYPE_SNAPSHOT, dim);
- snprintf(buf, sizeof(buf), "/data/%ds_%dx%d_%d.yuv",
- mDumpFrmCnt, dim.width, dim.height, frame->frame_idx);
+ snprintf(buf, sizeof(buf), "%ds_%dx%d_%d.yuv",
+ mDumpFrmCnt,
+ dim.width,
+ dim.height,
+ frame->frame_idx);
}
break;
case QCAMERA_DUMP_FRM_VIDEO:
@@ -1443,15 +1446,21 @@ void QCamera2HardwareInterface::dumpFrameToFile(QCameraStream *stream,
case QCAMERA_DUMP_FRM_RAW:
{
mParameters.getStreamDimension(CAM_STREAM_TYPE_RAW, dim);
- snprintf(buf, sizeof(buf), "/data/%dr_%dx%d_%d.yuv",
- mDumpFrmCnt, dim.width, dim.height, frame->frame_idx);
+ snprintf(buf, sizeof(buf), "%dr_%dx%d_%d.raw",
+ mDumpFrmCnt,
+ dim.width,
+ dim.height,
+ frame->frame_idx);
}
break;
case QCAMERA_DUMP_FRM_JPEG:
{
mParameters.getStreamDimension(CAM_STREAM_TYPE_SNAPSHOT, dim);
- snprintf(buf, sizeof(buf), "/data/%dj_%dx%d_%d.yuv",
- mDumpFrmCnt, dim.width, dim.height, frame->frame_idx);
+ snprintf(buf, sizeof(buf), "%dj_%dx%d_%d.yuv",
+ mDumpFrmCnt,
+ dim.width,
+ dim.height,
+ frame->frame_idx);
}
break;
default:
|
root@msm8226:/data # ls |grep isp
ls |grep isp
isp_dump_64_preview_640_480.yuv
isp_dump_65_preview_640_480.yuv
isp_dump_66_preview_640_480.yuv
isp_dump_67_preview_640_480.yuv
isp_dump_68_preview_640_480.yuv
isp_dump_69_preview_640_480.yuv
isp_dump_70_preview_640_480.yuv
isp_dump_71_preview_640_480.yuv
isp_dump_72_preview_640_480.yuv
isp_dump_73_preview_640_480.yuv
isp_dump_74_preview_640_480.yuv
[13]
<3>[ 653.808032] mmc1: data txfr (0x00200000) error: -84 after 16 ms
<6>[ 653.808039] sdhci: =========== REGISTER DUMP (mmc1)===========
<6>[ 653.808049] sdhci: Sys addr: 0x00000000 | Version: 0x00003a02
<6>[ 653.808060] sdhci: Blk size: 0x00007200 | Blk cnt: 0x00000001
<6>[ 653.808070] sdhci: Argument: 0x00504590 | Trn mode: 0x00000003
<6>[ 653.808080] sdhci: Present: 0x03e80100 | Host ctl: 0x00000017
<6>[ 653.808090] sdhci: Power: 0x0000000f | Blk gap: 0x00000000
<6>[ 653.808101] sdhci: Wake-up: 0x00000000 | Clock: 0x00000007
<6>[ 653.808111] sdhci: Timeout: 0x0000000f | Int stat: 0x00000000
<6>[ 653.808122] sdhci: Int enab: 0x03ff800b | Sig enab: 0x03ff800b
<6>[ 653.808130] sdhci: AC12 err: 0x00000000 | Slot int: 0x00000000
<6>[ 653.808141] sdhci: Caps: 0x2329c8b2 | Caps_1: 0x00008007
<6>[ 653.808151] sdhci: Cmd: 0x0000183a | Max curr: 0x00000000
<6>[ 653.808161] sdhci: Resp 1: 0x00000000 | Resp 0: 0x00000900
<6>[ 653.808171] sdhci: Resp 3: 0x00000000 | Resp 2: 0x00000000
<6>[ 653.808178] sdhci: Host ctl2: 0x0000000b
<6>[ 653.808187] sdhci: ADMA Err: 0x00000000 | ADMA Ptr: 0x33b60010
<6>[ 653.808196] mmc1: clk: 200000000 clk-gated: 0 claimer: mmcqd/1 pwr: 14
<6>[ 653.808203] mmc1: rpmstatus[pltfm](runtime-suspend:usage_count:disable_depth)(0:0:0)
<6>[ 653.808209] sdhci: ===========================================
Patch for T card tx error.
Change-Id: I4be8a30fbee0b6c06666f6d48d70a622f01d7d82
diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
index 743668b..e36a2cf 100755
--- a/drivers/mmc/card/block.c
+++ b/drivers/mmc/card/block.c
@@ -2326,8 +2326,11 @@ static int mmc_blk_cmd_err(struct mmc_blk_data *md, struct mmc_card *card,
u32 blocks;
if (!brq->data.fault_injected) {
blocks = mmc_sd_num_wr_blocks(card);
- if (blocks != (u32)-1)
+ if (blocks != (u32)-1) {
+ if (blocks << 9 == blk_rq_bytes(req))
+ pr_err("%s: buggy SD card\n", __func__);
ret = blk_end_request(req, 0, blocks << 9);
+ }
} else
ret = blk_end_request(req, 0, brq->data.bytes_xfered);
} else {
@@ -2488,29 +2491,61 @@ static int mmc_blk_issue_rw_rq(struct mmc_queue *mq, struct request *rqc)
rqc = NULL;
goto cmd_abort;
}
+ if (ret)
+ pr_warning("%s: %s: command partially completed\n",
+ mmc_hostname(card->host), __func__);
break;
case MMC_BLK_CMD_ERR:
ret = mmc_blk_cmd_err(md, card, brq, req, ret);
- if (!mmc_blk_reset(md, card->host, type))
+ if (!mmc_blk_reset(md, card->host, type)) {
+ if (!ret) {
+ BUG_ON(card->host->areq);
+ pr_err("%s: invalid scenario for MMC_BLK_CMD_ERR, xfered %d, req %p\n",
+ __func__,
+ brq->data.bytes_xfered,
+ req);
+ goto start_new_req;
+ }
+ pr_err("%s: %s: reset success, retry prev command\n",
+ mmc_hostname(card->host), __func__);
break;
+ }
+ pr_err("%s: %s: reset failed, aborting command\n",
+ mmc_hostname(card->host), __func__);
goto cmd_abort;
case MMC_BLK_RETRY:
- if (retry++ < 5)
+ if (retry++ < 5) {
+ pr_err("%s: %s: MMC_BLK_RETRY, cnt %d, ret %d\n",
+ mmc_hostname(card->host),
+ __func__, retry, ret);
break;
+ }
/* Fall through */
case MMC_BLK_ABORT:
- if (!mmc_blk_reset(md, card->host, type))
+ if (!mmc_blk_reset(md, card->host, type)) {
+ pr_err("%s: %s: reset success during abort, ret %d\n",
+ mmc_hostname(card->host),
+ __func__, ret);
break;
+ }
+ pr_err("%s: %s: reset failed during abort, aborting command\n",
+ mmc_hostname(card->host), __func__);
goto cmd_abort;
case MMC_BLK_DATA_ERR: {
int err;
err = mmc_blk_reset(md, card->host, type);
- if (!err)
+ if (!err) {
+ pr_err("%s: %s: reset success, during data err ret %d\n",
+ mmc_hostname(card->host),
+ __func__, ret);
break;
+ }
if (err == -ENODEV ||
mq_rq->packed_cmd != MMC_PACKED_NONE)
goto cmd_abort;
+ pr_err("%s: %s: reset failed, during data err fall through\n",
+ mmc_hostname(card->host), __func__);
/* Fall through */
}
case MMC_BLK_ECC_ERR:
@@ -2528,10 +2563,16 @@ static int mmc_blk_issue_rw_rq(struct mmc_queue *mq, struct request *rqc)
*/
ret = blk_end_request(req, -EIO,
brq->data.blksz);
+ pr_err("%s: %s: reset failed for ecc err, ret %d\n",
+ mmc_hostname(card->host),
+ __func__, ret);
+
if (!ret)
goto start_new_req;
break;
case MMC_BLK_NOMEDIUM:
+ pr_err("%s: %s: no medium, aborting command\n",
+ mmc_hostname(card->host), __func__);
goto cmd_abort;
default:
pr_err("%s:%s: Unhandled return value (%d)",
diff --git a/drivers/mmc/card/queue.c b/drivers/mmc/card/queue.c
index 8986829..637c467 100755
--- a/drivers/mmc/card/queue.c
+++ b/drivers/mmc/card/queue.c
@@ -30,6 +30,9 @@
*/
#define DEFAULT_NUM_REQS_TO_START_PACK 17
+struct mmc_queue *tsr_mq;
+struct mmc_card *tsr_card;
+
/*
* Prepare a MMC request. This just filters out odd stuff.
*/
@@ -61,6 +64,11 @@ static int mmc_queue_thread(void *d)
current->flags |= PF_MEMALLOC;
+ if (mmc_card_sd(card)) {
+ tsr_mq = mq;
+ tsr_card = card;
+ }
+
down(&mq->thread_sem);
do {
struct mmc_queue_req *tmp;
@@ -94,6 +102,18 @@ static int mmc_queue_thread(void *d)
* Current request becomes previous request
* and vice versa.
*/
+ if (mmc_card_sd(card) && mq->mqrq_prev->req) {
+ int in_flight = 0;
+ in_flight = q->in_flight[0] +
+ q->in_flight[1];
+ if (in_flight >= 2) {
+ pr_err("TSR %s: in_flight %d\n", __func__, in_flight);
+ BUG_ON(1);
+ } else if (in_flight == 1 && !mq->mqrq_cur->req) {
+ pr_err("TSR %s: in_flight %d\n", __func__, in_flight);
+ BUG_ON(1);
+ }
+ }
mq->mqrq_prev->brq.mrq.data = NULL;
mq->mqrq_prev->req = NULL;
tmp = mq->mqrq_prev;
[15]
[16]
屏无法唤醒
1、DDR部分原理图和LAYOUT检查,确认没有问题。
2、CPU和memory部分电压和时钟做了测量,没有看到有异常
3、换了一颗hynix的memory,故障现象没有消失
4、换了一颗CPU,刚开始开机正常,跑了10几分钟DDR测试工具死机。再开机再跑几十秒就死了,再后来开不了机了。重新对CPU加焊了下,目前开关机10几次正常,正准备再次跑DDR测试。
[17]
[18]尝试修改内存信号---调试
diff --git a/boot_images/core/boot/ddr/hw/msm8x10/ddr_config.c b/boot_images/core/boot/ddr/hw/msm8x10/ddr_config.c
index 7e9005f..105c957 100644
--- a/boot_images/core/boot/ddr/hw/msm8x10/ddr_config.c
+++ b/boot_images/core/boot/ddr/hw/msm8x10/ddr_config.c
@@ -172,7 +172,7 @@ uint32 ddr_dqphy_config_MSM8x10[][2] =
{HWIO_ADDR(PHY_DQ_ADDR(RD_CDC_SW_OVRD_CFG)), 0x00000},
{HWIO_ADDR(PHY_DQ_ADDR(TOP_CFG)), 0x00000031},
{HWIO_ADDR(PHY_DQ_ADDR(WR_CDC_DELAY_CFG)), 0x0000758},
- {HWIO_ADDR(PHY_DQ_ADDR(WR_CDC_OFFSET_CFG)), 0x000000},
+ {HWIO_ADDR(PHY_DQ_ADDR(WR_CDC_OFFSET_CFG)), 0x000086},
{HWIO_ADDR(PHY_DQ_ADDR(WR_CDC_SW_OVRD_CFG)), 0x00000},
{0x0, 0x0}
};
[patch]add DDR fault tolerant ability
diff --git a/boot_images/core/boot/ddr/hw/msm8x10/ddr_config.c b/boot_images/core/boot/ddr/hw/msm8x10/ddr_config.c
index cb95d40..7e9005f 100644
--- a/boot_images/core/boot/ddr/hw/msm8x10/ddr_config.c
+++ b/boot_images/core/boot/ddr/hw/msm8x10/ddr_config.c
@@ -143,8 +143,8 @@ uint32 ddr_caphy_config_MSM8x10[][2] =
{HWIO_ADDR(PHY_CA_ADDR(IOC_CTLR_CHAR_CFG)), 0x00000000},
{HWIO_ADDR(PHY_CA_ADDR(IOC_CTLR_PNCNT_CFG)), 0x00001010},
{HWIO_ADDR(PHY_CA_ADDR(IOC_CTLR_TIMER_CFG)), 0xFA000020},
- {HWIO_ADDR(PHY_CA_ADDR(PAD_CFG0)), 0x20222240},
- {HWIO_ADDR(PHY_CA_ADDR(PAD_CFG1)), 0x20220440},
+ {HWIO_ADDR(PHY_CA_ADDR(PAD_CFG0)), 0x202222C0},
+ {HWIO_ADDR(PHY_CA_ADDR(PAD_CFG1)), 0x202204C0},
{HWIO_ADDR(PHY_CA_ADDR(PAD_CFG2)), 0x10000000},
{HWIO_ADDR(PHY_CA_ADDR(PAD_CFG3)), 0x313003FF},
{HWIO_ADDR(PHY_CA_ADDR(PAD_CFG4)), 0x303003FF},
@@ -161,11 +161,11 @@ uint32 ddr_dqphy_config_MSM8x10[][2] =
{HWIO_ADDR(PHY_DQ_ADDR(DQS_IOC_SLV_CFG)), 0x80000000},
{HWIO_ADDR(PHY_DQ_ADDR(DQ_IOC_SLV_CFG)), 0x80000000},
{HWIO_ADDR(PHY_DQ_ADDR(DQ_SMT_STATUS)), 0x00000000},
- {HWIO_ADDR(PHY_DQ_ADDR(PAD_CFG0)), 0xA0222240},
- {HWIO_ADDR(PHY_DQ_ADDR(PAD_CFG1)), 0xA0222240},
+ {HWIO_ADDR(PHY_DQ_ADDR(PAD_CFG0)), 0xA02222C0},
+ {HWIO_ADDR(PHY_DQ_ADDR(PAD_CFG1)), 0xA02222C0},
{HWIO_ADDR(PHY_DQ_ADDR(PAD_CFG2)), 0x10000000},
{HWIO_ADDR(PHY_DQ_ADDR(PAD_CFG3)), 0x1000FF11},
- {HWIO_ADDR(PHY_DQ_ADDR(PAD_CFG4)), 0x20222240},
+ {HWIO_ADDR(PHY_DQ_ADDR(PAD_CFG4)), 0x202222C0},
{HWIO_ADDR(PHY_DQ_ADDR(RD_CDC_DELAY_CFG)), 0x00003AC},
{HWIO_ADDR(PHY_DQ_ADDR(RD_CDC_OFFSET_CFG)), 0x000000},
{HWIO_ADDR(PHY_DQ_ADDR(RD_CDC_SLAVE_DDA_CFG)), 0x16334},