Re: [U-Boot] [PATCH] serial: serial_stm32: move clock config from driver to board

2016-02-08 Thread Vikas MANOCHA
Hi Tom/Kamil,

Can you please apply this patch.

Cheers,
Vikas

> -Original Message-
> From: Vikas MANOCHA
> Sent: Wednesday, January 27, 2016 2:58 PM
> To: 'Simon Glass'
> Cc: Albert ARIBAUD; Kamil Lulko; U-Boot Mailing List; Peter Griffin; Antonio
> Borneo; re...@wp.pl; kunhuahuang
> Subject: RE: [PATCH] serial: serial_stm32: move clock config from driver to
> board
> 
> Hi Simon,
> 
> > -Original Message-
> > From: s...@google.com [mailto:s...@google.com] On Behalf Of Simon Glass
> > Sent: Wednesday, January 27, 2016 2:54 PM
> > To: Vikas MANOCHA
> > Cc: Albert ARIBAUD; Kamil Lulko; U-Boot Mailing List; Peter Griffin;
> > Antonio Borneo; re...@wp.pl; kunhuahuang
> > Subject: Re: [PATCH] serial: serial_stm32: move clock config from
> > driver to board
> >
> > On 26 January 2016 at 19:12, Vikas Manocha 
> > wrote:
> > > This patch removes the uart clock enable from serial driver & move
> > > it in the board code.
> > >
> > > Signed-off-by: Vikas Manocha 
> > > ---
> > >  arch/arm/include/asm/arch-stm32f4/stm32_defs.h | 15 
> > >  arch/arm/include/asm/arch-stm32f4/stm32_periph.h   | 27
> > +++
> > >  arch/arm/mach-stm32/stm32f4/clock.c| 20 +++
> > >  board/st/stm32f429-discovery/stm32f429-discovery.c |  3 ++
> > >  drivers/serial/serial_stm32.c  | 40 
> > > --
> > >  5 files changed, 65 insertions(+), 40 deletions(-)  create mode
> > > 100644 arch/arm/include/asm/arch-stm32f4/stm32_defs.h
> > >  create mode 100644 arch/arm/include/asm/arch-
> stm32f4/stm32_periph.h
> >
> > Reviewed-by: Simon Glass 
> 
> Thanks for reviewing.
> 
> >
> > You might consider adding a clock driver.
> 
> Yes, I agree. After some cleanup, I am planning to add support for clock and
> pinmux driver.
> 
> Rgds,
> Vikas
> 
> >
> > - Simon
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH] serial: serial_stm32: move clock config from driver to board

2016-01-27 Thread Vikas MANOCHA
Hi Simon,

> -Original Message-
> From: s...@google.com [mailto:s...@google.com] On Behalf Of Simon Glass
> Sent: Wednesday, January 27, 2016 2:54 PM
> To: Vikas MANOCHA
> Cc: Albert ARIBAUD; Kamil Lulko; U-Boot Mailing List; Peter Griffin; Antonio
> Borneo; re...@wp.pl; kunhuahuang
> Subject: Re: [PATCH] serial: serial_stm32: move clock config from driver to
> board
> 
> On 26 January 2016 at 19:12, Vikas Manocha 
> wrote:
> > This patch removes the uart clock enable from serial driver & move it
> > in the board code.
> >
> > Signed-off-by: Vikas Manocha 
> > ---
> >  arch/arm/include/asm/arch-stm32f4/stm32_defs.h | 15 
> >  arch/arm/include/asm/arch-stm32f4/stm32_periph.h   | 27
> +++
> >  arch/arm/mach-stm32/stm32f4/clock.c| 20 +++
> >  board/st/stm32f429-discovery/stm32f429-discovery.c |  3 ++
> >  drivers/serial/serial_stm32.c  | 40 
> > --
> >  5 files changed, 65 insertions(+), 40 deletions(-)  create mode
> > 100644 arch/arm/include/asm/arch-stm32f4/stm32_defs.h
> >  create mode 100644 arch/arm/include/asm/arch-stm32f4/stm32_periph.h
> 
> Reviewed-by: Simon Glass 

