static void ccdc_restore_defaults(void) { enum vpss_ccdc_source_sel source = VPSS_CCDCIN; int i; memcpy(&ccdc_cfg.bayer.config_params, &ccdc_config_defaults, sizeof(struct ccdc_config_params_raw)); dev_dbg(dev, "\nstarting ccdc_restore_defaults..."); /* Enable clock to ISIF, IPIPEIF and BL */ vpss_enable_clock(VPSS_CCDC_CLOCK, 1); vpss_enable_clock(VPSS_IPIPEIF_CLOCK, 1); vpss_enable_clock(VPSS_BL_CLOCK, 1); /* set all registers to default value */ for (i = 0; i <= 0x1f8; i += 4) regw(0, i); /* no culling support */ regw(0xffff, CULH); regw(0xff, CULV); /* Set default offset and gain */ ccdc_config_gain_offset(); vpss_select_ccdc_source(source); dev_dbg(dev, "\nEnd of ccdc_restore_defaults..."); }
/* * ccdc_restore_defaults() * This function restore power on defaults in the ccdc registers */ static int ccdc_restore_defaults(void) { int i; dev_dbg(dev, "\nstarting ccdc_restore_defaults..."); /* set all registers to zero */ for (i = 0; i <= CCDC_REG_LAST; i += 4) regw(0, i); /* now override the values with power on defaults in registers */ regw(MODESET_DEFAULT, MODESET); /* no culling support */ regw(CULH_DEFAULT, CULH); regw(CULV_DEFAULT, CULV); /* Set default Gain and Offset */ ccdc_hw_params_raw.gain.r_ye = GAIN_DEFAULT; ccdc_hw_params_raw.gain.gb_g = GAIN_DEFAULT; ccdc_hw_params_raw.gain.gr_cy = GAIN_DEFAULT; ccdc_hw_params_raw.gain.b_mg = GAIN_DEFAULT; ccdc_config_gain_offset(); regw(OUTCLIP_DEFAULT, OUTCLIP); regw(LSCCFG2_DEFAULT, LSCCFG2); /* select ccdc input */ if (vpss_select_ccdc_source(VPSS_CCDCIN)) { dev_dbg(dev, "\ncouldn't select ccdc input source"); return -EFAULT; } /* select ccdc clock */ if (vpss_enable_clock(VPSS_CCDC_CLOCK, 1) < 0) { dev_dbg(dev, "\ncouldn't enable ccdc clock"); return -EFAULT; } dev_dbg(dev, "\nEnd of ccdc_restore_defaults..."); return 0; }