From: Russell King - ARM Linux <linux@arm.linux.org.uk> To: Maxime Ripard <maxime.ripard@free-electrons.com> Cc: linux-arm-kernel@lists.infradead.org, "Emilio López" <emilio@elopez.com.ar>, "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>, linux-kernel@vger.kernel.org, linux-serial@vger.kernel.org, sunny@allwinnertech.com, shuge@allwinnertech.com, "Jiri Slaby" <jslaby@suse.cz>, kevin@allwinnertech.com Subject: Re: [PATCH 1/6] serial: 8250_dw: add support for clk api Date: Fri, 15 Mar 2013 22:39:17 +0000 [thread overview] Message-ID: <20130315223917.GZ4977@n2100.arm.linux.org.uk> (raw) In-Reply-To: <1363377988-4966-2-git-send-email-maxime.ripard@free-electrons.com> On Fri, Mar 15, 2013 at 09:06:23PM +0100, Maxime Ripard wrote: > + /* clock got configured through clk api, all done */ > + if (p->uartclk) if (IS_ERR(p->uartclk)) > + return 0; > + > + /* try to find out clock frequency from DT as fallback */ > if (of_property_read_u32(np, "clock-frequency", &val)) { > - dev_err(p->dev, "no clock-frequency property set\n"); > + dev_err(p->dev, "clk or clock-frequency not defined\n"); > return -EINVAL; > } > p->uartclk = val; > @@ -294,9 +301,21 @@ static int dw8250_probe(struct platform_device *pdev) > if (!uart.port.membase) > return -ENOMEM; > > + data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); > + if (!data) > + return -ENOMEM; > + > + data->clk = devm_clk_get(&pdev->dev, NULL); > + if (IS_ERR(data->clk)) > + data->clk = NULL; > + else > + clk_prepare_enable(data->clk); if (!IS_ERR(data->clk)) clk_prepare_enable(data->clk); > + > uart.port.iotype = UPIO_MEM; > uart.port.serial_in = dw8250_serial_in; > uart.port.serial_out = dw8250_serial_out; > + uart.port.private_data = data; > + uart.port.uartclk = clk_get_rate(data->clk); What if data->clk is invalid? if (!IS_ERR(data->clk) uart.port.uartclk = clk_get_rate(data->clk); > > dw8250_setup_port(&uart); > > @@ -312,12 +331,6 @@ static int dw8250_probe(struct platform_device *pdev) > return -ENODEV; > } > > - data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); > - if (!data) > - return -ENOMEM; > - > - uart.port.private_data = data; > - > data->line = serial8250_register_8250_port(&uart); > if (data->line < 0) > return data->line; > @@ -333,6 +346,8 @@ static int dw8250_remove(struct platform_device *pdev) > > serial8250_unregister_port(data->line); > if (!IS_ERR(data->clk) > + clk_disable_unprepare(data->clk); > + > return 0; > } > > -- > 1.7.10.4 > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: linux@arm.linux.org.uk (Russell King - ARM Linux) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH 1/6] serial: 8250_dw: add support for clk api Date: Fri, 15 Mar 2013 22:39:17 +0000 [thread overview] Message-ID: <20130315223917.GZ4977@n2100.arm.linux.org.uk> (raw) In-Reply-To: <1363377988-4966-2-git-send-email-maxime.ripard@free-electrons.com> On Fri, Mar 15, 2013 at 09:06:23PM +0100, Maxime Ripard wrote: > + /* clock got configured through clk api, all done */ > + if (p->uartclk) if (IS_ERR(p->uartclk)) > + return 0; > + > + /* try to find out clock frequency from DT as fallback */ > if (of_property_read_u32(np, "clock-frequency", &val)) { > - dev_err(p->dev, "no clock-frequency property set\n"); > + dev_err(p->dev, "clk or clock-frequency not defined\n"); > return -EINVAL; > } > p->uartclk = val; > @@ -294,9 +301,21 @@ static int dw8250_probe(struct platform_device *pdev) > if (!uart.port.membase) > return -ENOMEM; > > + data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); > + if (!data) > + return -ENOMEM; > + > + data->clk = devm_clk_get(&pdev->dev, NULL); > + if (IS_ERR(data->clk)) > + data->clk = NULL; > + else > + clk_prepare_enable(data->clk); if (!IS_ERR(data->clk)) clk_prepare_enable(data->clk); > + > uart.port.iotype = UPIO_MEM; > uart.port.serial_in = dw8250_serial_in; > uart.port.serial_out = dw8250_serial_out; > + uart.port.private_data = data; > + uart.port.uartclk = clk_get_rate(data->clk); What if data->clk is invalid? if (!IS_ERR(data->clk) uart.port.uartclk = clk_get_rate(data->clk); > > dw8250_setup_port(&uart); > > @@ -312,12 +331,6 @@ static int dw8250_probe(struct platform_device *pdev) > return -ENODEV; > } > > - data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); > - if (!data) > - return -ENOMEM; > - > - uart.port.private_data = data; > - > data->line = serial8250_register_8250_port(&uart); > if (data->line < 0) > return data->line; > @@ -333,6 +346,8 @@ static int dw8250_remove(struct platform_device *pdev) > > serial8250_unregister_port(data->line); > if (!IS_ERR(data->clk) > + clk_disable_unprepare(data->clk); > + > return 0; > } > > -- > 1.7.10.4 > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel at lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2013-03-15 22:44 UTC|newest] Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-03-15 20:06 [PATCHv3 0/6] Extend UART support for Allwinner SoCs Maxime Ripard 2013-03-15 20:06 ` [PATCH 1/6] serial: 8250_dw: add support for clk api Maxime Ripard 2013-03-15 20:06 ` Maxime Ripard 2013-03-15 20:06 ` Maxime Ripard 2013-03-15 22:39 ` Russell King - ARM Linux [this message] 2013-03-15 22:39 ` Russell King - ARM Linux 2013-03-16 0:15 ` Emilio López 2013-03-16 0:15 ` Emilio López 2013-03-16 0:29 ` Russell King - ARM Linux 2013-03-16 0:29 ` Russell King - ARM Linux 2013-03-16 0:29 ` Russell King - ARM Linux 2013-03-16 0:40 ` Emilio López 2013-03-16 0:40 ` Emilio López 2013-03-16 0:40 ` Emilio López 2013-03-15 20:06 ` [PATCH 2/6] ARM: sunxi: dt: Use clocks property instead of clock-frequency for the UARTs Maxime Ripard 2013-03-15 20:06 ` Maxime Ripard 2013-03-15 20:06 ` [PATCH 3/6] ARM: sunxi: dt: Move uart0 to sun4i-a10.dtsi Maxime Ripard 2013-03-15 20:06 ` Maxime Ripard 2013-03-15 20:06 ` [PATCH 4/6] ARM: sunxi: dt: Add uart3 dt node Maxime Ripard 2013-03-15 20:06 ` Maxime Ripard 2013-03-15 22:01 ` Sergei Shtylyov 2013-03-15 22:01 ` Sergei Shtylyov 2013-03-15 20:06 ` [PATCH 5/6] ARM: sunxi: dt: Add A10 UARTs to the dtsi Maxime Ripard 2013-03-15 20:06 ` Maxime Ripard 2013-03-15 20:06 ` [PATCH 6/6] ARM: sunxi: hackberry: Add UART muxing Maxime Ripard 2013-03-15 20:06 ` Maxime Ripard
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20130315223917.GZ4977@n2100.arm.linux.org.uk \ --to=linux@arm.linux.org.uk \ --cc=emilio@elopez.com.ar \ --cc=gregkh@linuxfoundation.org \ --cc=jslaby@suse.cz \ --cc=kevin@allwinnertech.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-serial@vger.kernel.org \ --cc=maxime.ripard@free-electrons.com \ --cc=shuge@allwinnertech.com \ --cc=sunny@allwinnertech.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.