Thanks for reviewing.

> 
> You might consider adding a clock driver.

Yes, I agree. After some cleanup, I am planning to add support for clock and 
pinmux driver.

Rgds,
Vikas

> 
> - Simon
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH] serial: serial_stm32: move clock config from driver to board

2016-01-27 Thread Simon Glass
On 26 January 2016 at 19:12, Vikas Manocha  wrote:
> This patch removes the uart clock enable from serial driver & move it in the
> board code.
>
> Signed-off-by: Vikas Manocha 
> ---
>  arch/arm/include/asm/arch-stm32f4/stm32_defs.h | 15 
>  arch/arm/include/asm/arch-stm32f4/stm32_periph.h   | 27 +++
>  arch/arm/mach-stm32/stm32f4/clock.c| 20 +++
>  board/st/stm32f429-discovery/stm32f429-discovery.c |  3 ++
>  drivers/serial/serial_stm32.c  | 40 
> --
>  5 files changed, 65 insertions(+), 40 deletions(-)
>  create mode 100644 arch/arm/include/asm/arch-stm32f4/stm32_defs.h
>  create mode 100644 arch/arm/include/asm/arch-stm32f4/stm32_periph.h

Reviewed-by: Simon Glass 

You might consider adding a clock driver.

- Simon
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH] serial: serial_stm32: move clock config from driver to board

2016-01-26 Thread Vikas Manocha
This patch removes the uart clock enable from serial driver & move it in the
board code.

Signed-off-by: Vikas Manocha 
---
 arch/arm/include/asm/arch-stm32f4/stm32_defs.h | 15 
 arch/arm/include/asm/arch-stm32f4/stm32_periph.h   | 27 +++
 arch/arm/mach-stm32/stm32f4/clock.c| 20 +++
 board/st/stm32f429-discovery/stm32f429-discovery.c |  3 ++
 drivers/serial/serial_stm32.c  | 40 --
 5 files changed, 65 insertions(+), 40 deletions(-)
 create mode 100644 arch/arm/include/asm/arch-stm32f4/stm32_defs.h
 create mode 100644 arch/arm/include/asm/arch-stm32f4/stm32_periph.h

diff --git a/arch/arm/include/asm/arch-stm32f4/stm32_defs.h 
b/arch/arm/include/asm/arch-stm32f4/stm32_defs.h
new file mode 100644
index 000..29b98ae
--- /dev/null
+++ b/arch/arm/include/asm/arch-stm32f4/stm32_defs.h
@@ -0,0 +1,15 @@
+/*
+ * (C) Copyright 2016
+ * Vikas Manocha, ST Micoelectronics, vikas.mano...@st.com.
+ *
+ * SPDX-License-Identifier:GPL-2.0+
+ */
+
+#ifndef __STM32_DEFS_H__
+#define __STM32_DEFS_H__
+#include 
+
+int clock_setup(enum periph_clock);
+
+#endif
+
diff --git a/arch/arm/include/asm/arch-stm32f4/stm32_periph.h 
b/arch/arm/include/asm/arch-stm32f4/stm32_periph.h
new file mode 100644
index 000..a1af25c
--- /dev/null
+++ b/arch/arm/include/asm/arch-stm32f4/stm32_periph.h
@@ -0,0 +1,27 @@
+/*
+ * (C) Copyright 2016
+ * Vikas Manocha, ST Micoelectronics, vikas.mano...@st.com.
+ *
+ * SPDX-License-Identifier:GPL-2.0+
+ */
+
+#ifndef __ASM_ARM_ARCH_PERIPH_H
+#define __ASM_ARM_ARCH_PERIPH_H
+
+/*
+ * Peripherals required for pinmux configuration. List will
+ * grow with support for more devices getting added.
+ * Numbering based on interrupt table.
+ *
+ */
+enum periph_id {
+   UART1_GPIOA_9_10 = 0,
+   UART2_GPIOD_5_6,
+};
+
+enum periph_clock {
+   USART1_CLOCK_CFG = 0,
+   USART2_CLOCK_CFG,
+};
+
+#endif /* __ASM_ARM_ARCH_PERIPH_H */
diff --git a/arch/arm/mach-stm32/stm32f4/clock.c 
b/arch/arm/mach-stm32/stm32f4/clock.c
index 3deb17a..576d3e6 100644
--- a/arch/arm/mach-stm32/stm32f4/clock.c
+++ b/arch/arm/mach-stm32/stm32f4/clock.c
@@ -11,6 +11,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #define RCC_CR_HSION   (1 << 0)
 #define RCC_CR_HSEON   (1 << 16)
