|
@@ -629,6 +629,22 @@ static int locomo_resume(struct platform_device *dev)
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
+
|
|
|
+#define LCM_ALC_EN 0x8000
|
|
|
+
|
|
|
+void frontlight_set(struct locomo *lchip, int duty, int vr, int bpwf)
|
|
|
+{
|
|
|
+ unsigned long flags;
|
|
|
+
|
|
|
+ spin_lock_irqsave(&lchip->lock, flags);
|
|
|
+ locomo_writel(bpwf, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALS);
|
|
|
+ udelay(100);
|
|
|
+ locomo_writel(duty, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALD);
|
|
|
+ locomo_writel(bpwf | LCM_ALC_EN, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALS);
|
|
|
+ spin_unlock_irqrestore(&lchip->lock, flags);
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* locomo_probe - probe for a single LoCoMo chip.
|
|
|
* @phys_addr: physical address of device.
|
|
@@ -688,6 +704,11 @@ __locomo_probe(struct device *me, struct resource *mem, int irq)
|
|
|
/* FrontLight */
|
|
|
locomo_writel(0, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALS);
|
|
|
locomo_writel(0, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALD);
|
|
|
+
|
|
|
+ /* Same constants can be used for collie and poodle
|
|
|
+ (depending on CONFIG options in original sharp code)? */
|
|
|
+ frontlight_set(lchip, 163, 0, 148);
|
|
|
+
|
|
|
/* Longtime timer */
|
|
|
locomo_writel(0, lchip->base + LOCOMO_LTINT);
|
|
|
/* SPI */
|