aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSylwester Nawrocki <s.nawrocki@samsung.com>2013-04-10 05:24:46 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2013-04-14 14:51:56 -0400
commit3530ef0a6ea56636b23b5a15ff645632f7596c04 (patch)
tree7e8e44a15f6241ebaf4ab377cf887ce10392a0d0
parenta6f5635e63ffa02c30a22ea4af21f3daa1e98cdf (diff)
[media] exynos4-is: Rename the ISP chain configuration data structure
More appropriate names for the ISP chain data structure. Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r--drivers/media/platform/exynos4-is/fimc-is-param.c191
-rw-r--r--drivers/media/platform/exynos4-is/fimc-is-regs.c14
-rw-r--r--drivers/media/platform/exynos4-is/fimc-is.c22
-rw-r--r--drivers/media/platform/exynos4-is/fimc-is.h9
-rw-r--r--drivers/media/platform/exynos4-is/fimc-isp.c6
5 files changed, 121 insertions, 121 deletions
diff --git a/drivers/media/platform/exynos4-is/fimc-is-param.c b/drivers/media/platform/exynos4-is/fimc-is-param.c
index 58123e3e1b62..254740f5e418 100644
--- a/drivers/media/platform/exynos4-is/fimc-is-param.c
+++ b/drivers/media/platform/exynos4-is/fimc-is-param.c
@@ -43,7 +43,7 @@ void __fimc_is_hw_update_param_global_shotmode(struct fimc_is *is)
43 struct param_global_shotmode *dst, *src; 43 struct param_global_shotmode *dst, *src;
44 44
45 dst = &is->is_p_region->parameter.global.shotmode; 45 dst = &is->is_p_region->parameter.global.shotmode;
46 src = &is->cfg_param[is->scenario_id].global.shotmode; 46 src = &is->config[is->config_index].global.shotmode;
47 __hw_param_copy(dst, src); 47 __hw_param_copy(dst, src);
48} 48}
49 49
@@ -52,14 +52,14 @@ void __fimc_is_hw_update_param_sensor_framerate(struct fimc_is *is)
52 struct param_sensor_framerate *dst, *src; 52 struct param_sensor_framerate *dst, *src;
53 53
54 dst = &is->is_p_region->parameter.sensor.frame_rate; 54 dst = &is->is_p_region->parameter.sensor.frame_rate;
55 src = &is->cfg_param[is->scenario_id].sensor.frame_rate; 55 src = &is->config[is->config_index].sensor.frame_rate;
56 __hw_param_copy(dst, src); 56 __hw_param_copy(dst, src);
57} 57}
58 58
59int __fimc_is_hw_update_param(struct fimc_is *is, u32 offset) 59int __fimc_is_hw_update_param(struct fimc_is *is, u32 offset)
60{ 60{
61 struct is_param_region *par = &is->is_p_region->parameter; 61 struct is_param_region *par = &is->is_p_region->parameter;
62 struct is_config_param *cfg = &is->cfg_param[is->scenario_id]; 62 struct chain_config *cfg = &is->config[is->config_index];
63 63
64 switch (offset) { 64 switch (offset) {
65 case PARAM_ISP_CONTROL: 65 case PARAM_ISP_CONTROL:
@@ -163,7 +163,7 @@ int __fimc_is_hw_update_param(struct fimc_is *is, u32 offset)
163 163
164unsigned int __get_pending_param_count(struct fimc_is *is) 164unsigned int __get_pending_param_count(struct fimc_is *is)
165{ 165{
166 struct is_config_param *config = &is->cfg_param[is->scenario_id]; 166 struct chain_config *config = &is->config[is->config_index];
167 unsigned long flags; 167 unsigned long flags;
168 unsigned int count; 168 unsigned int count;
169 169
@@ -180,9 +180,9 @@ int __is_hw_update_params(struct fimc_is *is)
180 unsigned long *p_index1, *p_index2; 180 unsigned long *p_index1, *p_index2;
181 int i, id, ret = 0; 181 int i, id, ret = 0;
182 182
183 id = is->scenario_id; 183 id = is->config_index;
184 p_index1 = &is->cfg_param[id].p_region_index1; 184 p_index1 = &is->config[id].p_region_index1;
185 p_index2 = &is->cfg_param[id].p_region_index2; 185 p_index2 = &is->config[id].p_region_index2;
186 186
187 if (test_bit(PARAM_GLOBAL_SHOTMODE, p_index1)) 187 if (test_bit(PARAM_GLOBAL_SHOTMODE, p_index1))
188 __fimc_is_hw_update_param_global_shotmode(is); 188 __fimc_is_hw_update_param_global_shotmode(is);
@@ -212,22 +212,21 @@ void __is_get_frame_size(struct fimc_is *is, struct v4l2_mbus_framefmt *mf)
212{ 212{
213 struct isp_param *isp; 213 struct isp_param *isp;
214 214
215 isp = &is->cfg_param[is->scenario_id].isp; 215 isp = &is->config[is->config_index].isp;
216 mf->width = isp->otf_input.width; 216 mf->width = isp->otf_input.width;
217 mf->height = isp->otf_input.height; 217 mf->height = isp->otf_input.height;
218} 218}
219 219
220void __is_set_frame_size(struct fimc_is *is, struct v4l2_mbus_framefmt *mf) 220void __is_set_frame_size(struct fimc_is *is, struct v4l2_mbus_framefmt *mf)
221{ 221{
222 unsigned int index = is->config_index;
222 struct isp_param *isp; 223 struct isp_param *isp;
223 struct drc_param *drc; 224 struct drc_param *drc;
224 struct fd_param *fd; 225 struct fd_param *fd;
225 unsigned int mode;
226 226
227 mode = is->scenario_id; 227 isp = &is->config[index].isp;
228 isp = &is->cfg_param[mode].isp; 228 drc = &is->config[index].drc;
229 drc = &is->cfg_param[mode].drc; 229 fd = &is->config[index].fd;
230 fd = &is->cfg_param[mode].fd;
231 230
232 /* Update isp size info (OTF only) */ 231 /* Update isp size info (OTF only) */
233 isp->otf_input.width = mf->width; 232 isp->otf_input.width = mf->width;
@@ -244,7 +243,7 @@ void __is_set_frame_size(struct fimc_is *is, struct v4l2_mbus_framefmt *mf)
244 fd->otf_input.height = mf->height; 243 fd->otf_input.height = mf->height;
245 244
246 if (test_bit(PARAM_ISP_OTF_INPUT, 245 if (test_bit(PARAM_ISP_OTF_INPUT,
247 &is->cfg_param[mode].p_region_index1)) 246 &is->config[index].p_region_index1))
248 return; 247 return;
249 248
250 /* Update field */ 249 /* Update field */
@@ -267,14 +266,14 @@ int fimc_is_hw_get_sensor_max_framerate(struct fimc_is *is)
267 266
268void __is_set_sensor(struct fimc_is *is, int fps) 267void __is_set_sensor(struct fimc_is *is, int fps)
269{ 268{
269 unsigned int index = is->config_index;
270 struct sensor_param *sensor; 270 struct sensor_param *sensor;
271 struct isp_param *isp; 271 struct isp_param *isp;
272 unsigned long *p_index, mode; 272 unsigned long *p_index;
273 273
274 mode = is->scenario_id; 274 p_index = &is->config[index].p_region_index1;
275 p_index = &is->cfg_param[mode].p_region_index1; 275 sensor = &is->config[index].sensor;
276 sensor = &is->cfg_param[mode].sensor; 276 isp = &is->config[index].isp;
277 isp = &is->cfg_param[mode].isp;
278 277
279 if (fps == 0) { 278 if (fps == 0) {
280 sensor->frame_rate.frame_rate = 279 sensor->frame_rate.frame_rate =
@@ -298,7 +297,7 @@ void __is_set_init_isp_aa(struct fimc_is *is)
298{ 297{
299 struct isp_param *isp; 298 struct isp_param *isp;
300 299
301 isp = &is->cfg_param[is->scenario_id].isp; 300 isp = &is->config[is->config_index].isp;
302 301
303 isp->aa.cmd = ISP_AA_COMMAND_START; 302 isp->aa.cmd = ISP_AA_COMMAND_START;
304 isp->aa.target = ISP_AA_TARGET_AF | ISP_AA_TARGET_AE | 303 isp->aa.target = ISP_AA_TARGET_AF | ISP_AA_TARGET_AE |
@@ -317,8 +316,8 @@ void __is_set_init_isp_aa(struct fimc_is *is)
317 316
318void __is_set_isp_flash(struct fimc_is *is, u32 cmd, u32 redeye) 317void __is_set_isp_flash(struct fimc_is *is, u32 cmd, u32 redeye)
319{ 318{
320 unsigned int mode = is->scenario_id; 319 unsigned int index = is->config_index;
321 struct is_config_param *cfg = &is->cfg_param[mode]; 320 struct chain_config *cfg = &is->config[index];
322 struct isp_param *isp = &cfg->isp; 321 struct isp_param *isp = &cfg->isp;
323 322
324 isp->flash.cmd = cmd; 323 isp->flash.cmd = cmd;
@@ -331,12 +330,12 @@ void __is_set_isp_flash(struct fimc_is *is, u32 cmd, u32 redeye)
331 330
332void __is_set_isp_awb(struct fimc_is *is, u32 cmd, u32 val) 331void __is_set_isp_awb(struct fimc_is *is, u32 cmd, u32 val)
333{ 332{
334 unsigned int mode = is->scenario_id; 333 unsigned int index = is->config_index;
335 struct isp_param *isp; 334 struct isp_param *isp;
336 unsigned long *p_index; 335 unsigned long *p_index;
337 336
338 p_index = &is->cfg_param[mode].p_region_index1; 337 p_index = &is->config[index].p_region_index1;
339 isp = &is->cfg_param[mode].isp; 338 isp = &is->config[index].isp;
340 339
341 isp->awb.cmd = cmd; 340 isp->awb.cmd = cmd;
342 isp->awb.illumination = val; 341 isp->awb.illumination = val;
@@ -348,12 +347,12 @@ void __is_set_isp_awb(struct fimc_is *is, u32 cmd, u32 val)
348 347
349void __is_set_isp_effect(struct fimc_is *is, u32 cmd) 348void __is_set_isp_effect(struct fimc_is *is, u32 cmd)
350{ 349{
351 unsigned int mode = is->scenario_id; 350 unsigned int index = is->config_index;
352 struct isp_param *isp; 351 struct isp_param *isp;
353 unsigned long *p_index; 352 unsigned long *p_index;
354 353
355 p_index = &is->cfg_param[mode].p_region_index1; 354 p_index = &is->config[index].p_region_index1;
356 isp = &is->cfg_param[mode].isp; 355 isp = &is->config[index].isp;
357 356
358 isp->effect.cmd = cmd; 357 isp->effect.cmd = cmd;
359 isp->effect.err = ISP_IMAGE_EFFECT_ERROR_NONE; 358 isp->effect.err = ISP_IMAGE_EFFECT_ERROR_NONE;
@@ -364,12 +363,12 @@ void __is_set_isp_effect(struct fimc_is *is, u32 cmd)
364 363
365void __is_set_isp_iso(struct fimc_is *is, u32 cmd, u32 val) 364void __is_set_isp_iso(struct fimc_is *is, u32 cmd, u32 val)
366{ 365{
367 unsigned int mode = is->scenario_id; 366 unsigned int index = is->config_index;
368 struct isp_param *isp; 367 struct isp_param *isp;
369 unsigned long *p_index; 368 unsigned long *p_index;
370 369
371 p_index = &is->cfg_param[mode].p_region_index1; 370 p_index = &is->config[index].p_region_index1;
372 isp = &is->cfg_param[mode].isp; 371 isp = &is->config[index].isp;
373 372
374 isp->iso.cmd = cmd; 373 isp->iso.cmd = cmd;
375 isp->iso.value = val; 374 isp->iso.value = val;
@@ -381,12 +380,12 @@ void __is_set_isp_iso(struct fimc_is *is, u32 cmd, u32 val)
381 380
382void __is_set_isp_adjust(struct fimc_is *is, u32 cmd, u32 val) 381void __is_set_isp_adjust(struct fimc_is *is, u32 cmd, u32 val)
383{ 382{
384 unsigned int mode = is->scenario_id; 383 unsigned int index = is->config_index;
385 unsigned long *p_index; 384 unsigned long *p_index;
386 struct isp_param *isp; 385 struct isp_param *isp;
387 386
388 p_index = &is->cfg_param[mode].p_region_index1; 387 p_index = &is->config[index].p_region_index1;
389 isp = &is->cfg_param[mode].isp; 388 isp = &is->config[index].isp;
390 389
391 switch (cmd) { 390 switch (cmd) {
392 case ISP_ADJUST_COMMAND_MANUAL_CONTRAST: 391 case ISP_ADJUST_COMMAND_MANUAL_CONTRAST:
@@ -428,12 +427,12 @@ void __is_set_isp_adjust(struct fimc_is *is, u32 cmd, u32 val)
428 427
429void __is_set_isp_metering(struct fimc_is *is, u32 id, u32 val) 428void __is_set_isp_metering(struct fimc_is *is, u32 id, u32 val)
430{ 429{
430 unsigned int index = is->config_index;
431 struct isp_param *isp; 431 struct isp_param *isp;
432 unsigned long *p_index, mode; 432 unsigned long *p_index;
433 433
434 mode = is->scenario_id; 434 p_index = &is->config[index].p_region_index1;
435 p_index = &is->cfg_param[mode].p_region_index1; 435 isp = &is->config[index].isp;
436 isp = &is->cfg_param[mode].isp;
437 436
438 switch (id) { 437 switch (id) {
439 case IS_METERING_CONFIG_CMD: 438 case IS_METERING_CONFIG_CMD:
@@ -463,12 +462,12 @@ void __is_set_isp_metering(struct fimc_is *is, u32 id, u32 val)
463 462
464void __is_set_isp_afc(struct fimc_is *is, u32 cmd, u32 val) 463void __is_set_isp_afc(struct fimc_is *is, u32 cmd, u32 val)
465{ 464{
465 unsigned int index = is->config_index;
466 struct isp_param *isp; 466 struct isp_param *isp;
467 unsigned long *p_index, mode; 467 unsigned long *p_index;
468 468
469 mode = is->scenario_id; 469 p_index = &is->config[index].p_region_index1;
470 p_index = &is->cfg_param[mode].p_region_index1; 470 isp = &is->config[index].isp;
471 isp = &is->cfg_param[mode].isp;
472 471
473 isp->afc.cmd = cmd; 472 isp->afc.cmd = cmd;
474 isp->afc.manual = val; 473 isp->afc.manual = val;
@@ -480,12 +479,12 @@ void __is_set_isp_afc(struct fimc_is *is, u32 cmd, u32 val)
480 479
481void __is_set_drc_control(struct fimc_is *is, u32 val) 480void __is_set_drc_control(struct fimc_is *is, u32 val)
482{ 481{
482 unsigned int index = is->config_index;
483 struct drc_param *drc; 483 struct drc_param *drc;
484 unsigned long *p_index, mode; 484 unsigned long *p_index;
485 485
486 mode = is->scenario_id; 486 p_index = &is->config[index].p_region_index1;
487 p_index = &is->cfg_param[mode].p_region_index1; 487 drc = &is->config[index].drc;
488 drc = &is->cfg_param[mode].drc;
489 488
490 drc->control.bypass = val; 489 drc->control.bypass = val;
491 490
@@ -495,12 +494,12 @@ void __is_set_drc_control(struct fimc_is *is, u32 val)
495 494
496void __is_set_fd_control(struct fimc_is *is, u32 val) 495void __is_set_fd_control(struct fimc_is *is, u32 val)
497{ 496{
497 unsigned int index = is->config_index;
498 struct fd_param *fd; 498 struct fd_param *fd;
499 unsigned long *p_index, mode; 499 unsigned long *p_index;
500 500
501 mode = is->scenario_id; 501 p_index = &is->config[index].p_region_index2;
502 p_index = &is->cfg_param[mode].p_region_index2; 502 fd = &is->config[index].fd;
503 fd = &is->cfg_param[mode].fd;
504 503
505 fd->control.cmd = val; 504 fd->control.cmd = val;
506 505
@@ -510,12 +509,12 @@ void __is_set_fd_control(struct fimc_is *is, u32 val)
510 509
511void __is_set_fd_config_maxface(struct fimc_is *is, u32 val) 510void __is_set_fd_config_maxface(struct fimc_is *is, u32 val)
512{ 511{
512 unsigned int index = is->config_index;
513 struct fd_param *fd; 513 struct fd_param *fd;
514 unsigned long *p_index, mode; 514 unsigned long *p_index;
515 515
516 mode = is->scenario_id; 516 p_index = &is->config[index].p_region_index2;
517 p_index = &is->cfg_param[mode].p_region_index2; 517 fd = &is->config[index].fd;
518 fd = &is->cfg_param[mode].fd;
519 518
520 fd->config.max_number = val; 519 fd->config.max_number = val;
521 520
@@ -530,12 +529,12 @@ void __is_set_fd_config_maxface(struct fimc_is *is, u32 val)
530 529
531void __is_set_fd_config_rollangle(struct fimc_is *is, u32 val) 530void __is_set_fd_config_rollangle(struct fimc_is *is, u32 val)
532{ 531{
532 unsigned int index = is->config_index;
533 struct fd_param *fd; 533 struct fd_param *fd;
534 unsigned long *p_index, mode; 534 unsigned long *p_index;
535 535
536 mode = is->scenario_id; 536 p_index = &is->config[index].p_region_index2;
537 p_index = &is->cfg_param[mode].p_region_index2; 537 fd = &is->config[index].fd;
538 fd = &is->cfg_param[mode].fd;
539 538
540 fd->config.roll_angle = val; 539 fd->config.roll_angle = val;
541 540
@@ -550,12 +549,12 @@ void __is_set_fd_config_rollangle(struct fimc_is *is, u32 val)
550 549
551void __is_set_fd_config_yawangle(struct fimc_is *is, u32 val) 550void __is_set_fd_config_yawangle(struct fimc_is *is, u32 val)
552{ 551{
552 unsigned int index = is->config_index;
553 struct fd_param *fd; 553 struct fd_param *fd;
554 unsigned long *p_index, mode; 554 unsigned long *p_index;
555 555
556 mode = is->scenario_id; 556 p_index = &is->config[index].p_region_index2;
557 p_index = &is->cfg_param[mode].p_region_index2; 557 fd = &is->config[index].fd;
558 fd = &is->cfg_param[mode].fd;
559 558
560 fd->config.yaw_angle = val; 559 fd->config.yaw_angle = val;
561 560
@@ -570,12 +569,12 @@ void __is_set_fd_config_yawangle(struct fimc_is *is, u32 val)
570 569
571void __is_set_fd_config_smilemode(struct fimc_is *is, u32 val) 570void __is_set_fd_config_smilemode(struct fimc_is *is, u32 val)
572{ 571{
572 unsigned int index = is->config_index;
573 struct fd_param *fd; 573 struct fd_param *fd;
574 unsigned long *p_index, mode; 574 unsigned long *p_index;
575 575
576 mode = is->scenario_id; 576 p_index = &is->config[index].p_region_index2;
577 p_index = &is->cfg_param[mode].p_region_index2; 577 fd = &is->config[index].fd;
578 fd = &is->cfg_param[mode].fd;
579 578
580 fd->config.smile_mode = val; 579 fd->config.smile_mode = val;
581 580
@@ -590,12 +589,12 @@ void __is_set_fd_config_smilemode(struct fimc_is *is, u32 val)
590 589
591void __is_set_fd_config_blinkmode(struct fimc_is *is, u32 val) 590void __is_set_fd_config_blinkmode(struct fimc_is *is, u32 val)
592{ 591{
592 unsigned int index = is->config_index;
593 struct fd_param *fd; 593 struct fd_param *fd;
594 unsigned long *p_index, mode; 594 unsigned long *p_index;
595 595
596 mode = is->scenario_id; 596 p_index = &is->config[index].p_region_index2;
597 p_index = &is->cfg_param[mode].p_region_index2; 597 fd = &is->config[index].fd;
598 fd = &is->cfg_param[mode].fd;
599 598
600 fd->config.blink_mode = val; 599 fd->config.blink_mode = val;
601 600
@@ -610,12 +609,12 @@ void __is_set_fd_config_blinkmode(struct fimc_is *is, u32 val)
610 609
611void __is_set_fd_config_eyedetect(struct fimc_is *is, u32 val) 610void __is_set_fd_config_eyedetect(struct fimc_is *is, u32 val)
612{ 611{
612 unsigned int index = is->config_index;
613 struct fd_param *fd; 613 struct fd_param *fd;
614 unsigned long *p_index, mode; 614 unsigned long *p_index;
615 615
616 mode = is->scenario_id; 616 p_index = &is->config[index].p_region_index2;
617 p_index = &is->cfg_param[mode].p_region_index2; 617 fd = &is->config[index].fd;
618 fd = &is->cfg_param[mode].fd;
619 618
620 fd->config.eye_detect = val; 619 fd->config.eye_detect = val;
621 620
@@ -630,12 +629,12 @@ void __is_set_fd_config_eyedetect(struct fimc_is *is, u32 val)
630 629
631void __is_set_fd_config_mouthdetect(struct fimc_is *is, u32 val) 630void __is_set_fd_config_mouthdetect(struct fimc_is *is, u32 val)
632{ 631{
632 unsigned int index = is->config_index;
633 struct fd_param *fd; 633 struct fd_param *fd;
634 unsigned long *p_index, mode; 634 unsigned long *p_index;
635 635
636 mode = is->scenario_id; 636 p_index = &is->config[index].p_region_index2;
637 p_index = &is->cfg_param[mode].p_region_index2; 637 fd = &is->config[index].fd;
638 fd = &is->cfg_param[mode].fd;
639 638
640 fd->config.mouth_detect = val; 639 fd->config.mouth_detect = val;
641 640
@@ -650,12 +649,12 @@ void __is_set_fd_config_mouthdetect(struct fimc_is *is, u32 val)
650 649
651void __is_set_fd_config_orientation(struct fimc_is *is, u32 val) 650void __is_set_fd_config_orientation(struct fimc_is *is, u32 val)
652{ 651{
652 unsigned int index = is->config_index;
653 struct fd_param *fd; 653 struct fd_param *fd;
654 unsigned long *p_index, mode; 654 unsigned long *p_index;
655 655
656 mode = is->scenario_id; 656 p_index = &is->config[index].p_region_index2;
657 p_index = &is->cfg_param[mode].p_region_index2; 657 fd = &is->config[index].fd;
658 fd = &is->cfg_param[mode].fd;
659 658
660 fd->config.orientation = val; 659 fd->config.orientation = val;
661 660
@@ -670,12 +669,12 @@ void __is_set_fd_config_orientation(struct fimc_is *is, u32 val)
670 669
671void __is_set_fd_config_orientation_val(struct fimc_is *is, u32 val) 670void __is_set_fd_config_orientation_val(struct fimc_is *is, u32 val)
672{ 671{
672 unsigned int index = is->config_index;
673 struct fd_param *fd; 673 struct fd_param *fd;
674 unsigned long *p_index, mode; 674 unsigned long *p_index;
675 675
676 mode = is->scenario_id; 676 p_index = &is->config[index].p_region_index2;
677 p_index = &is->cfg_param[mode].p_region_index2; 677 fd = &is->config[index].fd;
678 fd = &is->cfg_param[mode].fd;
679 678
680 fd->config.orientation_value = val; 679 fd->config.orientation_value = val;
681 680
@@ -696,16 +695,16 @@ void fimc_is_set_initial_params(struct fimc_is *is)
696 struct drc_param *drc; 695 struct drc_param *drc;
697 struct fd_param *fd; 696 struct fd_param *fd;
698 unsigned long *p_index1, *p_index2; 697 unsigned long *p_index1, *p_index2;
699 unsigned int mode; 698 unsigned int index;
700 699
701 mode = is->scenario_id; 700 index = is->config_index;
702 global = &is->cfg_param[mode].global; 701 global = &is->config[index].global;
703 sensor = &is->cfg_param[mode].sensor; 702 sensor = &is->config[index].sensor;
704 isp = &is->cfg_param[mode].isp; 703 isp = &is->config[index].isp;
705 drc = &is->cfg_param[mode].drc; 704 drc = &is->config[index].drc;
706 fd = &is->cfg_param[mode].fd; 705 fd = &is->config[index].fd;
707 p_index1 = &is->cfg_param[mode].p_region_index1; 706 p_index1 = &is->config[index].p_region_index1;
708 p_index2 = &is->cfg_param[mode].p_region_index2; 707 p_index2 = &is->config[index].p_region_index2;
709 708
710 /* Global */ 709 /* Global */
711 global->shotmode.cmd = 1; 710 global->shotmode.cmd = 1;
@@ -841,7 +840,7 @@ void fimc_is_set_initial_params(struct fimc_is *is)
841 840
842 /* Sensor */ 841 /* Sensor */
843 if (!test_bit(PARAM_SENSOR_FRAME_RATE, p_index1)) { 842 if (!test_bit(PARAM_SENSOR_FRAME_RATE, p_index1)) {
844 if (!mode) 843 if (is->config_index == 0)
845 __is_set_sensor(is, 0); 844 __is_set_sensor(is, 0);
846 } 845 }
847 846
diff --git a/drivers/media/platform/exynos4-is/fimc-is-regs.c b/drivers/media/platform/exynos4-is/fimc-is-regs.c
index f59a289c530d..b0ff67bc1b05 100644
--- a/drivers/media/platform/exynos4-is/fimc-is-regs.c
+++ b/drivers/media/platform/exynos4-is/fimc-is-regs.c
@@ -79,18 +79,18 @@ int fimc_is_hw_wait_intmsr0_intmsd0(struct fimc_is *is)
79 79
80int fimc_is_hw_set_param(struct fimc_is *is) 80int fimc_is_hw_set_param(struct fimc_is *is)
81{ 81{
82 struct is_config_param *cfg = &is->cfg_param[is->scenario_id]; 82 struct chain_config *config = &is->config[is->config_index];
83 unsigned int param_count = __get_pending_param_count(is); 83 unsigned int param_count = __get_pending_param_count(is);
84 84
85 fimc_is_hw_wait_intmsr0_intmsd0(is); 85 fimc_is_hw_wait_intmsr0_intmsd0(is);
86 86
87 mcuctl_write(HIC_SET_PARAMETER, is, MCUCTL_REG_ISSR(0)); 87 mcuctl_write(HIC_SET_PARAMETER, is, MCUCTL_REG_ISSR(0));
88 mcuctl_write(is->sensor_index, is, MCUCTL_REG_ISSR(1)); 88 mcuctl_write(is->sensor_index, is, MCUCTL_REG_ISSR(1));
89 mcuctl_write(is->scenario_id, is, MCUCTL_REG_ISSR(2)); 89 mcuctl_write(is->config_index, is, MCUCTL_REG_ISSR(2));
90 90
91 mcuctl_write(param_count, is, MCUCTL_REG_ISSR(3)); 91 mcuctl_write(param_count, is, MCUCTL_REG_ISSR(3));
92 mcuctl_write(cfg->p_region_index1, is, MCUCTL_REG_ISSR(4)); 92 mcuctl_write(config->p_region_index1, is, MCUCTL_REG_ISSR(4));
93 mcuctl_write(cfg->p_region_index2, is, MCUCTL_REG_ISSR(5)); 93 mcuctl_write(config->p_region_index2, is, MCUCTL_REG_ISSR(5));
94 94
95 fimc_is_hw_set_intgr0_gd0(is); 95 fimc_is_hw_set_intgr0_gd0(is);
96 return 0; 96 return 0;
@@ -174,10 +174,10 @@ int fimc_is_hw_change_mode(struct fimc_is *is)
174 HIC_CAPTURE_STILL, HIC_CAPTURE_VIDEO, 174 HIC_CAPTURE_STILL, HIC_CAPTURE_VIDEO,
175 }; 175 };
176 176
177 if (WARN_ON(is->scenario_id > ARRAY_SIZE(cmd))) 177 if (WARN_ON(is->config_index > ARRAY_SIZE(cmd)))
178 return -EINVAL; 178 return -EINVAL;
179 179
180 mcuctl_write(cmd[is->scenario_id], is, MCUCTL_REG_ISSR(0)); 180 mcuctl_write(cmd[is->config_index], is, MCUCTL_REG_ISSR(0));
181 mcuctl_write(is->sensor_index, is, MCUCTL_REG_ISSR(1)); 181 mcuctl_write(is->sensor_index, is, MCUCTL_REG_ISSR(1));
182 mcuctl_write(is->setfile.sub_index, is, MCUCTL_REG_ISSR(2)); 182 mcuctl_write(is->setfile.sub_index, is, MCUCTL_REG_ISSR(2));
183 fimc_is_hw_set_intgr0_gd0(is); 183 fimc_is_hw_set_intgr0_gd0(is);
@@ -238,6 +238,6 @@ int fimc_is_itf_mode_change(struct fimc_is *is)
238 FIMC_IS_CONFIG_TIMEOUT); 238 FIMC_IS_CONFIG_TIMEOUT);
239 if (!ret < 0) 239 if (!ret < 0)
240 dev_err(&is->pdev->dev, "%s(): mode change (%d) timeout\n", 240 dev_err(&is->pdev->dev, "%s(): mode change (%d) timeout\n",
241 __func__, is->scenario_id); 241 __func__, is->config_index);
242 return ret; 242 return ret;
243} 243}
diff --git a/drivers/media/platform/exynos4-is/fimc-is.c b/drivers/media/platform/exynos4-is/fimc-is.c
index 10ec173d1254..3c81c882bfd1 100644
--- a/drivers/media/platform/exynos4-is/fimc-is.c
+++ b/drivers/media/platform/exynos4-is/fimc-is.c
@@ -530,8 +530,8 @@ static void fimc_is_general_irq_handler(struct fimc_is *is)
530 break; 530 break;
531 531
532 case HIC_SET_PARAMETER: 532 case HIC_SET_PARAMETER:
533 is->cfg_param[is->scenario_id].p_region_index1 = 0; 533 is->config[is->config_index].p_region_index1 = 0;
534 is->cfg_param[is->scenario_id].p_region_index2 = 0; 534 is->config[is->config_index].p_region_index2 = 0;
535 set_bit(IS_ST_BLOCK_CMD_CLEARED, &is->state); 535 set_bit(IS_ST_BLOCK_CMD_CLEARED, &is->state);
536 pr_debug("HIC_SET_PARAMETER\n"); 536 pr_debug("HIC_SET_PARAMETER\n");
537 break; 537 break;
@@ -590,8 +590,8 @@ static void fimc_is_general_irq_handler(struct fimc_is *is)
590 590
591 switch (is->i2h_cmd.args[0]) { 591 switch (is->i2h_cmd.args[0]) {
592 case HIC_SET_PARAMETER: 592 case HIC_SET_PARAMETER:
593 is->cfg_param[is->scenario_id].p_region_index1 = 0; 593 is->config[is->config_index].p_region_index1 = 0;
594 is->cfg_param[is->scenario_id].p_region_index2 = 0; 594 is->config[is->config_index].p_region_index2 = 0;
595 set_bit(IS_ST_BLOCK_CMD_CLEARED, &is->state); 595 set_bit(IS_ST_BLOCK_CMD_CLEARED, &is->state);
596 break; 596 break;
597 } 597 }
@@ -656,7 +656,7 @@ static int fimc_is_hw_open_sensor(struct fimc_is *is,
656 656
657int fimc_is_hw_initialize(struct fimc_is *is) 657int fimc_is_hw_initialize(struct fimc_is *is)
658{ 658{
659 const int scenario_ids[] = { 659 const int config_ids[] = {
660 IS_SC_PREVIEW_STILL, IS_SC_PREVIEW_VIDEO, 660 IS_SC_PREVIEW_STILL, IS_SC_PREVIEW_VIDEO,
661 IS_SC_CAPTURE_STILL, IS_SC_CAPTURE_VIDEO 661 IS_SC_CAPTURE_STILL, IS_SC_CAPTURE_VIDEO
662 }; 662 };
@@ -718,23 +718,23 @@ int fimc_is_hw_initialize(struct fimc_is *is)
718 } 718 }
719 719
720 /* Preserve previous mode. */ 720 /* Preserve previous mode. */
721 prev_id = is->scenario_id; 721 prev_id = is->config_index;
722 722
723 /* Set initial parameter values. */ 723 /* Set initial parameter values. */
724 for (i = 0; i < ARRAY_SIZE(scenario_ids); i++) { 724 for (i = 0; i < ARRAY_SIZE(config_ids); i++) {
725 is->scenario_id = scenario_ids[i]; 725 is->config_index = config_ids[i];
726 fimc_is_set_initial_params(is); 726 fimc_is_set_initial_params(is);
727 ret = fimc_is_itf_s_param(is, true); 727 ret = fimc_is_itf_s_param(is, true);
728 if (ret < 0) { 728 if (ret < 0) {
729 is->scenario_id = prev_id; 729 is->config_index = prev_id;
730 return ret; 730 return ret;
731 } 731 }
732 } 732 }
733 is->scenario_id = prev_id; 733 is->config_index = prev_id;
734 734
735 set_bit(IS_ST_INIT_DONE, &is->state); 735 set_bit(IS_ST_INIT_DONE, &is->state);
736 dev_info(dev, "initialization sequence completed (%d)\n", 736 dev_info(dev, "initialization sequence completed (%d)\n",
737 is->scenario_id); 737 is->config_index);
738 return 0; 738 return 0;
739} 739}
740 740
diff --git a/drivers/media/platform/exynos4-is/fimc-is.h b/drivers/media/platform/exynos4-is/fimc-is.h
index 9406894f306d..f5275a5b0156 100644
--- a/drivers/media/platform/exynos4-is/fimc-is.h
+++ b/drivers/media/platform/exynos4-is/fimc-is.h
@@ -219,7 +219,7 @@ struct fimc_is_setfile {
219 u32 base; 219 u32 base;
220}; 220};
221 221
222struct is_config_param { 222struct chain_config {
223 struct global_param global; 223 struct global_param global;
224 struct sensor_param sensor; 224 struct sensor_param sensor;
225 struct isp_param isp; 225 struct isp_param isp;
@@ -279,12 +279,13 @@ struct fimc_is {
279 struct h2i_cmd h2i_cmd; 279 struct h2i_cmd h2i_cmd;
280 struct is_fd_result_header fd_header; 280 struct is_fd_result_header fd_header;
281 281
282 struct is_config_param cfg_param[IS_SC_MAX]; 282 struct chain_config config[IS_SC_MAX];
283 unsigned config_index;
284
283 struct is_region *is_p_region; 285 struct is_region *is_p_region;
284 dma_addr_t is_dma_p_region; 286 dma_addr_t is_dma_p_region;
285 struct is_share_region *is_shared_region; 287 struct is_share_region *is_shared_region;
286 struct is_af_info af; 288 struct is_af_info af;
287 u32 scenario_id;
288 289
289 struct dentry *debugfs_entry; 290 struct dentry *debugfs_entry;
290}; 291};
@@ -301,7 +302,7 @@ static inline void fimc_is_mem_barrier(void)
301 302
302static inline void fimc_is_set_param_bit(struct fimc_is *is, int num) 303static inline void fimc_is_set_param_bit(struct fimc_is *is, int num)
303{ 304{
304 struct is_config_param *cfg = &is->cfg_param[is->scenario_id]; 305 struct chain_config *cfg = &is->config[is->config_index];
305 306
306 if (num >= 32) 307 if (num >= 32)
307 set_bit(num - 32, &cfg->p_region_index2); 308 set_bit(num - 32, &cfg->p_region_index2);
diff --git a/drivers/media/platform/exynos4-is/fimc-isp.c b/drivers/media/platform/exynos4-is/fimc-isp.c
index b11c001ad388..7b8fbabe3556 100644
--- a/drivers/media/platform/exynos4-is/fimc-isp.c
+++ b/drivers/media/platform/exynos4-is/fimc-isp.c
@@ -236,7 +236,7 @@ static int fimc_isp_subdev_s_stream(struct v4l2_subdev *sd, int on)
236 } 236 }
237 237
238 v4l2_dbg(1, debug, sd, "changing mode to %d\n", 238 v4l2_dbg(1, debug, sd, "changing mode to %d\n",
239 is->scenario_id); 239 is->config_index);
240 ret = fimc_is_itf_mode_change(is); 240 ret = fimc_is_itf_mode_change(is);
241 if (ret) 241 if (ret)
242 return -EINVAL; 242 return -EINVAL;
@@ -317,8 +317,8 @@ static int fimc_isp_subdev_s_power(struct v4l2_subdev *sd, int on)
317 clear_bit(IS_ST_PWR_ON, &is->state); 317 clear_bit(IS_ST_PWR_ON, &is->state);
318 clear_bit(IS_ST_INIT_DONE, &is->state); 318 clear_bit(IS_ST_INIT_DONE, &is->state);
319 is->state = 0; 319 is->state = 0;
320 is->cfg_param[is->scenario_id].p_region_index1 = 0; 320 is->config[is->config_index].p_region_index1 = 0;
321 is->cfg_param[is->scenario_id].p_region_index2 = 0; 321 is->config[is->config_index].p_region_index2 = 0;
322 set_bit(IS_ST_IDLE, &is->state); 322 set_bit(IS_ST_IDLE, &is->state);
323 wmb(); 323 wmb();
324 } 324 }