@@ -50,6 +51,14 @@
 
 #define RCC_APB1ENR_PWREN  (1 << 28)
 
+/*
+ * RCC USART specific definitions
+ */
+#define RCC_ENR_USART1EN   (1 << 4)
+#define RCC_ENR_USART2EN   (1 << 17)
+#define RCC_ENR_USART3EN   (1 << 18)
+#define RCC_ENR_USART6EN   (1 <<  5)
+
 #define PWR_CR_VOS0(1 << 14)
 #define PWR_CR_VOS1(1 << 15)
 #define PWR_CR_VOS_MASK0xC000
@@ -221,3 +230,14 @@ unsigned long clock_get(enum clock clck)
break;
}
 }
+
+void clock_setup(int peripheral)
+{
+   switch (peripheral) {
+   case USART1_CLOCK_CFG:
+   setbits_le32(_RCC->apb2enr, RCC_ENR_USART1EN);
+   break;
+   default:
+   break;
+   }
+}
diff --git a/board/st/stm32f429-discovery/stm32f429-discovery.c 
b/board/st/stm32f429-discovery/stm32f429-discovery.c
index 8bc2d9e..fb8475f 100644
--- a/board/st/stm32f429-discovery/stm32f429-discovery.c
+++ b/board/st/stm32f429-discovery/stm32f429-discovery.c
@@ -19,6 +19,8 @@
 #include 
 #include 
 #include 
+#include 
+#include 
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -286,6 +288,7 @@ int board_early_init_f(void)
res = uart_setup_gpio();
if (res)
return res;
+   clock_setup(USART1_CLOCK_CFG);
 
return 0;
 }
diff --git a/drivers/serial/serial_stm32.c b/drivers/serial/serial_stm32.c
index 91a5dde..c793ba6 100644
--- a/drivers/serial/serial_stm32.c
+++ b/drivers/serial/serial_stm32.c
@@ -35,24 +35,6 @@ struct stm32_usart {
 
 DECLARE_GLOBAL_DATA_PTR;
 
-#define MAX_SERIAL_PORTS   4
-
-/*
- * RCC USART specific definitions
- */
-#define RCC_ENR_USART1EN   (1 << 4)
-#define RCC_ENR_USART2EN   (1 << 17)
-#define RCC_ENR_USART3EN   (1 << 18)
-#define RCC_ENR_USART6EN   (1 <<  5)
-
-/* Array used to figure out which RCC bit needs to be set */
-static const unsigned long usart_port_rcc_pairs[MAX_SERIAL_PORTS][2] = {
-   { STM32_USART1_BASE, RCC_ENR_USART1EN },
-   { STM32_USART2_BASE, RCC_ENR_USART2EN },
-   { STM32_USART3_BASE, RCC_ENR_USART3EN },
-   { STM32_USART6_BASE, RCC_ENR_USART6EN }
-};
-
 static int stm32_serial_setbrg(struct udevice *dev, int baudrate)
 {
struct stm32_serial_platdata *plat = dev->platdata;
@@ -114,28 +96,6 @@ static int stm32_serial_probe(struct udevice *dev)
 {
struct stm32_serial_platdata *plat = dev->platdata;
struct stm32_usart *const usart = plat->base;
-   int usart_port = -1;
-   int i;
-
-   for (i = 0; i < MAX_SERIAL_PORTS; i++) {
-   if ((u32)usart ==