aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/common/locomo.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/common/locomo.c')
-rw-r--r--arch/arm/common/locomo.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/arch/arm/common/locomo.c b/arch/arm/common/locomo.c
index 159ad7ed7a40..d31b1cb7eea0 100644
--- a/arch/arm/common/locomo.c
+++ b/arch/arm/common/locomo.c
@@ -629,6 +629,22 @@ static int locomo_resume(struct platform_device *dev)
629} 629}
630#endif 630#endif
631 631
632
633#define LCM_ALC_EN 0x8000
634
635void frontlight_set(struct locomo *lchip, int duty, int vr, int bpwf)
636{
637 unsigned long flags;
638
639 spin_lock_irqsave(&lchip->lock, flags);
640 locomo_writel(bpwf, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALS);
641 udelay(100);
642 locomo_writel(duty, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALD);
643 locomo_writel(bpwf | LCM_ALC_EN, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALS);
644 spin_unlock_irqrestore(&lchip->lock, flags);
645}
646
647
632/** 648/**
633 * locomo_probe - probe for a single LoCoMo chip. 649 * locomo_probe - probe for a single LoCoMo chip.
634 * @phys_addr: physical address of device. 650 * @phys_addr: physical address of device.
@@ -688,6 +704,11 @@ __locomo_probe(struct device *me, struct resource *mem, int irq)
688 /* FrontLight */ 704 /* FrontLight */
689 locomo_writel(0, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALS); 705 locomo_writel(0, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALS);
690 locomo_writel(0, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALD); 706 locomo_writel(0, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALD);
707
708 /* Same constants can be used for collie and poodle
709 (depending on CONFIG options in original sharp code)? */
710 frontlight_set(lchip, 163, 0, 148);
711
691 /* Longtime timer */ 712 /* Longtime timer */
692 locomo_writel(0, lchip->base + LOCOMO_LTINT); 713 locomo_writel(0, lchip->base + LOCOMO_LTINT);
693 /* SPI */ 714 /* SPI */