Lines Matching refs:sun4ichip

388 	struct sun4i_pwm_chip *sun4ichip;  in sun4i_pwm_probe()  local
391 sun4ichip = devm_kzalloc(&pdev->dev, sizeof(*sun4ichip), GFP_KERNEL); in sun4i_pwm_probe()
392 if (!sun4ichip) in sun4i_pwm_probe()
395 sun4ichip->data = of_device_get_match_data(&pdev->dev); in sun4i_pwm_probe()
396 if (!sun4ichip->data) in sun4i_pwm_probe()
399 sun4ichip->base = devm_platform_ioremap_resource(pdev, 0); in sun4i_pwm_probe()
400 if (IS_ERR(sun4ichip->base)) in sun4i_pwm_probe()
401 return PTR_ERR(sun4ichip->base); in sun4i_pwm_probe()
414 sun4ichip->clk = devm_clk_get_optional(&pdev->dev, "mod"); in sun4i_pwm_probe()
415 if (IS_ERR(sun4ichip->clk)) in sun4i_pwm_probe()
416 return dev_err_probe(&pdev->dev, PTR_ERR(sun4ichip->clk), in sun4i_pwm_probe()
419 if (!sun4ichip->clk) { in sun4i_pwm_probe()
420 sun4ichip->clk = devm_clk_get(&pdev->dev, NULL); in sun4i_pwm_probe()
421 if (IS_ERR(sun4ichip->clk)) in sun4i_pwm_probe()
422 return dev_err_probe(&pdev->dev, PTR_ERR(sun4ichip->clk), in sun4i_pwm_probe()
426 sun4ichip->bus_clk = devm_clk_get_optional(&pdev->dev, "bus"); in sun4i_pwm_probe()
427 if (IS_ERR(sun4ichip->bus_clk)) in sun4i_pwm_probe()
428 return dev_err_probe(&pdev->dev, PTR_ERR(sun4ichip->bus_clk), in sun4i_pwm_probe()
431 sun4ichip->rst = devm_reset_control_get_optional_shared(&pdev->dev, NULL); in sun4i_pwm_probe()
432 if (IS_ERR(sun4ichip->rst)) in sun4i_pwm_probe()
433 return dev_err_probe(&pdev->dev, PTR_ERR(sun4ichip->rst), in sun4i_pwm_probe()
437 ret = reset_control_deassert(sun4ichip->rst); in sun4i_pwm_probe()
448 ret = clk_prepare_enable(sun4ichip->bus_clk); in sun4i_pwm_probe()
455 sun4ichip->chip.dev = &pdev->dev; in sun4i_pwm_probe()
456 sun4ichip->chip.ops = &sun4i_pwm_ops; in sun4i_pwm_probe()
457 sun4ichip->chip.npwm = sun4ichip->data->npwm; in sun4i_pwm_probe()
459 spin_lock_init(&sun4ichip->ctrl_lock); in sun4i_pwm_probe()
461 ret = pwmchip_add(&sun4ichip->chip); in sun4i_pwm_probe()
467 platform_set_drvdata(pdev, sun4ichip); in sun4i_pwm_probe()
472 clk_disable_unprepare(sun4ichip->bus_clk); in sun4i_pwm_probe()
474 reset_control_assert(sun4ichip->rst); in sun4i_pwm_probe()
481 struct sun4i_pwm_chip *sun4ichip = platform_get_drvdata(pdev); in sun4i_pwm_remove() local
483 pwmchip_remove(&sun4ichip->chip); in sun4i_pwm_remove()
485 clk_disable_unprepare(sun4ichip->bus_clk); in sun4i_pwm_remove()
486 reset_control_assert(sun4ichip->rst); in sun4i_pwm_remove()