Lines Matching refs:param

614 static bool finetuneDQI_L(struct ast_private *ast, struct ast2300_dram_param *param)
803 static bool cbr_dll2(struct ast_private *ast, struct ast2300_dram_param *param)
809 if (finetuneDQI_L(ast, param) == false)
859 static void get_ddr3_info(struct ast_private *ast, struct ast2300_dram_param *param)
872 param->reg_MADJ = 0x00034C4C;
873 param->reg_SADJ = 0x00001800;
874 param->reg_DRV = 0x000000F0;
875 param->reg_PERIOD = param->dram_freq;
876 param->rodt = 0;
878 switch (param->dram_freq) {
881 param->wodt = 0;
882 param->reg_AC1 = 0x22202725;
883 param->reg_AC2 = 0xAA007613 | trap_AC2;
884 param->reg_DQSIC = 0x000000BA;
885 param->reg_MRS = 0x04001400 | trap_MRS;
886 param->reg_EMRS = 0x00000000;
887 param->reg_IOZ = 0x00000023;
888 param->reg_DQIDLY = 0x00000074;
889 param->reg_FREQ = 0x00004DC0;
890 param->madj_max = 96;
891 param->dll2_finetune_step = 3;
892 switch (param->dram_chipid) {
896 param->reg_AC2 = 0xAA007613 | trap_AC2;
899 param->reg_AC2 = 0xAA00761C | trap_AC2;
902 param->reg_AC2 = 0xAA007636 | trap_AC2;
909 param->wodt = 1;
910 param->reg_AC1 = 0x33302825;
911 param->reg_AC2 = 0xCC009617 | trap_AC2;
912 param->reg_DQSIC = 0x000000E2;
913 param->reg_MRS = 0x04001600 | trap_MRS;
914 param->reg_EMRS = 0x00000000;
915 param->reg_IOZ = 0x00000034;
916 param->reg_DRV = 0x000000FA;
917 param->reg_DQIDLY = 0x00000089;
918 param->reg_FREQ = 0x00005040;
919 param->madj_max = 96;
920 param->dll2_finetune_step = 4;
922 switch (param->dram_chipid) {
926 param->reg_AC2 = 0xCC009617 | trap_AC2;
929 param->reg_AC2 = 0xCC009622 | trap_AC2;
932 param->reg_AC2 = 0xCC00963F | trap_AC2;
939 param->wodt = 1;
940 param->reg_AC1 = 0x33302825;
941 param->reg_AC2 = 0xCC009617 | trap_AC2;
942 param->reg_DQSIC = 0x000000E2;
943 param->reg_MRS = 0x04001600 | trap_MRS;
944 param->reg_EMRS = 0x00000000;
945 param->reg_IOZ = 0x00000023;
946 param->reg_DRV = 0x000000FA;
947 param->reg_DQIDLY = 0x00000089;
948 param->reg_FREQ = 0x000050C0;
949 param->madj_max = 96;
950 param->dll2_finetune_step = 4;
952 switch (param->dram_chipid) {
956 param->reg_AC2 = 0xCC009617 | trap_AC2;
959 param->reg_AC2 = 0xCC009622 | trap_AC2;
962 param->reg_AC2 = 0xCC00963F | trap_AC2;
969 param->wodt = 0;
970 param->reg_AC1 = 0x33302926;
971 param->reg_AC2 = 0xCD44961A;
972 param->reg_DQSIC = 0x000000FC;
973 param->reg_MRS = 0x00081830;
974 param->reg_EMRS = 0x00000000;
975 param->reg_IOZ = 0x00000045;
976 param->reg_DQIDLY = 0x00000097;
977 param->reg_FREQ = 0x000052C0;
978 param->madj_max = 88;
979 param->dll2_finetune_step = 4;
983 param->wodt = 1;
984 param->reg_AC1 = 0x33302926;
985 param->reg_AC2 = 0xDE44A61D;
986 param->reg_DQSIC = 0x00000117;
987 param->reg_MRS = 0x00081A30;
988 param->reg_EMRS = 0x00000000;
989 param->reg_IOZ = 0x070000BB;
990 param->reg_DQIDLY = 0x000000A0;
991 param->reg_FREQ = 0x000054C0;
992 param->madj_max = 79;
993 param->dll2_finetune_step = 4;
997 param->wodt = 1;
998 param->rodt = 1;
999 param->reg_AC1 = 0x33302926;
1000 param->reg_AC2 = 0xEF44B61E;
1001 param->reg_DQSIC = 0x00000125;
1002 param->reg_MRS = 0x00081A30;
1003 param->reg_EMRS = 0x00000040;
1004 param->reg_DRV = 0x000000F5;
1005 param->reg_IOZ = 0x00000023;
1006 param->reg_DQIDLY = 0x00000088;
1007 param->reg_FREQ = 0x000055C0;
1008 param->madj_max = 76;
1009 param->dll2_finetune_step = 3;
1013 param->reg_MADJ = 0x00136868;
1014 param->reg_SADJ = 0x00004534;
1015 param->wodt = 1;
1016 param->rodt = 1;
1017 param->reg_AC1 = 0x33302A37;
1018 param->reg_AC2 = 0xEF56B61E;
1019 param->reg_DQSIC = 0x0000013F;
1020 param->reg_MRS = 0x00101A50;
1021 param->reg_EMRS = 0x00000040;
1022 param->reg_DRV = 0x000000FA;
1023 param->reg_IOZ = 0x00000023;
1024 param->reg_DQIDLY = 0x00000078;
1025 param->reg_FREQ = 0x000057C0;
1026 param->madj_max = 136;
1027 param->dll2_finetune_step = 3;
1031 param->reg_MADJ = 0x00136868;
1032 param->reg_SADJ = 0x00004534;
1033 param->wodt = 1;
1034 param->rodt = 1;
1035 param->reg_AC1 = 0x32302A37;
1036 param->reg_AC2 = 0xDF56B61F;
1037 param->reg_DQSIC = 0x0000014D;
1038 param->reg_MRS = 0x00101A50;
1039 param->reg_EMRS = 0x00000004;
1040 param->reg_DRV = 0x000000F5;
1041 param->reg_IOZ = 0x00000023;
1042 param->reg_DQIDLY = 0x00000078;
1043 param->reg_FREQ = 0x000058C0;
1044 param->madj_max = 132;
1045 param->dll2_finetune_step = 3;
1049 param->reg_MADJ = 0x00136868;
1050 param->reg_SADJ = 0x00004534;
1051 param->wodt = 1;
1052 param->rodt = 1;
1053 param->reg_AC1 = 0x32302A37;
1054 param->reg_AC2 = 0xEF56B621;
1055 param->reg_DQSIC = 0x0000015A;
1056 param->reg_MRS = 0x02101A50;
1057 param->reg_EMRS = 0x00000004;
1058 param->reg_DRV = 0x000000F5;
1059 param->reg_IOZ = 0x00000034;
1060 param->reg_DQIDLY = 0x00000078;
1061 param->reg_FREQ = 0x000059C0;
1062 param->madj_max = 128;
1063 param->dll2_finetune_step = 3;
1067 switch (param->dram_chipid) {
1069 param->dram_config = 0x130;
1073 param->dram_config = 0x131;
1076 param->dram_config = 0x132;
1079 param->dram_config = 0x133;
1083 switch (param->vram_size) {
1086 param->dram_config |= 0x00;
1089 param->dram_config |= 0x04;
1092 param->dram_config |= 0x08;
1095 param->dram_config |= 0x0c;
1101 static void ddr3_init(struct ast_private *ast, struct ast2300_dram_param *param)
1111 ast_moutdwm(ast, 0x1E6E0064, param->reg_MADJ);
1112 ast_moutdwm(ast, 0x1E6E0068, param->reg_SADJ);
1114 ast_moutdwm(ast, 0x1E6E0064, param->reg_MADJ | 0xC0000);
1117 ast_moutdwm(ast, 0x1E6E0004, param->dram_config);
1119 ast_moutdwm(ast, 0x1E6E0010, param->reg_AC1);
1120 ast_moutdwm(ast, 0x1E6E0014, param->reg_AC2);
1121 ast_moutdwm(ast, 0x1E6E0020, param->reg_DQSIC);
1124 ast_moutdwm(ast, 0x1E6E0088, param->reg_DQIDLY);
1135 ast_moutdwm(ast, 0x1E6E0060, param->reg_DRV);
1136 ast_moutdwm(ast, 0x1E6E006C, param->reg_IOZ);
1149 if ((data2 & 0xff) > param->madj_max) {
1184 ast_moutdwm(ast, 0x1E6E002C, param->reg_MRS | 0x100);
1185 ast_moutdwm(ast, 0x1E6E0030, param->reg_EMRS);
1190 ast_moutdwm(ast, 0x1E6E002C, param->reg_MRS);
1196 if (param->wodt) {
1199 if (param->rodt) {
1200 data = data | 0x3000 | ((param->reg_AC2 & 0x60000) >> 3);
1205 if ((cbr_dll2(ast, param) == false) && (retry++ < 10))
1208 ast_moutdwm(ast, 0x1E6E0120, param->reg_FREQ);
1224 static void get_ddr2_info(struct ast_private *ast, struct ast2300_dram_param *param)
1237 param->reg_MADJ = 0x00034C4C;
1238 param->reg_SADJ = 0x00001800;
1239 param->reg_DRV = 0x000000F0;
1240 param->reg_PERIOD = param->dram_freq;
1241 param->rodt = 0;
1243 switch (param->dram_freq) {
1246 param->wodt = 0;
1247 param->reg_AC1 = 0x11101513;
1248 param->reg_AC2 = 0x78117011;
1249 param->reg_DQSIC = 0x00000092;
1250 param->reg_MRS = 0x00000842;
1251 param->reg_EMRS = 0x00000000;
1252 param->reg_DRV = 0x000000F0;
1253 param->reg_IOZ = 0x00000034;
1254 param->reg_DQIDLY = 0x0000005A;
1255 param->reg_FREQ = 0x00004AC0;
1256 param->madj_max = 138;
1257 param->dll2_finetune_step = 3;
1261 param->wodt = 1;
1262 param->reg_AC1 = 0x22202613;
1263 param->reg_AC2 = 0xAA009016 | trap_AC2;
1264 param->reg_DQSIC = 0x000000BA;
1265 param->reg_MRS = 0x00000A02 | trap_MRS;
1266 param->reg_EMRS = 0x00000040;
1267 param->reg_DRV = 0x000000FA;
1268 param->reg_IOZ = 0x00000034;
1269 param->reg_DQIDLY = 0x00000074;
1270 param->reg_FREQ = 0x00004DC0;
1271 param->madj_max = 96;
1272 param->dll2_finetune_step = 3;
1273 switch (param->dram_chipid) {
1276 param->reg_AC2 = 0xAA009012 | trap_AC2;
1279 param->reg_AC2 = 0xAA009016 | trap_AC2;
1282 param->reg_AC2 = 0xAA009023 | trap_AC2;
1285 param->reg_AC2 = 0xAA00903B | trap_AC2;
1292 param->wodt = 1;
1293 param->rodt = 0;
1294 param->reg_AC1 = 0x33302714;
1295 param->reg_AC2 = 0xCC00B01B | trap_AC2;
1296 param->reg_DQSIC = 0x000000E2;
1297 param->reg_MRS = 0x00000C02 | trap_MRS;
1298 param->reg_EMRS = 0x00000040;
1299 param->reg_DRV = 0x000000FA;
1300 param->reg_IOZ = 0x00000034;
1301 param->reg_DQIDLY = 0x00000089;
1302 param->reg_FREQ = 0x00005040;
1303 param->madj_max = 96;
1304 param->dll2_finetune_step = 4;
1306 switch (param->dram_chipid) {
1308 param->reg_AC2 = 0xCC00B016 | trap_AC2;
1312 param->reg_AC2 = 0xCC00B01B | trap_AC2;
1315 param->reg_AC2 = 0xCC00B02B | trap_AC2;
1318 param->reg_AC2 = 0xCC00B03F | trap_AC2;
1326 param->wodt = 1;
1327 param->rodt = 0;
1328 param->reg_AC1 = 0x33302714;
1329 param->reg_AC2 = 0xCC00B01B | trap_AC2;
1330 param->reg_DQSIC = 0x000000E2;
1331 param->reg_MRS = 0x00000C02 | trap_MRS;
1332 param->reg_EMRS = 0x00000040;
1333 param->reg_DRV = 0x000000FA;
1334 param->reg_IOZ = 0x00000034;
1335 param->reg_DQIDLY = 0x00000089;
1336 param->reg_FREQ = 0x000050C0;
1337 param->madj_max = 96;
1338 param->dll2_finetune_step = 4;
1340 switch (param->dram_chipid) {
1342 param->reg_AC2 = 0xCC00B016 | trap_AC2;
1346 param->reg_AC2 = 0xCC00B01B | trap_AC2;
1349 param->reg_AC2 = 0xCC00B02B | trap_AC2;
1352 param->reg_AC2 = 0xCC00B03F | trap_AC2;
1359 param->wodt = 0;
1360 param->reg_AC1 = 0x33302815;
1361 param->reg_AC2 = 0xCD44B01E;
1362 param->reg_DQSIC = 0x000000FC;
1363 param->reg_MRS = 0x00000E72;
1364 param->reg_EMRS = 0x00000000;
1365 param->reg_DRV = 0x00000000;
1366 param->reg_IOZ = 0x00000034;
1367 param->reg_DQIDLY = 0x00000097;
1368 param->reg_FREQ = 0x000052C0;
1369 param->madj_max = 88;
1370 param->dll2_finetune_step = 3;
1374 param->wodt = 1;
1375 param->rodt = 1;
1376 param->reg_AC1 = 0x33302815;
1377 param->reg_AC2 = 0xDE44C022;
1378 param->reg_DQSIC = 0x00000117;
1379 param->reg_MRS = 0x00000E72;
1380 param->reg_EMRS = 0x00000040;
1381 param->reg_DRV = 0x0000000A;
1382 param->reg_IOZ = 0x00000045;
1383 param->reg_DQIDLY = 0x000000A0;
1384 param->reg_FREQ = 0x000054C0;
1385 param->madj_max = 79;
1386 param->dll2_finetune_step = 3;
1390 param->wodt = 1;
1391 param->rodt = 1;
1392 param->reg_AC1 = 0x33302815;
1393 param->reg_AC2 = 0xEF44D024;
1394 param->reg_DQSIC = 0x00000125;
1395 param->reg_MRS = 0x00000E72;
1396 param->reg_EMRS = 0x00000004;
1397 param->reg_DRV = 0x000000F9;
1398 param->reg_IOZ = 0x00000045;
1399 param->reg_DQIDLY = 0x000000A7;
1400 param->reg_FREQ = 0x000055C0;
1401 param->madj_max = 76;
1402 param->dll2_finetune_step = 3;
1406 param->wodt = 1;
1407 param->rodt = 1;
1408 param->reg_AC1 = 0x43402915;
1409 param->reg_AC2 = 0xFF44E025;
1410 param->reg_DQSIC = 0x00000132;
1411 param->reg_MRS = 0x00000E72;
1412 param->reg_EMRS = 0x00000040;
1413 param->reg_DRV = 0x0000000A;
1414 param->reg_IOZ = 0x00000045;
1415 param->reg_DQIDLY = 0x000000AD;
1416 param->reg_FREQ = 0x000056C0;
1417 param->madj_max = 76;
1418 param->dll2_finetune_step = 3;
1422 param->wodt = 1;
1423 param->rodt = 1;
1424 param->reg_AC1 = 0x43402915;
1425 param->reg_AC2 = 0xFF44E027;
1426 param->reg_DQSIC = 0x0000013F;
1427 param->reg_MRS = 0x00000E72;
1428 param->reg_EMRS = 0x00000004;
1429 param->reg_DRV = 0x000000F5;
1430 param->reg_IOZ = 0x00000045;
1431 param->reg_DQIDLY = 0x000000B3;
1432 param->reg_FREQ = 0x000057C0;
1433 param->madj_max = 76;
1434 param->dll2_finetune_step = 3;
1438 switch (param->dram_chipid) {
1440 param->dram_config = 0x100;
1444 param->dram_config = 0x121;
1447 param->dram_config = 0x122;
1450 param->dram_config = 0x123;
1454 switch (param->vram_size) {
1457 param->dram_config |= 0x00;
1460 param->dram_config |= 0x04;
1463 param->dram_config |= 0x08;
1466 param->dram_config |= 0x0c;
1471 static void ddr2_init(struct ast_private *ast, struct ast2300_dram_param *param)
1479 ast_moutdwm(ast, 0x1E6E0064, param->reg_MADJ);
1480 ast_moutdwm(ast, 0x1E6E0068, param->reg_SADJ);
1482 ast_moutdwm(ast, 0x1E6E0064, param->reg_MADJ | 0xC0000);
1485 ast_moutdwm(ast, 0x1E6E0004, param->dram_config);
1487 ast_moutdwm(ast, 0x1E6E0010, param->reg_AC1);
1488 ast_moutdwm(ast, 0x1E6E0014, param->reg_AC2);
1489 ast_moutdwm(ast, 0x1E6E0020, param->reg_DQSIC);
1492 ast_moutdwm(ast, 0x1E6E0088, param->reg_DQIDLY);
1503 ast_moutdwm(ast, 0x1E6E0060, param->reg_DRV);
1504 ast_moutdwm(ast, 0x1E6E006C, param->reg_IOZ);
1518 if ((data2 & 0xff) > param->madj_max) {
1553 ast_moutdwm(ast, 0x1E6E002C, param->reg_MRS | 0x100);
1554 ast_moutdwm(ast, 0x1E6E0030, param->reg_EMRS);
1561 ast_moutdwm(ast, 0x1E6E002C, param->reg_MRS);
1563 ast_moutdwm(ast, 0x1E6E0030, param->reg_EMRS | 0x380);
1565 ast_moutdwm(ast, 0x1E6E0030, param->reg_EMRS);
1570 if (param->wodt) {
1573 if (param->rodt) {
1574 data = data | 0x3000 | ((param->reg_AC2 & 0x60000) >> 3);
1577 ast_moutdwm(ast, 0x1E6E0120, param->reg_FREQ);
1580 if ((cbr_dll2(ast, param) == false) && (retry++ < 10))
1600 struct ast2300_dram_param param;
1623 param.dram_freq = 396;
1624 param.dram_type = AST_DDR3;
1627 param.dram_type = AST_DDR2;
1630 param.dram_chipid = AST_DRAM_512Mx16;
1634 param.dram_chipid = AST_DRAM_1Gx16;
1637 param.dram_chipid = AST_DRAM_2Gx16;
1640 param.dram_chipid = AST_DRAM_4Gx16;
1646 param.vram_size = AST_VIDMEM_SIZE_8M;
1650 param.vram_size = AST_VIDMEM_SIZE_16M;
1654 param.vram_size = AST_VIDMEM_SIZE_32M;
1658 param.vram_size = AST_VIDMEM_SIZE_64M;
1662 if (param.dram_type == AST_DDR3) {
1663 get_ddr3_info(ast, &param);
1664 ddr3_init(ast, &param);
1666 get_ddr2_info(ast, &param);
1667 ddr2_init(ast, &param);
1811 u32 addr, data, param;
1826 param = 0x930023E0;
1830 param = 0x93002400;
1832 ast_moutdwm(ast, 0x1E6E2020, param);