* [PATCH] cpm_uart: Route SCC2 pins for the STx GP3 board
@ 2005-06-01 17:51 Matt Porter
2005-06-02 22:35 ` Andrew Morton
0 siblings, 1 reply; 3+ messages in thread
From: Matt Porter @ 2005-06-01 17:51 UTC (permalink / raw)
To: akpm, kumar.gala; +Cc: linux-kernel, linuxppc-embedded
Adds SCC2 pin routing specific to the GP3 board.
Signed-off-by: Matt Porter <mporter@kernel.crashing.org>
Signed-off-by: Kumar Gala <kumar.gala@freescale.com>
Index: drivers/serial/cpm_uart/cpm_uart_cpm2.c
===================================================================
--- b4bedd69e60ae8cc7d89f3c97c617a444eb43292/drivers/serial/cpm_uart/cpm_uart_cpm2.c (mode:100644)
+++ uncommitted/drivers/serial/cpm_uart/cpm_uart_cpm2.c (mode:100644)
@@ -134,12 +134,21 @@
void scc2_lineif(struct uart_cpm_port *pinfo)
{
+ /*
+ * STx GP3 uses the SCC2 secondary option pin assignment
+ * which this driver doesn't account for in the static
+ * pin assignments. This kind of board specific info
+ * really has to get out of the driver so boards can
+ * be supported in a sane fashion.
+ */
+#ifndef CONFIG_STX_GP3
volatile iop_cpm2_t *io = &cpm2_immr->im_ioport;
io->iop_pparb |= 0x008b0000;
io->iop_pdirb |= 0x00880000;
io->iop_psorb |= 0x00880000;
io->iop_pdirb &= ~0x00030000;
io->iop_psorb &= ~0x00030000;
+#endif
cpm2_immr->im_cpmux.cmx_scr &= 0xff00ffff;
cpm2_immr->im_cpmux.cmx_scr |= 0x00090000;
pinfo->brg = 2;
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH] cpm_uart: Route SCC2 pins for the STx GP3 board
2005-06-01 17:51 [PATCH] cpm_uart: Route SCC2 pins for the STx GP3 board Matt Porter
@ 2005-06-02 22:35 ` Andrew Morton
2005-06-03 3:29 ` Matt Porter
0 siblings, 1 reply; 3+ messages in thread
From: Andrew Morton @ 2005-06-02 22:35 UTC (permalink / raw)
To: Matt Porter; +Cc: linux-kernel, linuxppc-embedded
Matt Porter <mporter@kernel.crashing.org> wrote:
>
> +++ uncommitted/drivers/serial/cpm_uart/cpm_uart_cpm2.c (mode:100644)
> @@ -134,12 +134,21 @@
>
> void scc2_lineif(struct uart_cpm_port *pinfo)
> {
> + /*
> + * STx GP3 uses the SCC2 secondary option pin assignment
> + * which this driver doesn't account for in the static
> + * pin assignments. This kind of board specific info
> + * really has to get out of the driver so boards can
> + * be supported in a sane fashion.
> + */
> +#ifndef CONFIG_STX_GP3
> volatile iop_cpm2_t *io = &cpm2_immr->im_ioport;
> io->iop_pparb |= 0x008b0000;
Silly question: why is this driver using a volatile pointer to
memory-mapped I/O rather than readl and writel?
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH] cpm_uart: Route SCC2 pins for the STx GP3 board
2005-06-02 22:35 ` Andrew Morton
@ 2005-06-03 3:29 ` Matt Porter
0 siblings, 0 replies; 3+ messages in thread
From: Matt Porter @ 2005-06-03 3:29 UTC (permalink / raw)
To: Andrew Morton; +Cc: linux-kernel, linuxppc-embedded
On Thu, Jun 02, 2005 at 03:35:40PM -0700, Andrew Morton wrote:
> Matt Porter <mporter@kernel.crashing.org> wrote:
> >
> > +++ uncommitted/drivers/serial/cpm_uart/cpm_uart_cpm2.c (mode:100644)
> > @@ -134,12 +134,21 @@
> >
> > void scc2_lineif(struct uart_cpm_port *pinfo)
> > {
> > + /*
> > + * STx GP3 uses the SCC2 secondary option pin assignment
> > + * which this driver doesn't account for in the static
> > + * pin assignments. This kind of board specific info
> > + * really has to get out of the driver so boards can
> > + * be supported in a sane fashion.
> > + */
> > +#ifndef CONFIG_STX_GP3
> > volatile iop_cpm2_t *io = &cpm2_immr->im_ioport;
> > io->iop_pparb |= 0x008b0000;
>
> Silly question: why is this driver using a volatile pointer to
> memory-mapped I/O rather than readl and writel?
readl/writel just won't work. They are byte swapped on PPC since
they are specifically for PCI access. In other "on-chip" drivers
for PPC32, we typically ioremap() to a non-volatile type and then
use out_be32()/in_be32() since everything except PCI on PPC is
in right-endian (big endian) form. out_be*()/in_be*() contain
an eieio instruction to guarantee proper ordering.
I know this driver was recently rewritten but the authors may have
missed the past threads about why volatile use is discouraged. We
do something similar with register overlay structures in
drivers/net/ibm_emac. However, we don't use a volatile type and do
use PPC32-specific (these are PPC-specific drivers anyway)
out_be32()/in_be32() for correctness.
-Matt
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2005-06-03 3:29 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-06-01 17:51 [PATCH] cpm_uart: Route SCC2 pins for the STx GP3 board Matt Porter
2005-06-02 22:35 ` Andrew Morton
2005-06-03 3:29 ` Matt Porter
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).