Lines Matching defs:mcam

36 #include "mcam-core.h"
50 struct mcam_camera mcam;
57 * Most of the camera controller registers are defined in mcam-core.h,
142 static int cafe_smbus_write_done(struct mcam_camera *mcam)
153 spin_lock_irqsave(&mcam->dev_lock, flags);
154 c1 = mcam_reg_read(mcam, REG_TWSIC1);
155 spin_unlock_irqrestore(&mcam->dev_lock, flags);
164 struct mcam_camera *mcam = &cam->mcam;
166 spin_lock_irqsave(&mcam->dev_lock, flags);
173 mcam_reg_write(mcam, REG_TWSIC0, rval);
174 (void) mcam_reg_read(mcam, REG_TWSIC1); /* force write */
176 mcam_reg_write(mcam, REG_TWSIC1, rval);
177 spin_unlock_irqrestore(&mcam->dev_lock, flags);
197 wait_event_timeout(cam->smbus_wait, cafe_smbus_write_done(mcam),
200 spin_lock_irqsave(&mcam->dev_lock, flags);
201 rval = mcam_reg_read(mcam, REG_TWSIC1);
202 spin_unlock_irqrestore(&mcam->dev_lock, flags);
219 static int cafe_smbus_read_done(struct mcam_camera *mcam)
230 spin_lock_irqsave(&mcam->dev_lock, flags);
231 c1 = mcam_reg_read(mcam, REG_TWSIC1);
232 spin_unlock_irqrestore(&mcam->dev_lock, flags);
243 struct mcam_camera *mcam = &cam->mcam;
245 spin_lock_irqsave(&mcam->dev_lock, flags);
252 mcam_reg_write(mcam, REG_TWSIC0, rval);
253 (void) mcam_reg_read(mcam, REG_TWSIC1); /* force write */
255 mcam_reg_write(mcam, REG_TWSIC1, rval);
256 spin_unlock_irqrestore(&mcam->dev_lock, flags);
259 cafe_smbus_read_done(mcam), CAFE_SMBUS_TIMEOUT);
260 spin_lock_irqsave(&mcam->dev_lock, flags);
261 rval = mcam_reg_read(mcam, REG_TWSIC1);
262 spin_unlock_irqrestore(&mcam->dev_lock, flags);
309 spin_lock_irqsave(&cam->mcam.dev_lock, flags);
310 mcam_reg_set_bit(&cam->mcam, REG_IRQMASK, TWSIIRQS);
311 spin_unlock_irqrestore(&cam->mcam.dev_lock, flags);
361 static void cafe_ctlr_init(struct mcam_camera *mcam)
365 spin_lock_irqsave(&mcam->dev_lock, flags);
369 mcam_reg_write(mcam, 0x3038, 0x8);
370 mcam_reg_write(mcam, 0x315c, 0x80008);
377 mcam_reg_write(mcam, REG_GL_CSR, GCSR_SRS|GCSR_MRS); /* Needed? */
378 mcam_reg_write(mcam, REG_GL_CSR, GCSR_SRC|GCSR_MRC);
379 mcam_reg_write(mcam, REG_GL_CSR, GCSR_SRC|GCSR_MRS);
383 spin_unlock_irqrestore(&mcam->dev_lock, flags);
385 spin_lock_irqsave(&mcam->dev_lock, flags);
387 mcam_reg_write(mcam, REG_GL_CSR, GCSR_CCIC_EN|GCSR_SRC|GCSR_MRC);
388 mcam_reg_set_bit(mcam, REG_GL_IMASK, GIMSK_CCIC_EN);
392 mcam_reg_write(mcam, REG_IRQMASK, 0);
393 spin_unlock_irqrestore(&mcam->dev_lock, flags);
397 static int cafe_ctlr_power_up(struct mcam_camera *mcam)
403 mcam_reg_write(mcam, REG_GL_FCR, GFCR_GPIO_ON);
404 mcam_reg_write(mcam, REG_GL_GPIOR, GGPIO_OUT|GGPIO_VAL);
410 mcam_reg_write(mcam, REG_GPR, GPR_C1EN|GPR_C0EN); /* pwr up, reset */
411 mcam_reg_write(mcam, REG_GPR, GPR_C1EN|GPR_C0EN|GPR_C0);
416 static void cafe_ctlr_power_down(struct mcam_camera *mcam)
418 mcam_reg_write(mcam, REG_GPR, GPR_C1EN|GPR_C0EN|GPR_C1);
419 mcam_reg_write(mcam, REG_GL_FCR, GFCR_GPIO_ON);
420 mcam_reg_write(mcam, REG_GL_GPIOR, GGPIO_OUT);
431 struct mcam_camera *mcam = &cam->mcam;
434 spin_lock(&mcam->dev_lock);
435 irqs = mcam_reg_read(mcam, REG_IRQSTAT);
436 handled = cam->registered && mccic_irq(mcam, irqs);
438 mcam_reg_write(mcam, REG_IRQSTAT, TWSIIRQS);
442 spin_unlock(&mcam->dev_lock);
480 struct mcam_camera *mcam;
493 mcam = &cam->mcam;
494 mcam->chip_id = MCAM_CAFE;
495 spin_lock_init(&mcam->dev_lock);
497 mcam->plat_power_up = cafe_ctlr_power_up;
498 mcam->plat_power_down = cafe_ctlr_power_down;
499 mcam->dev = &pdev->dev;
505 mcam->buffer_mode = B_vmalloc;
515 mcam->regs = pci_iomap(pdev, 0, 0);
516 if (!mcam->regs) {
520 mcam->regs_size = pci_resource_len(pdev, 0);
528 cafe_ctlr_init(mcam);
539 ret = v4l2_device_register(mcam->dev, &mcam->v4l2_dev);
543 v4l2_async_nf_init(&mcam->notifier, &mcam->v4l2_dev);
545 asd = v4l2_async_nf_add_i2c(&mcam->notifier,
554 ret = mccic_register(mcam);
558 clkdev_create(mcam->mclk, "xclk", "%d-%04x",
571 mccic_shutdown(mcam);
573 v4l2_device_unregister(&mcam->v4l2_dev);
577 cafe_ctlr_power_down(mcam);
580 pci_iounmap(pdev, mcam->regs);
595 mccic_shutdown(&cam->mcam);
596 v4l2_device_unregister(&cam->mcam.v4l2_dev);
599 pci_iounmap(cam->pdev, cam->mcam.regs);
623 mccic_suspend(&cam->mcam);
632 cafe_ctlr_init(&cam->mcam);
633 return mccic_resume(&cam->mcam);