Lines Matching refs:mtu
37 struct sh_mtu2_device *mtu; member
165 return ioread8(ch->mtu->mapbase + 0x280); in sh_mtu2_read()
181 return iowrite8(value, ch->mtu->mapbase + 0x280); in sh_mtu2_write()
196 raw_spin_lock_irqsave(&ch->mtu->lock, flags); in sh_mtu2_start_stop_ch()
205 raw_spin_unlock_irqrestore(&ch->mtu->lock, flags); in sh_mtu2_start_stop_ch()
214 pm_runtime_get_sync(&ch->mtu->pdev->dev); in sh_mtu2_enable()
215 dev_pm_syscore_device(&ch->mtu->pdev->dev, true); in sh_mtu2_enable()
218 ret = clk_enable(ch->mtu->clk); in sh_mtu2_enable()
220 dev_err(&ch->mtu->pdev->dev, "ch%u: cannot enable clock\n", in sh_mtu2_enable()
228 rate = clk_get_rate(ch->mtu->clk) / 64; in sh_mtu2_enable()
255 clk_disable(ch->mtu->clk); in sh_mtu2_disable()
257 dev_pm_syscore_device(&ch->mtu->pdev->dev, false); in sh_mtu2_disable()
258 pm_runtime_put(&ch->mtu->pdev->dev); in sh_mtu2_disable()
297 dev_info(&ch->mtu->pdev->dev, in sh_mtu2_clock_event_mode()
313 pm_genpd_syscore_poweroff(&ced_to_sh_mtu2(ced)->mtu->pdev->dev); in sh_mtu2_clock_event_suspend()
318 pm_genpd_syscore_poweron(&ced_to_sh_mtu2(ced)->mtu->pdev->dev); in sh_mtu2_clock_event_resume()
334 dev_info(&ch->mtu->pdev->dev, "ch%u: used for clock events\n", in sh_mtu2_register_clockevent()
341 ch->mtu->has_clockevent = true; in sh_mtu2_register()
348 struct sh_mtu2_device *mtu) in sh_mtu2_setup_channel() argument
357 ch->mtu = mtu; in sh_mtu2_setup_channel()
360 irq = platform_get_irq_byname(mtu->pdev, name); in sh_mtu2_setup_channel()
368 dev_name(&ch->mtu->pdev->dev), ch); in sh_mtu2_setup_channel()
370 dev_err(&ch->mtu->pdev->dev, "ch%u: failed to request irq %d\n", in sh_mtu2_setup_channel()
375 ch->base = mtu->mapbase + channel_offsets[index]; in sh_mtu2_setup_channel()
378 return sh_mtu2_register(ch, dev_name(&mtu->pdev->dev)); in sh_mtu2_setup_channel()
381 static int sh_mtu2_map_memory(struct sh_mtu2_device *mtu) in sh_mtu2_map_memory() argument
385 res = platform_get_resource(mtu->pdev, IORESOURCE_MEM, 0); in sh_mtu2_map_memory()
387 dev_err(&mtu->pdev->dev, "failed to get I/O memory\n"); in sh_mtu2_map_memory()
391 mtu->mapbase = ioremap_nocache(res->start, resource_size(res)); in sh_mtu2_map_memory()
392 if (mtu->mapbase == NULL) in sh_mtu2_map_memory()
398 static int sh_mtu2_setup(struct sh_mtu2_device *mtu, in sh_mtu2_setup() argument
404 mtu->pdev = pdev; in sh_mtu2_setup()
406 raw_spin_lock_init(&mtu->lock); in sh_mtu2_setup()
409 mtu->clk = clk_get(&mtu->pdev->dev, "fck"); in sh_mtu2_setup()
410 if (IS_ERR(mtu->clk)) { in sh_mtu2_setup()
411 dev_err(&mtu->pdev->dev, "cannot get clock\n"); in sh_mtu2_setup()
412 return PTR_ERR(mtu->clk); in sh_mtu2_setup()
415 ret = clk_prepare(mtu->clk); in sh_mtu2_setup()
420 ret = sh_mtu2_map_memory(mtu); in sh_mtu2_setup()
422 dev_err(&mtu->pdev->dev, "failed to remap I/O memory\n"); in sh_mtu2_setup()
427 mtu->num_channels = 3; in sh_mtu2_setup()
429 mtu->channels = kzalloc(sizeof(*mtu->channels) * mtu->num_channels, in sh_mtu2_setup()
431 if (mtu->channels == NULL) { in sh_mtu2_setup()
436 for (i = 0; i < mtu->num_channels; ++i) { in sh_mtu2_setup()
437 ret = sh_mtu2_setup_channel(&mtu->channels[i], i, mtu); in sh_mtu2_setup()
442 platform_set_drvdata(pdev, mtu); in sh_mtu2_setup()
447 kfree(mtu->channels); in sh_mtu2_setup()
448 iounmap(mtu->mapbase); in sh_mtu2_setup()
450 clk_unprepare(mtu->clk); in sh_mtu2_setup()
452 clk_put(mtu->clk); in sh_mtu2_setup()
458 struct sh_mtu2_device *mtu = platform_get_drvdata(pdev); in sh_mtu2_probe() local
466 if (mtu) { in sh_mtu2_probe()
471 mtu = kzalloc(sizeof(*mtu), GFP_KERNEL); in sh_mtu2_probe()
472 if (mtu == NULL) in sh_mtu2_probe()
475 ret = sh_mtu2_setup(mtu, pdev); in sh_mtu2_probe()
477 kfree(mtu); in sh_mtu2_probe()
485 if (mtu->has_clockevent) in sh_mtu2_probe()