Lines Matching refs:tc6393xb

91 struct tc6393xb {  struct
126 struct tc6393xb *tc6393xb = platform_get_drvdata(dev); in tc6393xb_nand_enable() local
129 spin_lock_irqsave(&tc6393xb->lock, flags); in tc6393xb_nand_enable()
133 tmio_iowrite8(0xff, tc6393xb->scr + SCR_GPI_BCR(1)); in tc6393xb_nand_enable()
135 spin_unlock_irqrestore(&tc6393xb->lock, flags); in tc6393xb_nand_enable()
224 struct tc6393xb *tc6393xb = dev_get_drvdata(dev->dev.parent); in tc6393xb_ohci_enable() local
229 spin_lock_irqsave(&tc6393xb->lock, flags); in tc6393xb_ohci_enable()
231 ccr = tmio_ioread16(tc6393xb->scr + SCR_CCR); in tc6393xb_ohci_enable()
233 tmio_iowrite16(ccr, tc6393xb->scr + SCR_CCR); in tc6393xb_ohci_enable()
235 fer = tmio_ioread8(tc6393xb->scr + SCR_FER); in tc6393xb_ohci_enable()
237 tmio_iowrite8(fer, tc6393xb->scr + SCR_FER); in tc6393xb_ohci_enable()
239 spin_unlock_irqrestore(&tc6393xb->lock, flags); in tc6393xb_ohci_enable()
246 struct tc6393xb *tc6393xb = dev_get_drvdata(dev->dev.parent); in tc6393xb_ohci_disable() local
251 spin_lock_irqsave(&tc6393xb->lock, flags); in tc6393xb_ohci_disable()
253 fer = tmio_ioread8(tc6393xb->scr + SCR_FER); in tc6393xb_ohci_disable()
255 tmio_iowrite8(fer, tc6393xb->scr + SCR_FER); in tc6393xb_ohci_disable()
257 ccr = tmio_ioread16(tc6393xb->scr + SCR_CCR); in tc6393xb_ohci_disable()
259 tmio_iowrite16(ccr, tc6393xb->scr + SCR_CCR); in tc6393xb_ohci_disable()
261 spin_unlock_irqrestore(&tc6393xb->lock, flags); in tc6393xb_ohci_disable()
279 struct tc6393xb *tc6393xb = dev_get_drvdata(dev->dev.parent); in tc6393xb_fb_enable() local
283 spin_lock_irqsave(&tc6393xb->lock, flags); in tc6393xb_fb_enable()
285 ccr = tmio_ioread16(tc6393xb->scr + SCR_CCR); in tc6393xb_fb_enable()
288 tmio_iowrite16(ccr, tc6393xb->scr + SCR_CCR); in tc6393xb_fb_enable()
290 spin_unlock_irqrestore(&tc6393xb->lock, flags); in tc6393xb_fb_enable()
297 struct tc6393xb *tc6393xb = dev_get_drvdata(dev->dev.parent); in tc6393xb_fb_disable() local
301 spin_lock_irqsave(&tc6393xb->lock, flags); in tc6393xb_fb_disable()
303 ccr = tmio_ioread16(tc6393xb->scr + SCR_CCR); in tc6393xb_fb_disable()
306 tmio_iowrite16(ccr, tc6393xb->scr + SCR_CCR); in tc6393xb_fb_disable()
308 spin_unlock_irqrestore(&tc6393xb->lock, flags); in tc6393xb_fb_disable()
316 struct tc6393xb *tc6393xb = platform_get_drvdata(dev); in tc6393xb_lcd_set_power() local
320 spin_lock_irqsave(&tc6393xb->lock, flags); in tc6393xb_lcd_set_power()
322 fer = ioread8(tc6393xb->scr + SCR_FER); in tc6393xb_lcd_set_power()
327 iowrite8(fer, tc6393xb->scr + SCR_FER); in tc6393xb_lcd_set_power()
329 spin_unlock_irqrestore(&tc6393xb->lock, flags); in tc6393xb_lcd_set_power()
338 struct tc6393xb *tc6393xb = platform_get_drvdata(dev); in tc6393xb_lcd_mode() local
341 spin_lock_irqsave(&tc6393xb->lock, flags); in tc6393xb_lcd_mode()
343 iowrite16(mode->pixclock, tc6393xb->scr + SCR_PLL1CR + 0); in tc6393xb_lcd_mode()
344 iowrite16(mode->pixclock >> 16, tc6393xb->scr + SCR_PLL1CR + 2); in tc6393xb_lcd_mode()
346 spin_unlock_irqrestore(&tc6393xb->lock, flags); in tc6393xb_lcd_mode()
355 struct tc6393xb *tc6393xb = platform_get_drvdata(dev); in tc6393xb_mmc_enable() local
357 tmio_core_mmc_enable(tc6393xb->scr + 0x200, 0, in tc6393xb_mmc_enable()
366 struct tc6393xb *tc6393xb = platform_get_drvdata(dev); in tc6393xb_mmc_resume() local
368 tmio_core_mmc_resume(tc6393xb->scr + 0x200, 0, in tc6393xb_mmc_resume()
377 struct tc6393xb *tc6393xb = platform_get_drvdata(dev); in tc6393xb_mmc_pwr() local
379 tmio_core_mmc_pwr(tc6393xb->scr + 0x200, 0, state); in tc6393xb_mmc_pwr()
385 struct tc6393xb *tc6393xb = platform_get_drvdata(dev); in tc6393xb_mmc_clk_div() local
387 tmio_core_mmc_clk_div(tc6393xb->scr + 0x200, 0, state); in tc6393xb_mmc_clk_div()
437 struct tc6393xb *tc6393xb = container_of(chip, struct tc6393xb, gpio); in tc6393xb_gpio_get() local
440 return tmio_ioread8(tc6393xb->scr + SCR_GPO_DSR(offset / 8)) in tc6393xb_gpio_get()
447 struct tc6393xb *tc6393xb = container_of(chip, struct tc6393xb, gpio); in __tc6393xb_gpio_set() local
450 dsr = tmio_ioread8(tc6393xb->scr + SCR_GPO_DSR(offset / 8)); in __tc6393xb_gpio_set()
456 tmio_iowrite8(dsr, tc6393xb->scr + SCR_GPO_DSR(offset / 8)); in __tc6393xb_gpio_set()
462 struct tc6393xb *tc6393xb = container_of(chip, struct tc6393xb, gpio); in tc6393xb_gpio_set() local
465 spin_lock_irqsave(&tc6393xb->lock, flags); in tc6393xb_gpio_set()
469 spin_unlock_irqrestore(&tc6393xb->lock, flags); in tc6393xb_gpio_set()
475 struct tc6393xb *tc6393xb = container_of(chip, struct tc6393xb, gpio); in tc6393xb_gpio_direction_input() local
479 spin_lock_irqsave(&tc6393xb->lock, flags); in tc6393xb_gpio_direction_input()
481 doecr = tmio_ioread8(tc6393xb->scr + SCR_GPO_DOECR(offset / 8)); in tc6393xb_gpio_direction_input()
483 tmio_iowrite8(doecr, tc6393xb->scr + SCR_GPO_DOECR(offset / 8)); in tc6393xb_gpio_direction_input()
485 spin_unlock_irqrestore(&tc6393xb->lock, flags); in tc6393xb_gpio_direction_input()
493 struct tc6393xb *tc6393xb = container_of(chip, struct tc6393xb, gpio); in tc6393xb_gpio_direction_output() local
497 spin_lock_irqsave(&tc6393xb->lock, flags); in tc6393xb_gpio_direction_output()
501 doecr = tmio_ioread8(tc6393xb->scr + SCR_GPO_DOECR(offset / 8)); in tc6393xb_gpio_direction_output()
503 tmio_iowrite8(doecr, tc6393xb->scr + SCR_GPO_DOECR(offset / 8)); in tc6393xb_gpio_direction_output()
505 spin_unlock_irqrestore(&tc6393xb->lock, flags); in tc6393xb_gpio_direction_output()
510 static int tc6393xb_register_gpio(struct tc6393xb *tc6393xb, int gpio_base) in tc6393xb_register_gpio() argument
512 tc6393xb->gpio.label = "tc6393xb"; in tc6393xb_register_gpio()
513 tc6393xb->gpio.base = gpio_base; in tc6393xb_register_gpio()
514 tc6393xb->gpio.ngpio = 16; in tc6393xb_register_gpio()
515 tc6393xb->gpio.set = tc6393xb_gpio_set; in tc6393xb_register_gpio()
516 tc6393xb->gpio.get = tc6393xb_gpio_get; in tc6393xb_register_gpio()
517 tc6393xb->gpio.direction_input = tc6393xb_gpio_direction_input; in tc6393xb_register_gpio()
518 tc6393xb->gpio.direction_output = tc6393xb_gpio_direction_output; in tc6393xb_register_gpio()
520 return gpiochip_add(&tc6393xb->gpio); in tc6393xb_register_gpio()
528 struct tc6393xb *tc6393xb = irq_get_handler_data(irq); in tc6393xb_irq() local
532 irq_base = tc6393xb->irq_base; in tc6393xb_irq()
534 while ((isr = tmio_ioread8(tc6393xb->scr + SCR_ISR) & in tc6393xb_irq()
535 ~tmio_ioread8(tc6393xb->scr + SCR_IMR))) in tc6393xb_irq()
548 struct tc6393xb *tc6393xb = irq_data_get_irq_chip_data(data); in tc6393xb_irq_mask() local
552 spin_lock_irqsave(&tc6393xb->lock, flags); in tc6393xb_irq_mask()
553 imr = tmio_ioread8(tc6393xb->scr + SCR_IMR); in tc6393xb_irq_mask()
554 imr |= 1 << (data->irq - tc6393xb->irq_base); in tc6393xb_irq_mask()
555 tmio_iowrite8(imr, tc6393xb->scr + SCR_IMR); in tc6393xb_irq_mask()
556 spin_unlock_irqrestore(&tc6393xb->lock, flags); in tc6393xb_irq_mask()
561 struct tc6393xb *tc6393xb = irq_data_get_irq_chip_data(data); in tc6393xb_irq_unmask() local
565 spin_lock_irqsave(&tc6393xb->lock, flags); in tc6393xb_irq_unmask()
566 imr = tmio_ioread8(tc6393xb->scr + SCR_IMR); in tc6393xb_irq_unmask()
567 imr &= ~(1 << (data->irq - tc6393xb->irq_base)); in tc6393xb_irq_unmask()
568 tmio_iowrite8(imr, tc6393xb->scr + SCR_IMR); in tc6393xb_irq_unmask()
569 spin_unlock_irqrestore(&tc6393xb->lock, flags); in tc6393xb_irq_unmask()
581 struct tc6393xb *tc6393xb = platform_get_drvdata(dev); in tc6393xb_attach_irq() local
584 irq_base = tc6393xb->irq_base; in tc6393xb_attach_irq()
588 irq_set_chip_data(irq, tc6393xb); in tc6393xb_attach_irq()
592 irq_set_irq_type(tc6393xb->irq, IRQ_TYPE_EDGE_FALLING); in tc6393xb_attach_irq()
593 irq_set_handler_data(tc6393xb->irq, tc6393xb); in tc6393xb_attach_irq()
594 irq_set_chained_handler(tc6393xb->irq, tc6393xb_irq); in tc6393xb_attach_irq()
599 struct tc6393xb *tc6393xb = platform_get_drvdata(dev); in tc6393xb_detach_irq() local
602 irq_set_chained_handler(tc6393xb->irq, NULL); in tc6393xb_detach_irq()
603 irq_set_handler_data(tc6393xb->irq, NULL); in tc6393xb_detach_irq()
605 irq_base = tc6393xb->irq_base; in tc6393xb_detach_irq()
619 struct tc6393xb *tc6393xb; in tc6393xb_probe() local
627 tc6393xb = kzalloc(sizeof *tc6393xb, GFP_KERNEL); in tc6393xb_probe()
628 if (!tc6393xb) { in tc6393xb_probe()
633 spin_lock_init(&tc6393xb->lock); in tc6393xb_probe()
635 platform_set_drvdata(dev, tc6393xb); in tc6393xb_probe()
639 tc6393xb->irq = ret; in tc6393xb_probe()
643 tc6393xb->iomem = iomem; in tc6393xb_probe()
644 tc6393xb->irq_base = tcpd->irq_base; in tc6393xb_probe()
646 tc6393xb->clk = clk_get(&dev->dev, "CLK_CK3P6MI"); in tc6393xb_probe()
647 if (IS_ERR(tc6393xb->clk)) { in tc6393xb_probe()
648 ret = PTR_ERR(tc6393xb->clk); in tc6393xb_probe()
652 rscr = &tc6393xb->rscr; in tc6393xb_probe()
662 tc6393xb->scr = ioremap(rscr->start, resource_size(rscr)); in tc6393xb_probe()
663 if (!tc6393xb->scr) { in tc6393xb_probe()
668 ret = clk_prepare_enable(tc6393xb->clk); in tc6393xb_probe()
676 iowrite8(0, tc6393xb->scr + SCR_FER); in tc6393xb_probe()
677 iowrite16(tcpd->scr_pll2cr, tc6393xb->scr + SCR_PLL2CR); in tc6393xb_probe()
679 tc6393xb->scr + SCR_CCR); in tc6393xb_probe()
682 BIT(15), tc6393xb->scr + SCR_MCR); in tc6393xb_probe()
683 iowrite16(tcpd->scr_gper, tc6393xb->scr + SCR_GPER); in tc6393xb_probe()
684 iowrite8(0, tc6393xb->scr + SCR_IRR); in tc6393xb_probe()
685 iowrite8(0xbf, tc6393xb->scr + SCR_IMR); in tc6393xb_probe()
688 tmio_ioread8(tc6393xb->scr + SCR_REVID), in tc6393xb_probe()
689 (unsigned long) iomem->start, tc6393xb->irq); in tc6393xb_probe()
691 tc6393xb->gpio.base = -1; in tc6393xb_probe()
694 ret = tc6393xb_register_gpio(tc6393xb, tcpd->gpio_base); in tc6393xb_probe()
727 if (tc6393xb->gpio.base != -1) in tc6393xb_probe()
728 gpiochip_remove(&tc6393xb->gpio); in tc6393xb_probe()
731 clk_disable_unprepare(tc6393xb->clk); in tc6393xb_probe()
733 iounmap(tc6393xb->scr); in tc6393xb_probe()
735 release_resource(&tc6393xb->rscr); in tc6393xb_probe()
737 clk_put(tc6393xb->clk); in tc6393xb_probe()
740 kfree(tc6393xb); in tc6393xb_probe()
748 struct tc6393xb *tc6393xb = platform_get_drvdata(dev); in tc6393xb_remove() local
758 if (tc6393xb->gpio.base != -1) in tc6393xb_remove()
759 gpiochip_remove(&tc6393xb->gpio); in tc6393xb_remove()
762 clk_disable_unprepare(tc6393xb->clk); in tc6393xb_remove()
763 iounmap(tc6393xb->scr); in tc6393xb_remove()
764 release_resource(&tc6393xb->rscr); in tc6393xb_remove()
765 clk_put(tc6393xb->clk); in tc6393xb_remove()
766 kfree(tc6393xb); in tc6393xb_remove()
775 struct tc6393xb *tc6393xb = platform_get_drvdata(dev); in tc6393xb_suspend() local
778 tc6393xb->suspend_state.ccr = ioread16(tc6393xb->scr + SCR_CCR); in tc6393xb_suspend()
779 tc6393xb->suspend_state.fer = ioread8(tc6393xb->scr + SCR_FER); in tc6393xb_suspend()
782 tc6393xb->suspend_state.gpo_dsr[i] = in tc6393xb_suspend()
783 ioread8(tc6393xb->scr + SCR_GPO_DSR(i)); in tc6393xb_suspend()
784 tc6393xb->suspend_state.gpo_doecr[i] = in tc6393xb_suspend()
785 ioread8(tc6393xb->scr + SCR_GPO_DOECR(i)); in tc6393xb_suspend()
786 tc6393xb->suspend_state.gpi_bcr[i] = in tc6393xb_suspend()
787 ioread8(tc6393xb->scr + SCR_GPI_BCR(i)); in tc6393xb_suspend()
790 clk_disable_unprepare(tc6393xb->clk); in tc6393xb_suspend()
798 struct tc6393xb *tc6393xb = platform_get_drvdata(dev); in tc6393xb_resume() local
802 clk_prepare_enable(tc6393xb->clk); in tc6393xb_resume()
811 iowrite8(tc6393xb->suspend_state.fer, tc6393xb->scr + SCR_FER); in tc6393xb_resume()
812 iowrite16(tcpd->scr_pll2cr, tc6393xb->scr + SCR_PLL2CR); in tc6393xb_resume()
813 iowrite16(tc6393xb->suspend_state.ccr, tc6393xb->scr + SCR_CCR); in tc6393xb_resume()
816 BIT(15), tc6393xb->scr + SCR_MCR); in tc6393xb_resume()
817 iowrite16(tcpd->scr_gper, tc6393xb->scr + SCR_GPER); in tc6393xb_resume()
818 iowrite8(0, tc6393xb->scr + SCR_IRR); in tc6393xb_resume()
819 iowrite8(0xbf, tc6393xb->scr + SCR_IMR); in tc6393xb_resume()
822 iowrite8(tc6393xb->suspend_state.gpo_dsr[i], in tc6393xb_resume()
823 tc6393xb->scr + SCR_GPO_DSR(i)); in tc6393xb_resume()
824 iowrite8(tc6393xb->suspend_state.gpo_doecr[i], in tc6393xb_resume()
825 tc6393xb->scr + SCR_GPO_DOECR(i)); in tc6393xb_resume()
826 iowrite8(tc6393xb->suspend_state.gpi_bcr[i], in tc6393xb_resume()
827 tc6393xb->scr + SCR_GPI_BCR(i)); in tc6393xb_resume()