Re: [U-Boot] [PATCH v2 3/7] mpc5121: add PSC serial communication routines

2010-03-21 Thread Wolfgang Denk
Dear Anatolij Gustschin,

In message 1268755808-24931-4-git-send-email-ag...@denx.de you wrote:
 Signed-off-by: Anatolij Gustschin ag...@denx.de
 ---
 No changes since v1.
 
  cpu/mpc512x/serial.c |   87 
 ++
  include/serial.h |7 
  2 files changed, 94 insertions(+), 0 deletions(-)

Applied to u-boot-mpc5xxx repository. Thanks.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH, MD: Wolfgang Denk  Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de
Die Scheu vor Verantwortung ist die Krankheit unserer Zeit.
 -- Otto von Bismarck
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH v2 3/7] mpc5121: add PSC serial communication routines

2010-03-16 Thread Anatolij Gustschin
Signed-off-by: Anatolij Gustschin ag...@denx.de
---
No changes since v1.

 cpu/mpc512x/serial.c |   87 ++
 include/serial.h |7 
 2 files changed, 94 insertions(+), 0 deletions(-)

diff --git a/cpu/mpc512x/serial.c b/cpu/mpc512x/serial.c
index f421968..cb5bbf0 100644
--- a/cpu/mpc512x/serial.c
+++ b/cpu/mpc512x/serial.c
@@ -401,3 +401,90 @@ int serial_getcts(void)
return serial_getcts_dev(CONFIG_PSC_CONSOLE);
 }
 #endif /* CONFIG_PSC_CONSOLE */
+
+#if defined(CONFIG_SERIAL_MULTI)
+#include stdio_dev.h
+/*
+ * Routines for communication with serial devices over PSC
+ */
+/* Bitfield for initialized PSCs */
+static unsigned int initialized;
+
+struct stdio_dev *open_port(int num, int baudrate)
+{
+   struct stdio_dev *port;
+   char env_var[16];
+   char env_val[10];
+   char name[7];
+
+   if (num  0 || num  11)
+   return NULL;
+
+   sprintf(name, psc%d, num);
+   port = stdio_get_by_name(name);
+   if (!port)
+   return NULL;
+
+   if (!test_bit(num, initialized)) {
+   sprintf(env_var, psc%d_baudrate, num);
+   sprintf(env_val, %d, baudrate);
+   setenv(env_var, env_val);
+
+   if (port-start())
+   return NULL;
+
+   set_bit(num, initialized);
+   }
+
+   return port;
+}
+
+int close_port(int num)
+{
+   struct stdio_dev *port;
+   int ret;
+   char name[7];
+
+   if (num  0 || num  11)
+   return -1;
+
+   sprintf(name, psc%d, num);
+   port = stdio_get_by_name(name);
+   if (!port)
+   return -1;
+
+   ret = port-stop();
+   clear_bit(num, initialized);
+
+   return ret;
+}
+
+int write_port(struct stdio_dev *port, char *buf)
+{
+   if (!port || !buf)
+   return -1;
+
+   port-puts(buf);
+
+   return 0;
+}
+
+int read_port(struct stdio_dev *port, char *buf, int size)
+{
+   int cnt = 0;
+
+   if (!port || !buf)
+   return -1;
+
+   if (!size)
+   return 0;
+
+   while (port-tstc()) {
+   buf[cnt++] = port-getc();
+   if (cnt  size)
+   break;
+   }
+
+   return cnt;
+}
+#endif /* CONFIG_SERIAL_MULTI */
diff --git a/include/serial.h b/include/serial.h
index 3f3edbc..6423fba 100644
--- a/include/serial.h
+++ b/include/serial.h
@@ -92,4 +92,11 @@ extern int usbtty_tstc(void);
 
 #endif /* CONFIG_USB_TTY */
 
+#if defined(CONFIG_MPC512X)   defined(CONFIG_SERIAL_MULTI)
+extern struct stdio_dev *open_port(int num, int baudrate);
+extern int close_port(int num);
+extern int write_port(struct stdio_dev *port, char *buf);
+extern int read_port(struct stdio_dev *port, char *buf, int size);
+#endif
+
 #endif
-- 
1.6.3.3

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