Lines Matching refs:lchip

143 	struct locomo *lchip = irq_get_chip_data(irq);  in locomo_handler()  local
150 req = locomo_readl(lchip->base + LOCOMO_ICR) & 0x0f00; in locomo_handler()
154 irq = lchip->irq_base; in locomo_handler()
170 struct locomo *lchip = irq_data_get_irq_chip_data(d); in locomo_mask_irq() local
172 r = locomo_readl(lchip->base + LOCOMO_ICR); in locomo_mask_irq()
173 r &= ~(0x0010 << (d->irq - lchip->irq_base)); in locomo_mask_irq()
174 locomo_writel(r, lchip->base + LOCOMO_ICR); in locomo_mask_irq()
179 struct locomo *lchip = irq_data_get_irq_chip_data(d); in locomo_unmask_irq() local
181 r = locomo_readl(lchip->base + LOCOMO_ICR); in locomo_unmask_irq()
182 r |= (0x0010 << (d->irq - lchip->irq_base)); in locomo_unmask_irq()
183 locomo_writel(r, lchip->base + LOCOMO_ICR); in locomo_unmask_irq()
193 static void locomo_setup_irq(struct locomo *lchip) in locomo_setup_irq() argument
195 int irq = lchip->irq_base; in locomo_setup_irq()
200 irq_set_irq_type(lchip->irq, IRQ_TYPE_EDGE_FALLING); in locomo_setup_irq()
201 irq_set_chip_data(lchip->irq, lchip); in locomo_setup_irq()
202 irq_set_chained_handler(lchip->irq, locomo_handler); in locomo_setup_irq()
205 for ( ; irq <= lchip->irq_base + 3; irq++) { in locomo_setup_irq()
207 irq_set_chip_data(irq, lchip); in locomo_setup_irq()
221 locomo_init_one_child(struct locomo *lchip, struct locomo_dev_info *info) in locomo_init_one_child() argument
236 if (lchip->dev->dma_mask) { in locomo_init_one_child()
237 dev->dma_mask = *lchip->dev->dma_mask; in locomo_init_one_child()
243 dev->dev.parent = lchip->dev; in locomo_init_one_child()
246 dev->dev.coherent_dma_mask = lchip->dev->coherent_dma_mask; in locomo_init_one_child()
249 dev->mapbase = lchip->base + info->offset; in locomo_init_one_child()
254 dev->irq[0] = (lchip->irq_base == NO_IRQ) ? in locomo_init_one_child()
255 NO_IRQ : lchip->irq_base + info->irq[0]; in locomo_init_one_child()
277 struct locomo *lchip = platform_get_drvdata(dev); in locomo_suspend() local
285 lchip->saved_state = save; in locomo_suspend()
287 spin_lock_irqsave(&lchip->lock, flags); in locomo_suspend()
289 save->LCM_GPO = locomo_readl(lchip->base + LOCOMO_GPO); /* GPIO */ in locomo_suspend()
290 locomo_writel(0x00, lchip->base + LOCOMO_GPO); in locomo_suspend()
291 save->LCM_SPICT = locomo_readl(lchip->base + LOCOMO_SPI + LOCOMO_SPICT); /* SPI */ in locomo_suspend()
292 locomo_writel(0x40, lchip->base + LOCOMO_SPI + LOCOMO_SPICT); in locomo_suspend()
293 save->LCM_GPE = locomo_readl(lchip->base + LOCOMO_GPE); /* GPIO */ in locomo_suspend()
294 locomo_writel(0x00, lchip->base + LOCOMO_GPE); in locomo_suspend()
295 save->LCM_ASD = locomo_readl(lchip->base + LOCOMO_ASD); /* ADSTART */ in locomo_suspend()
296 locomo_writel(0x00, lchip->base + LOCOMO_ASD); in locomo_suspend()
297 save->LCM_SPIMD = locomo_readl(lchip->base + LOCOMO_SPI + LOCOMO_SPIMD); /* SPI */ in locomo_suspend()
298 locomo_writel(0x3C14, lchip->base + LOCOMO_SPI + LOCOMO_SPIMD); in locomo_suspend()
300 locomo_writel(0x00, lchip->base + LOCOMO_PAIF); in locomo_suspend()
301 locomo_writel(0x00, lchip->base + LOCOMO_DAC); in locomo_suspend()
302 locomo_writel(0x00, lchip->base + LOCOMO_BACKLIGHT + LOCOMO_TC); in locomo_suspend()
304 …if ((locomo_readl(lchip->base + LOCOMO_LED + LOCOMO_LPT0) & 0x88) && (locomo_readl(lchip->base + L… in locomo_suspend()
305 locomo_writel(0x00, lchip->base + LOCOMO_C32K); /* CLK32 off */ in locomo_suspend()
308 locomo_writel(0xc1, lchip->base + LOCOMO_C32K); /* CLK32 on */ in locomo_suspend()
310 locomo_writel(0x00, lchip->base + LOCOMO_TADC); /* 18MHz clock off*/ in locomo_suspend()
311 locomo_writel(0x00, lchip->base + LOCOMO_AUDIO + LOCOMO_ACC); /* 22MHz/24MHz clock off */ in locomo_suspend()
312 locomo_writel(0x00, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALS); /* FL */ in locomo_suspend()
314 spin_unlock_irqrestore(&lchip->lock, flags); in locomo_suspend()
321 struct locomo *lchip = platform_get_drvdata(dev); in locomo_resume() local
326 save = lchip->saved_state; in locomo_resume()
330 spin_lock_irqsave(&lchip->lock, flags); in locomo_resume()
332 locomo_writel(save->LCM_GPO, lchip->base + LOCOMO_GPO); in locomo_resume()
333 locomo_writel(save->LCM_SPICT, lchip->base + LOCOMO_SPI + LOCOMO_SPICT); in locomo_resume()
334 locomo_writel(save->LCM_GPE, lchip->base + LOCOMO_GPE); in locomo_resume()
335 locomo_writel(save->LCM_ASD, lchip->base + LOCOMO_ASD); in locomo_resume()
336 locomo_writel(save->LCM_SPIMD, lchip->base + LOCOMO_SPI + LOCOMO_SPIMD); in locomo_resume()
338 locomo_writel(0x00, lchip->base + LOCOMO_C32K); in locomo_resume()
339 locomo_writel(0x90, lchip->base + LOCOMO_TADC); in locomo_resume()
341 locomo_writel(0, lchip->base + LOCOMO_KEYBOARD + LOCOMO_KSC); in locomo_resume()
342 r = locomo_readl(lchip->base + LOCOMO_KEYBOARD + LOCOMO_KIC); in locomo_resume()
344 locomo_writel(r, lchip->base + LOCOMO_KEYBOARD + LOCOMO_KIC); in locomo_resume()
345 locomo_writel(0x1, lchip->base + LOCOMO_KEYBOARD + LOCOMO_KCMD); in locomo_resume()
347 spin_unlock_irqrestore(&lchip->lock, flags); in locomo_resume()
349 lchip->saved_state = NULL; in locomo_resume()
373 struct locomo *lchip; in __locomo_probe() local
377 lchip = kzalloc(sizeof(struct locomo), GFP_KERNEL); in __locomo_probe()
378 if (!lchip) in __locomo_probe()
381 spin_lock_init(&lchip->lock); in __locomo_probe()
383 lchip->dev = me; in __locomo_probe()
384 dev_set_drvdata(lchip->dev, lchip); in __locomo_probe()
386 lchip->phys = mem->start; in __locomo_probe()
387 lchip->irq = irq; in __locomo_probe()
388 lchip->irq_base = (pdata) ? pdata->irq_base : NO_IRQ; in __locomo_probe()
394 lchip->base = ioremap(mem->start, PAGE_SIZE); in __locomo_probe()
395 if (!lchip->base) { in __locomo_probe()
401 locomo_writel(0, lchip->base + LOCOMO_ICR); in __locomo_probe()
403 locomo_writel(0, lchip->base + LOCOMO_KEYBOARD + LOCOMO_KIC); in __locomo_probe()
406 locomo_writel(0, lchip->base + LOCOMO_GPO); in __locomo_probe()
408 , lchip->base + LOCOMO_GPE); in __locomo_probe()
410 , lchip->base + LOCOMO_GPD); in __locomo_probe()
411 locomo_writel(0, lchip->base + LOCOMO_GIE); in __locomo_probe()
414 locomo_writel(0, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALS); in __locomo_probe()
415 locomo_writel(0, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALD); in __locomo_probe()
418 locomo_writel(0, lchip->base + LOCOMO_LTINT); in __locomo_probe()
420 locomo_writel(0, lchip->base + LOCOMO_SPI + LOCOMO_SPIIE); in __locomo_probe()
422 locomo_writel(6 + 8 + 320 + 30 - 10, lchip->base + LOCOMO_ASD); in __locomo_probe()
423 r = locomo_readl(lchip->base + LOCOMO_ASD); in __locomo_probe()
425 locomo_writel(r, lchip->base + LOCOMO_ASD); in __locomo_probe()
427 locomo_writel(6 + 8 + 320 + 30 - 10 - 128 + 4, lchip->base + LOCOMO_HSD); in __locomo_probe()
428 r = locomo_readl(lchip->base + LOCOMO_HSD); in __locomo_probe()
430 locomo_writel(r, lchip->base + LOCOMO_HSD); in __locomo_probe()
432 locomo_writel(128 / 8, lchip->base + LOCOMO_HSC); in __locomo_probe()
435 locomo_writel(0x80, lchip->base + LOCOMO_TADC); in __locomo_probe()
438 r = locomo_readl(lchip->base + LOCOMO_TADC); in __locomo_probe()
440 locomo_writel(r, lchip->base + LOCOMO_TADC); in __locomo_probe()
444 r = locomo_readl(lchip->base + LOCOMO_DAC); in __locomo_probe()
446 locomo_writel(r, lchip->base + LOCOMO_DAC); in __locomo_probe()
448 r = locomo_readl(lchip->base + LOCOMO_VER); in __locomo_probe()
455 if (lchip->irq != NO_IRQ && lchip->irq_base != NO_IRQ) in __locomo_probe()
456 locomo_setup_irq(lchip); in __locomo_probe()
459 locomo_init_one_child(lchip, &locomo_devices[i]); in __locomo_probe()
463 kfree(lchip); in __locomo_probe()
473 static void __locomo_remove(struct locomo *lchip) in __locomo_remove() argument
475 device_for_each_child(lchip->dev, NULL, locomo_remove_child); in __locomo_remove()
477 if (lchip->irq != NO_IRQ) { in __locomo_remove()
478 irq_set_chained_handler(lchip->irq, NULL); in __locomo_remove()
479 irq_set_handler_data(lchip->irq, NULL); in __locomo_remove()
482 iounmap(lchip->base); in __locomo_remove()
483 kfree(lchip); in __locomo_remove()
503 struct locomo *lchip = platform_get_drvdata(dev); in locomo_remove() local
505 if (lchip) { in locomo_remove()
506 __locomo_remove(lchip); in locomo_remove()
542 struct locomo *lchip = dev_get_drvdata(dev); in locomo_gpio_set_dir() local
546 if (!lchip) in locomo_gpio_set_dir()
549 spin_lock_irqsave(&lchip->lock, flags); in locomo_gpio_set_dir()
551 r = locomo_readl(lchip->base + LOCOMO_GPD); in locomo_gpio_set_dir()
556 locomo_writel(r, lchip->base + LOCOMO_GPD); in locomo_gpio_set_dir()
558 r = locomo_readl(lchip->base + LOCOMO_GPE); in locomo_gpio_set_dir()
563 locomo_writel(r, lchip->base + LOCOMO_GPE); in locomo_gpio_set_dir()
565 spin_unlock_irqrestore(&lchip->lock, flags); in locomo_gpio_set_dir()
571 struct locomo *lchip = dev_get_drvdata(dev); in locomo_gpio_read_level() local
575 if (!lchip) in locomo_gpio_read_level()
578 spin_lock_irqsave(&lchip->lock, flags); in locomo_gpio_read_level()
579 ret = locomo_readl(lchip->base + LOCOMO_GPL); in locomo_gpio_read_level()
580 spin_unlock_irqrestore(&lchip->lock, flags); in locomo_gpio_read_level()
589 struct locomo *lchip = dev_get_drvdata(dev); in locomo_gpio_read_output() local
593 if (!lchip) in locomo_gpio_read_output()
596 spin_lock_irqsave(&lchip->lock, flags); in locomo_gpio_read_output()
597 ret = locomo_readl(lchip->base + LOCOMO_GPO); in locomo_gpio_read_output()
598 spin_unlock_irqrestore(&lchip->lock, flags); in locomo_gpio_read_output()
607 struct locomo *lchip = dev_get_drvdata(dev); in locomo_gpio_write() local
611 if (!lchip) in locomo_gpio_write()
614 spin_lock_irqsave(&lchip->lock, flags); in locomo_gpio_write()
616 r = locomo_readl(lchip->base + LOCOMO_GPO); in locomo_gpio_write()
621 locomo_writel(r, lchip->base + LOCOMO_GPO); in locomo_gpio_write()
623 spin_unlock_irqrestore(&lchip->lock, flags); in locomo_gpio_write()
664 struct locomo *lchip = locomo_chip_driver(ldev); in locomo_m62332_senddata() local
668 void *mapbase = lchip->base; in locomo_m62332_senddata()
671 spin_lock_irqsave(&lchip->lock, flags); in locomo_m62332_senddata()
788 spin_unlock_irqrestore(&lchip->lock, flags); in locomo_m62332_senddata()
799 struct locomo *lchip = locomo_chip_driver(dev); in locomo_frontlight_set() local
806 spin_lock_irqsave(&lchip->lock, flags); in locomo_frontlight_set()
807 locomo_writel(bpwf, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALS); in locomo_frontlight_set()
809 locomo_writel(duty, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALD); in locomo_frontlight_set()
810 locomo_writel(bpwf | LOCOMO_ALC_EN, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALS); in locomo_frontlight_set()
811 spin_unlock_irqrestore(&lchip->lock, flags); in locomo_frontlight_set()