[RFC 1/8] serial:st-asc: Add ST ASC driver.
From: Srinivas KANDAGATLA <hidden>
Date: 2013-05-08 18:07:52
Also in:
linux-devicetree, linux-serial, lkml
Thankyou for the comments. On 08/05/13 15:34, Arnd Bergmann wrote:
On Wednesday 08 May 2013, Srinivas KANDAGATLA wrote:quoted
From: Srinivas Kandagatla <redacted> +*st-asc(Serial Port) + +Required properties: +- compatible : Should be "st,asc".Are there any hardware revision numbers for the asc? If there are potentially incompatible or backwards-compatible variants, it would be good to include the version in this string.
Unfortunately, there is no version numbering for this IP.
quoted
+- reg, reg-names, interrupts, interrupt-names : Standard way to define device + resources with names. look in + Documentation/devicetree/bindings/resource-names.txt + +Optional properties: +- st,hw-flow-ctrl bool flag to enable hardware flow control. +- st,force-m1 bool flat to force asc to be in Mode-1 recommeded + for high bit rates (above 19.2K) +Example: +serial at fe440000{ + compatible = "st,asc"; + reg = <0xfe440000 0x2c>; + interrupts = <0 209 0>; +};I would also recommed adding a way to set the default baud rate through a property. Following the example of the 8250 driver, you should probably call that "current-speed".
Yes, I will add this in the next version.
quoted
diff --git a/drivers/tty/serial/Kconfig b/drivers/tty/serial/Kconfig index 7e7006f..346f325 100644 --- a/drivers/tty/serial/Kconfig +++ b/drivers/tty/serial/Kconfig@@ -1484,6 +1484,25 @@ config SERIAL_RP2_NR_UARTS If multiple cards are present, the default limit of 32 ports may need to be increased. +config SERIAL_ST_ASC + tristate "ST ASC serial port support" + depends on PLAT_STIXXXX + default y + select SERIAL_CORE + help + This driver is for the on-chip Asychronous Serial Controller on + STMicroelectronics STixxxx SoCs. + ASC is embedded in ST COMMS IP block. It supports Rx & Tx functionality. + It support all industry standard baud rates. + + If unsure, say N.I would not make it "default y".
Yep.
quoted
+config SERIAL_ST_ASC_CONSOLE + bool "Support for console on ST ASC" + depends on SERIAL_ST_ASC + default y + select SERIAL_CORE_CONSOLE + endmenuThis needs to be "depends on SERIAL_ST_ASC=y". You would get a link error if you try to make SERIAL_ST_ASC a loadable module and SERIAL_ST_ASC_CONSOLE built-in.
Ok, got it.
quoted
+ +static struct asc_port asc_ports[ASC_MAX_PORTS]; +static struct uart_driver asc_uart_driver; + +/*---- Forward function declarations---------------------------*/ +static irqreturn_t asc_interrupt(int irq, void *ptr); +static void asc_transmit_chars(struct uart_port *); +static int asc_set_baud(struct asc_port *ascport, int baud); +Please remove all forward declarations, by reordering the functions in the way they are called.
Will do.
quoted
diff --git a/drivers/tty/serial/st-asc.h b/drivers/tty/serial/st-asc.h new file mode 100644 index 0000000..e59f818 --- /dev/null +++ b/drivers/tty/serial/st-asc.h +#ifndef _ST_ASC_H +#define _ST_ASC_H + +#include <linux/serial_core.h> +#include <linux/clk.h> + +struct asc_port { + struct uart_port port; + struct clk *clk; + unsigned int hw_flow_control:1; + unsigned int check_parity:1; + unsigned int force_m1:1; +};Since this header file is only used in one place, just merge it into the driver itself.
Ok, will do it.
quoted
+#define ASC_MAJOR 204 +#define ASC_MINOR_START 40I don't know what the current policy is on allocating major/minor numbers, but I'm sure you cannot just reuse one that is already used. Documentation/devices.txt lists the ones that are officially assigned. Can't you use dynamic allocation here? Arnd