Lines Matching refs:tc6393xb
88 struct tc6393xb { struct
122 struct tc6393xb *tc6393xb = dev_get_drvdata(nand->dev.parent); in tc6393xb_nand_enable() argument
125 raw_spin_lock_irqsave(&tc6393xb->lock, flags); in tc6393xb_nand_enable()
129 tmio_iowrite8(0xff, tc6393xb->scr + SCR_GPI_BCR(1)); in tc6393xb_nand_enable()
131 raw_spin_unlock_irqrestore(&tc6393xb->lock, flags); in tc6393xb_nand_enable()
220 struct tc6393xb *tc6393xb = dev_get_drvdata(dev->dev.parent); in tc6393xb_ohci_enable() local
225 raw_spin_lock_irqsave(&tc6393xb->lock, flags); in tc6393xb_ohci_enable()
227 ccr = tmio_ioread16(tc6393xb->scr + SCR_CCR); in tc6393xb_ohci_enable()
229 tmio_iowrite16(ccr, tc6393xb->scr + SCR_CCR); in tc6393xb_ohci_enable()
231 fer = tmio_ioread8(tc6393xb->scr + SCR_FER); in tc6393xb_ohci_enable()
233 tmio_iowrite8(fer, tc6393xb->scr + SCR_FER); in tc6393xb_ohci_enable()
235 raw_spin_unlock_irqrestore(&tc6393xb->lock, flags); in tc6393xb_ohci_enable()
242 struct tc6393xb *tc6393xb = dev_get_drvdata(dev->dev.parent); in tc6393xb_ohci_disable() local
247 raw_spin_lock_irqsave(&tc6393xb->lock, flags); in tc6393xb_ohci_disable()
249 fer = tmio_ioread8(tc6393xb->scr + SCR_FER); in tc6393xb_ohci_disable()
251 tmio_iowrite8(fer, tc6393xb->scr + SCR_FER); in tc6393xb_ohci_disable()
253 ccr = tmio_ioread16(tc6393xb->scr + SCR_CCR); in tc6393xb_ohci_disable()
255 tmio_iowrite16(ccr, tc6393xb->scr + SCR_CCR); in tc6393xb_ohci_disable()
257 raw_spin_unlock_irqrestore(&tc6393xb->lock, flags); in tc6393xb_ohci_disable()
275 struct tc6393xb *tc6393xb = dev_get_drvdata(dev->dev.parent); in tc6393xb_fb_enable() local
279 raw_spin_lock_irqsave(&tc6393xb->lock, flags); in tc6393xb_fb_enable()
281 ccr = tmio_ioread16(tc6393xb->scr + SCR_CCR); in tc6393xb_fb_enable()
284 tmio_iowrite16(ccr, tc6393xb->scr + SCR_CCR); in tc6393xb_fb_enable()
286 raw_spin_unlock_irqrestore(&tc6393xb->lock, flags); in tc6393xb_fb_enable()
293 struct tc6393xb *tc6393xb = dev_get_drvdata(dev->dev.parent); in tc6393xb_fb_disable() local
297 raw_spin_lock_irqsave(&tc6393xb->lock, flags); in tc6393xb_fb_disable()
299 ccr = tmio_ioread16(tc6393xb->scr + SCR_CCR); in tc6393xb_fb_disable()
302 tmio_iowrite16(ccr, tc6393xb->scr + SCR_CCR); in tc6393xb_fb_disable()
304 raw_spin_unlock_irqrestore(&tc6393xb->lock, flags); in tc6393xb_fb_disable()
311 struct tc6393xb *tc6393xb = dev_get_drvdata(fb->dev.parent); in tc6393xb_lcd_set_power() local
315 raw_spin_lock_irqsave(&tc6393xb->lock, flags); in tc6393xb_lcd_set_power()
317 fer = ioread8(tc6393xb->scr + SCR_FER); in tc6393xb_lcd_set_power()
322 iowrite8(fer, tc6393xb->scr + SCR_FER); in tc6393xb_lcd_set_power()
324 raw_spin_unlock_irqrestore(&tc6393xb->lock, flags); in tc6393xb_lcd_set_power()
332 struct tc6393xb *tc6393xb = dev_get_drvdata(fb->dev.parent); in tc6393xb_lcd_mode() local
335 raw_spin_lock_irqsave(&tc6393xb->lock, flags); in tc6393xb_lcd_mode()
337 iowrite16(mode->pixclock, tc6393xb->scr + SCR_PLL1CR + 0); in tc6393xb_lcd_mode()
338 iowrite16(mode->pixclock >> 16, tc6393xb->scr + SCR_PLL1CR + 2); in tc6393xb_lcd_mode()
340 raw_spin_unlock_irqrestore(&tc6393xb->lock, flags); in tc6393xb_lcd_mode()
348 struct tc6393xb *tc6393xb = dev_get_drvdata(mmc->dev.parent); in tc6393xb_mmc_enable() local
350 tmio_core_mmc_enable(tc6393xb->scr + 0x200, 0, in tc6393xb_mmc_enable()
358 struct tc6393xb *tc6393xb = dev_get_drvdata(mmc->dev.parent); in tc6393xb_mmc_resume() local
360 tmio_core_mmc_resume(tc6393xb->scr + 0x200, 0, in tc6393xb_mmc_resume()
368 struct tc6393xb *tc6393xb = dev_get_drvdata(mmc->dev.parent); in tc6393xb_mmc_pwr() local
370 tmio_core_mmc_pwr(tc6393xb->scr + 0x200, 0, state); in tc6393xb_mmc_pwr()
375 struct tc6393xb *tc6393xb = dev_get_drvdata(mmc->dev.parent); in tc6393xb_mmc_clk_div() local
377 tmio_core_mmc_clk_div(tc6393xb->scr + 0x200, 0, state); in tc6393xb_mmc_clk_div()
427 struct tc6393xb *tc6393xb = gpiochip_get_data(chip); in tc6393xb_gpio_get() local
430 return !!(tmio_ioread8(tc6393xb->scr + SCR_GPO_DSR(offset / 8)) in tc6393xb_gpio_get()
437 struct tc6393xb *tc6393xb = gpiochip_get_data(chip); in __tc6393xb_gpio_set() local
440 dsr = tmio_ioread8(tc6393xb->scr + SCR_GPO_DSR(offset / 8)); in __tc6393xb_gpio_set()
446 tmio_iowrite8(dsr, tc6393xb->scr + SCR_GPO_DSR(offset / 8)); in __tc6393xb_gpio_set()
452 struct tc6393xb *tc6393xb = gpiochip_get_data(chip); in tc6393xb_gpio_set() local
455 raw_spin_lock_irqsave(&tc6393xb->lock, flags); in tc6393xb_gpio_set()
459 raw_spin_unlock_irqrestore(&tc6393xb->lock, flags); in tc6393xb_gpio_set()
465 struct tc6393xb *tc6393xb = gpiochip_get_data(chip); in tc6393xb_gpio_direction_input() local
469 raw_spin_lock_irqsave(&tc6393xb->lock, flags); in tc6393xb_gpio_direction_input()
471 doecr = tmio_ioread8(tc6393xb->scr + SCR_GPO_DOECR(offset / 8)); in tc6393xb_gpio_direction_input()
473 tmio_iowrite8(doecr, tc6393xb->scr + SCR_GPO_DOECR(offset / 8)); in tc6393xb_gpio_direction_input()
475 raw_spin_unlock_irqrestore(&tc6393xb->lock, flags); in tc6393xb_gpio_direction_input()
483 struct tc6393xb *tc6393xb = gpiochip_get_data(chip); in tc6393xb_gpio_direction_output() local
487 raw_spin_lock_irqsave(&tc6393xb->lock, flags); in tc6393xb_gpio_direction_output()
491 doecr = tmio_ioread8(tc6393xb->scr + SCR_GPO_DOECR(offset / 8)); in tc6393xb_gpio_direction_output()
493 tmio_iowrite8(doecr, tc6393xb->scr + SCR_GPO_DOECR(offset / 8)); in tc6393xb_gpio_direction_output()
495 raw_spin_unlock_irqrestore(&tc6393xb->lock, flags); in tc6393xb_gpio_direction_output()
500 static int tc6393xb_register_gpio(struct tc6393xb *tc6393xb, int gpio_base) in tc6393xb_register_gpio() argument
502 tc6393xb->gpio.label = "tc6393xb"; in tc6393xb_register_gpio()
503 tc6393xb->gpio.base = gpio_base; in tc6393xb_register_gpio()
504 tc6393xb->gpio.ngpio = 16; in tc6393xb_register_gpio()
505 tc6393xb->gpio.set = tc6393xb_gpio_set; in tc6393xb_register_gpio()
506 tc6393xb->gpio.get = tc6393xb_gpio_get; in tc6393xb_register_gpio()
507 tc6393xb->gpio.direction_input = tc6393xb_gpio_direction_input; in tc6393xb_register_gpio()
508 tc6393xb->gpio.direction_output = tc6393xb_gpio_direction_output; in tc6393xb_register_gpio()
510 return gpiochip_add_data(&tc6393xb->gpio, tc6393xb); in tc6393xb_register_gpio()
517 struct tc6393xb *tc6393xb = irq_desc_get_handler_data(desc); in tc6393xb_irq() local
521 irq_base = tc6393xb->irq_base; in tc6393xb_irq()
523 while ((isr = tmio_ioread8(tc6393xb->scr + SCR_ISR) & in tc6393xb_irq()
524 ~tmio_ioread8(tc6393xb->scr + SCR_IMR))) in tc6393xb_irq()
537 struct tc6393xb *tc6393xb = irq_data_get_irq_chip_data(data); in tc6393xb_irq_mask() local
541 raw_spin_lock_irqsave(&tc6393xb->lock, flags); in tc6393xb_irq_mask()
542 imr = tmio_ioread8(tc6393xb->scr + SCR_IMR); in tc6393xb_irq_mask()
543 imr |= 1 << (data->irq - tc6393xb->irq_base); in tc6393xb_irq_mask()
544 tmio_iowrite8(imr, tc6393xb->scr + SCR_IMR); in tc6393xb_irq_mask()
545 raw_spin_unlock_irqrestore(&tc6393xb->lock, flags); in tc6393xb_irq_mask()
550 struct tc6393xb *tc6393xb = irq_data_get_irq_chip_data(data); in tc6393xb_irq_unmask() local
554 raw_spin_lock_irqsave(&tc6393xb->lock, flags); in tc6393xb_irq_unmask()
555 imr = tmio_ioread8(tc6393xb->scr + SCR_IMR); in tc6393xb_irq_unmask()
556 imr &= ~(1 << (data->irq - tc6393xb->irq_base)); in tc6393xb_irq_unmask()
557 tmio_iowrite8(imr, tc6393xb->scr + SCR_IMR); in tc6393xb_irq_unmask()
558 raw_spin_unlock_irqrestore(&tc6393xb->lock, flags); in tc6393xb_irq_unmask()
570 struct tc6393xb *tc6393xb = platform_get_drvdata(dev); in tc6393xb_attach_irq() local
573 irq_base = tc6393xb->irq_base; in tc6393xb_attach_irq()
577 irq_set_chip_data(irq, tc6393xb); in tc6393xb_attach_irq()
581 irq_set_irq_type(tc6393xb->irq, IRQ_TYPE_EDGE_FALLING); in tc6393xb_attach_irq()
582 irq_set_chained_handler_and_data(tc6393xb->irq, tc6393xb_irq, in tc6393xb_attach_irq()
583 tc6393xb); in tc6393xb_attach_irq()
588 struct tc6393xb *tc6393xb = platform_get_drvdata(dev); in tc6393xb_detach_irq() local
591 irq_set_chained_handler_and_data(tc6393xb->irq, NULL, NULL); in tc6393xb_detach_irq()
593 irq_base = tc6393xb->irq_base; in tc6393xb_detach_irq()
607 struct tc6393xb *tc6393xb; in tc6393xb_probe() local
615 tc6393xb = kzalloc(sizeof *tc6393xb, GFP_KERNEL); in tc6393xb_probe()
616 if (!tc6393xb) { in tc6393xb_probe()
621 raw_spin_lock_init(&tc6393xb->lock); in tc6393xb_probe()
623 platform_set_drvdata(dev, tc6393xb); in tc6393xb_probe()
627 tc6393xb->irq = ret; in tc6393xb_probe()
631 tc6393xb->iomem = iomem; in tc6393xb_probe()
632 tc6393xb->irq_base = tcpd->irq_base; in tc6393xb_probe()
634 tc6393xb->clk = clk_get(&dev->dev, "CLK_CK3P6MI"); in tc6393xb_probe()
635 if (IS_ERR(tc6393xb->clk)) { in tc6393xb_probe()
636 ret = PTR_ERR(tc6393xb->clk); in tc6393xb_probe()
640 rscr = &tc6393xb->rscr; in tc6393xb_probe()
650 tc6393xb->scr = ioremap(rscr->start, resource_size(rscr)); in tc6393xb_probe()
651 if (!tc6393xb->scr) { in tc6393xb_probe()
656 ret = clk_prepare_enable(tc6393xb->clk); in tc6393xb_probe()
664 iowrite8(0, tc6393xb->scr + SCR_FER); in tc6393xb_probe()
665 iowrite16(tcpd->scr_pll2cr, tc6393xb->scr + SCR_PLL2CR); in tc6393xb_probe()
667 tc6393xb->scr + SCR_CCR); in tc6393xb_probe()
670 BIT(15), tc6393xb->scr + SCR_MCR); in tc6393xb_probe()
671 iowrite16(tcpd->scr_gper, tc6393xb->scr + SCR_GPER); in tc6393xb_probe()
672 iowrite8(0, tc6393xb->scr + SCR_IRR); in tc6393xb_probe()
673 iowrite8(0xbf, tc6393xb->scr + SCR_IMR); in tc6393xb_probe()
676 tmio_ioread8(tc6393xb->scr + SCR_REVID), in tc6393xb_probe()
677 (unsigned long) iomem->start, tc6393xb->irq); in tc6393xb_probe()
679 tc6393xb->gpio.base = -1; in tc6393xb_probe()
682 ret = tc6393xb_register_gpio(tc6393xb, tcpd->gpio_base); in tc6393xb_probe()
715 if (tc6393xb->gpio.base != -1) in tc6393xb_probe()
716 gpiochip_remove(&tc6393xb->gpio); in tc6393xb_probe()
719 clk_disable_unprepare(tc6393xb->clk); in tc6393xb_probe()
721 iounmap(tc6393xb->scr); in tc6393xb_probe()
723 release_resource(&tc6393xb->rscr); in tc6393xb_probe()
725 clk_put(tc6393xb->clk); in tc6393xb_probe()
728 kfree(tc6393xb); in tc6393xb_probe()
736 struct tc6393xb *tc6393xb = platform_get_drvdata(dev); in tc6393xb_remove() local
746 if (tc6393xb->gpio.base != -1) in tc6393xb_remove()
747 gpiochip_remove(&tc6393xb->gpio); in tc6393xb_remove()
750 clk_disable_unprepare(tc6393xb->clk); in tc6393xb_remove()
751 iounmap(tc6393xb->scr); in tc6393xb_remove()
752 release_resource(&tc6393xb->rscr); in tc6393xb_remove()
753 clk_put(tc6393xb->clk); in tc6393xb_remove()
754 kfree(tc6393xb); in tc6393xb_remove()
763 struct tc6393xb *tc6393xb = platform_get_drvdata(dev); in tc6393xb_suspend() local
766 tc6393xb->suspend_state.ccr = ioread16(tc6393xb->scr + SCR_CCR); in tc6393xb_suspend()
767 tc6393xb->suspend_state.fer = ioread8(tc6393xb->scr + SCR_FER); in tc6393xb_suspend()
770 tc6393xb->suspend_state.gpo_dsr[i] = in tc6393xb_suspend()
771 ioread8(tc6393xb->scr + SCR_GPO_DSR(i)); in tc6393xb_suspend()
772 tc6393xb->suspend_state.gpo_doecr[i] = in tc6393xb_suspend()
773 ioread8(tc6393xb->scr + SCR_GPO_DOECR(i)); in tc6393xb_suspend()
774 tc6393xb->suspend_state.gpi_bcr[i] = in tc6393xb_suspend()
775 ioread8(tc6393xb->scr + SCR_GPI_BCR(i)); in tc6393xb_suspend()
778 clk_disable_unprepare(tc6393xb->clk); in tc6393xb_suspend()
786 struct tc6393xb *tc6393xb = platform_get_drvdata(dev); in tc6393xb_resume() local
790 ret = clk_prepare_enable(tc6393xb->clk); in tc6393xb_resume()
801 iowrite8(tc6393xb->suspend_state.fer, tc6393xb->scr + SCR_FER); in tc6393xb_resume()
802 iowrite16(tcpd->scr_pll2cr, tc6393xb->scr + SCR_PLL2CR); in tc6393xb_resume()
803 iowrite16(tc6393xb->suspend_state.ccr, tc6393xb->scr + SCR_CCR); in tc6393xb_resume()
806 BIT(15), tc6393xb->scr + SCR_MCR); in tc6393xb_resume()
807 iowrite16(tcpd->scr_gper, tc6393xb->scr + SCR_GPER); in tc6393xb_resume()
808 iowrite8(0, tc6393xb->scr + SCR_IRR); in tc6393xb_resume()
809 iowrite8(0xbf, tc6393xb->scr + SCR_IMR); in tc6393xb_resume()
812 iowrite8(tc6393xb->suspend_state.gpo_dsr[i], in tc6393xb_resume()
813 tc6393xb->scr + SCR_GPO_DSR(i)); in tc6393xb_resume()
814 iowrite8(tc6393xb->suspend_state.gpo_doecr[i], in tc6393xb_resume()
815 tc6393xb->scr + SCR_GPO_DOECR(i)); in tc6393xb_resume()
816 iowrite8(tc6393xb->suspend_state.gpi_bcr[i], in tc6393xb_resume()
817 tc6393xb->scr + SCR_GPI_BCR(i)); in tc6393xb_resume()