RE: [PATCH] mmc: disable UHS on broadcom sdhci
> SDHCI_QUIRK2_BCM57785_CR: > Bit twiddles some Broadcom-specific registers and supresses an error > about the 64k bar0. > I think this can be done without spending a global SDHCI quirk bit. This > is just a one-time setup that needs to be done, isn't it? It's hard > to tell since there's no official errata described, but if it is, then > overriding the probe function is the way to go instead, flipping these > bits there and then call the regular probe. Yeah, I have confirmed that these bits need to be twiddled during every clock setting (ie: for each card enumeration) not one time when the chip is enabled. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
RE: [PATCH] mmc: disable UHS on broadcom sdhci
> > SDHCI_QUIRK2_BCM57785_CR: > > Bit twiddles some Broadcom-specific registers and supresses an error > > about the 64k bar0. > I think this can be done without spending a global SDHCI quirk bit. This > is just a one-time setup that needs to be done, isn't it? It's hard > to tell since there's no official errata described, but if it is, then > overriding the probe function is the way to go instead, flipping these > bits there and then call the regular probe. My initial recollection is that this bit twiddling needs to be done any time the clock is touched, so it's not just one-time setup. I'll ask the guys about it and get back to you. The 64k bar0 suppression is just cosmetic, but I don't see anything in the public specs suggesting that there is a max limit on the size of the bar... not sure that it's appropriate to give a warning on it for *any* device, but it's absolutely incorrect for this device. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
RE: [PATCH] mmc: disable UHS on broadcom sdhci
SDHCI_QUIRK2_BCM57785_CR: Bit twiddles some Broadcom-specific registers and supresses an error about the 64k bar0. I think this can be done without spending a global SDHCI quirk bit. This is just a one-time setup that needs to be done, isn't it? It's hard to tell since there's no official errata described, but if it is, then overriding the probe function is the way to go instead, flipping these bits there and then call the regular probe. My initial recollection is that this bit twiddling needs to be done any time the clock is touched, so it's not just one-time setup. I'll ask the guys about it and get back to you. The 64k bar0 suppression is just cosmetic, but I don't see anything in the public specs suggesting that there is a max limit on the size of the bar... not sure that it's appropriate to give a warning on it for *any* device, but it's absolutely incorrect for this device. -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
RE: [PATCH] mmc: disable UHS on broadcom sdhci
SDHCI_QUIRK2_BCM57785_CR: Bit twiddles some Broadcom-specific registers and supresses an error about the 64k bar0. I think this can be done without spending a global SDHCI quirk bit. This is just a one-time setup that needs to be done, isn't it? It's hard to tell since there's no official errata described, but if it is, then overriding the probe function is the way to go instead, flipping these bits there and then call the regular probe. Yeah, I have confirmed that these bits need to be twiddled during every clock setting (ie: for each card enumeration) not one time when the chip is enabled. -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
RE: [PATCH] 8250/16?50: Add support for Broadcom TruManage redirected serial port
The patch was against 3.7, not 2.7, 2.7 was a typo. I'll just pass it off to a Linux developer if I meet one. Sorry for wasting your time. -- Stephen Hurd -Original Message- From: gre...@linuxfoundation.org [mailto:gre...@linuxfoundation.org] Sent: Tuesday, January 15, 2013 10:59 PM To: Stephen Hurd Cc: linux-ser...@vger.kernel.org; linux-kernel@vger.kernel.org Subject: Re: [PATCH] 8250/16?50: Add support for Broadcom TruManage redirected serial port On Wed, Dec 12, 2012 at 05:28:35AM +, Stephen Hurd wrote: > From: Stephen Hurd > > Add support for the UART device present in Broadcom TruManage capable > NetXtreme chips (ie: 5761m 5762, and 5725). > > This implementation has a hidden transmit FIFO, so running in single-byte > interrupt mode results in too many interrupts. The UART_CAP_HFIFO capability > was added to track this. It continues to reload the THR as long as the THRE > and TSRE bits are set in the LSR up to a specified limit (1024 is used here). > > Signed-off-by: Stephen Hurd > > --- > > Patch against linux-2.7 from ftp.kernel.org downloaded Dec-11-2012. 2.7? I need this against the linux-next release, can you please redo it, and not send it as an attachment, but put it all inline in the email properly like Documentation/email_clients.txt says? thanks, greg k-h -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
RE: [PATCH] 8250/16?50: Add support for Broadcom TruManage redirected serial port
The patch was against 3.7, not 2.7, 2.7 was a typo. I'll just pass it off to a Linux developer if I meet one. Sorry for wasting your time. -- Stephen Hurd -Original Message- From: gre...@linuxfoundation.org [mailto:gre...@linuxfoundation.org] Sent: Tuesday, January 15, 2013 10:59 PM To: Stephen Hurd Cc: linux-ser...@vger.kernel.org; linux-kernel@vger.kernel.org Subject: Re: [PATCH] 8250/16?50: Add support for Broadcom TruManage redirected serial port On Wed, Dec 12, 2012 at 05:28:35AM +, Stephen Hurd wrote: From: Stephen Hurd sh...@broadcom.com Add support for the UART device present in Broadcom TruManage capable NetXtreme chips (ie: 5761m 5762, and 5725). This implementation has a hidden transmit FIFO, so running in single-byte interrupt mode results in too many interrupts. The UART_CAP_HFIFO capability was added to track this. It continues to reload the THR as long as the THRE and TSRE bits are set in the LSR up to a specified limit (1024 is used here). Signed-off-by: Stephen Hurd sh...@broadcom.com --- Patch against linux-2.7 from ftp.kernel.org downloaded Dec-11-2012. 2.7? I need this against the linux-next release, can you please redo it, and not send it as an attachment, but put it all inline in the email properly like Documentation/email_clients.txt says? thanks, greg k-h -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
RE: [PATCH] 8250/16?50: Add support for Broadcom TruManage redirected serial port
From: Stephen Hurd Add support for the UART device present in Broadcom TruManage capable NetXtreme chips (ie: 5761m 5762, and 5725). This implementation has a hidden transmit FIFO, so running in single-byte interrupt mode results in too many interrupts. The UART_CAP_HFIFO capability was added to track this. It continues to reload the THR as long as the THRE and TSRE bits are set in the LSR up to a specified limit (1024 is used here). Signed-off-by: Stephen Hurd --- Patch against linux-2.7 from ftp.kernel.org downloaded Dec-11-2012. I don't know anybody here off hand who does Linux work nor am I in a position to configure the Exchange server. If this still isn't acceptable, I guess I could try emailing this patch around internally and hope it lands with someone has the appropriate magic available. -- Stephen Hurd diff -uprN linux-3.7.orig/drivers/tty/serial/8250/8250.c linux-3.7/drivers/tty/serial/8250/8250.c --- linux-3.7.orig/drivers/tty/serial/8250/8250.c 2012-12-10 19:30:57.0 -0800 +++ linux-3.7/drivers/tty/serial/8250/8250.c2012-12-11 15:56:40.686343959 -0800 @@ -290,6 +290,12 @@ static const struct serial8250_config ua UART_FCR_R_TRIG_00 | UART_FCR_T_TRIG_00, .flags = UART_CAP_FIFO, }, + [PORT_BRCM_TRUMANAGE] = { + .name = "TruManage", + .fifo_size = 1, + .tx_loadsz = 1024, + .flags = UART_CAP_HFIFO, + }, [PORT_8250_CIR] = { .name = "CIR port" } @@ -1441,6 +1447,11 @@ void serial8250_tx_chars(struct uart_825 port->icount.tx++; if (uart_circ_empty(xmit)) break; + if (up->capabilities & UART_CAP_HFIFO) { + if ((serial_port_in(port, UART_LSR) & BOTH_EMPTY) + != BOTH_EMPTY) + break; + } } while (--count > 0); if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS) diff -uprN linux-3.7.orig/drivers/tty/serial/8250/8250.h linux-3.7/drivers/tty/serial/8250/8250.h --- linux-3.7.orig/drivers/tty/serial/8250/8250.h 2012-12-10 19:30:57.0 -0800 +++ linux-3.7/drivers/tty/serial/8250/8250.h2012-12-11 14:57:48.641613676 -0800 @@ -40,6 +40,7 @@ struct serial8250_config { #define UART_CAP_AFE (1 << 11) /* MCR-based hw flow control */ #define UART_CAP_UUE (1 << 12) /* UART needs IER bit 6 set (Xscale) */ #define UART_CAP_RTOIE (1 << 13) /* UART needs IER bit 4 set (Xscale, Tegra) */ +#define UART_CAP_HFIFO (1 << 14) /* UART has a "hidden" FIFO */ #define UART_BUG_QUOT (1 << 0)/* UART has buggy quot LSB */ #define UART_BUG_TXEN (1 << 1)/* UART has buggy TX IIR status */ diff -uprN linux-3.7.orig/drivers/tty/serial/8250/8250_pci.c linux-3.7/drivers/tty/serial/8250/8250_pci.c --- linux-3.7.orig/drivers/tty/serial/8250/8250_pci.c 2012-12-10 19:30:57.0 -0800 +++ linux-3.7/drivers/tty/serial/8250/8250_pci.c2012-12-11 15:58:10.958340077 -0800 @@ -1085,6 +1085,17 @@ pci_omegapci_setup(struct serial_private return setup_port(priv, port, 2, idx * 8, 0); } +static int +pci_brcm_trumanage_setup(struct serial_private *priv, + const struct pciserial_board *board, + struct uart_port *port, int idx) +{ + int ret = pci_default_setup(priv, board, port, idx); + port->type = PORT_BRCM_TRUMANAGE; + port->flags = (port->flags | UPF_FIXED_PORT | UPF_FIXED_TYPE); + return ret; +} + static int skip_tx_en_setup(struct serial_private *priv, const struct pciserial_board *board, struct uart_8250_port *port, int idx) @@ -1213,6 +1224,7 @@ pci_wch_ch353_setup(struct serial_privat #define PCI_VENDOR_ID_AGESTAR 0x5372 #define PCI_DEVICE_ID_AGESTAR_9375 0x6872 #define PCI_VENDOR_ID_ASIX 0x9710 +#define PCI_DEVICE_ID_BROADCOM_TRUMANAGE 0x160a /* Unknown vendors/cards - this should not be in linux/pci_ids.h */ #define PCI_SUBDEVICE_ID_UNKNOWN_0x15840x1584 @@ -1788,6 +1800,17 @@ static struct pci_serial_quirk pci_seria .setup = pci_asix_setup, }, /* +* Broadcom TruManage (NetXtreme) +*/ + { + .vendor = PCI_VENDOR_ID_BROADCOM, + .device = PCI_DEVICE_ID_BROADCOM_TRUMANAGE, + .subvendor = PCI_ANY_ID, + .subdevice = PCI_ANY_ID, + .setup = pci_brcm_trumanage_setup, + }, + + /* * Default "match everything" terminator entry */ { @@ -1975,6 +1998,7 @@ e
RE: [PATCH] 8250/16?50: Add support for Broadcom TruManage redirected serial port
It appears that the modification to include/uapi/linux/serial_core.h is excluded by the dontdiff filters. I've attached an updated patch including it. Stephen Hurd Senior Staff Engineer - Software Development Broadcom Corporation 949-926-8039 sh...@broadcom.com brcm-trumanage-uart.patch Description: brcm-trumanage-uart.patch
[PATCH] 8250/16?50: Add support for Broadcom TruManage redirected serial port
From: Stephen Hurd Add support for the UART device present in Broadcom TruManage capable NetXtreme chips (ie: 5761m 5762, and 5725). This implementation has a hidden transmit FIFO, so running in single-byte interrupt mode results in too many interrupts. The UART_CAP_HFIFO capability was added to track this. It continues to reload the THR as long as the THRE and TSRE bits are set in the LSR up to a specified limit (1024 is used here). Signed-off-by: Stephen Hurd --- Patch against linux-2.7 from ftp.kernel.org downloaded Dec-11-2012. Sorry about the attachment, I'm required to use Outlook. Stephen Hurd Senior Staff Engineer - Software Development Broadcom Corporation 949-926-8039 sh...@broadcom.com brcm-trumanage-uart.patch Description: brcm-trumanage-uart.patch
[PATCH] 8250/16?50: Add support for Broadcom TruManage redirected serial port
From: Stephen Hurd sh...@broadcom.com Add support for the UART device present in Broadcom TruManage capable NetXtreme chips (ie: 5761m 5762, and 5725). This implementation has a hidden transmit FIFO, so running in single-byte interrupt mode results in too many interrupts. The UART_CAP_HFIFO capability was added to track this. It continues to reload the THR as long as the THRE and TSRE bits are set in the LSR up to a specified limit (1024 is used here). Signed-off-by: Stephen Hurd sh...@broadcom.com --- Patch against linux-2.7 from ftp.kernel.org downloaded Dec-11-2012. Sorry about the attachment, I'm required to use Outlook. Stephen Hurd Senior Staff Engineer - Software Development Broadcom Corporation 949-926-8039 sh...@broadcom.com brcm-trumanage-uart.patch Description: brcm-trumanage-uart.patch
RE: [PATCH] 8250/16?50: Add support for Broadcom TruManage redirected serial port
It appears that the modification to include/uapi/linux/serial_core.h is excluded by the dontdiff filters. I've attached an updated patch including it. Stephen Hurd Senior Staff Engineer - Software Development Broadcom Corporation 949-926-8039 sh...@broadcom.com brcm-trumanage-uart.patch Description: brcm-trumanage-uart.patch
RE: [PATCH] 8250/16?50: Add support for Broadcom TruManage redirected serial port
From: Stephen Hurd sh...@broadcom.com Add support for the UART device present in Broadcom TruManage capable NetXtreme chips (ie: 5761m 5762, and 5725). This implementation has a hidden transmit FIFO, so running in single-byte interrupt mode results in too many interrupts. The UART_CAP_HFIFO capability was added to track this. It continues to reload the THR as long as the THRE and TSRE bits are set in the LSR up to a specified limit (1024 is used here). Signed-off-by: Stephen Hurd sh...@broadcom.com --- Patch against linux-2.7 from ftp.kernel.org downloaded Dec-11-2012. I don't know anybody here off hand who does Linux work nor am I in a position to configure the Exchange server. If this still isn't acceptable, I guess I could try emailing this patch around internally and hope it lands with someone has the appropriate magic available. -- Stephen Hurd diff -uprN linux-3.7.orig/drivers/tty/serial/8250/8250.c linux-3.7/drivers/tty/serial/8250/8250.c --- linux-3.7.orig/drivers/tty/serial/8250/8250.c 2012-12-10 19:30:57.0 -0800 +++ linux-3.7/drivers/tty/serial/8250/8250.c2012-12-11 15:56:40.686343959 -0800 @@ -290,6 +290,12 @@ static const struct serial8250_config ua UART_FCR_R_TRIG_00 | UART_FCR_T_TRIG_00, .flags = UART_CAP_FIFO, }, + [PORT_BRCM_TRUMANAGE] = { + .name = TruManage, + .fifo_size = 1, + .tx_loadsz = 1024, + .flags = UART_CAP_HFIFO, + }, [PORT_8250_CIR] = { .name = CIR port } @@ -1441,6 +1447,11 @@ void serial8250_tx_chars(struct uart_825 port-icount.tx++; if (uart_circ_empty(xmit)) break; + if (up-capabilities UART_CAP_HFIFO) { + if ((serial_port_in(port, UART_LSR) BOTH_EMPTY) + != BOTH_EMPTY) + break; + } } while (--count 0); if (uart_circ_chars_pending(xmit) WAKEUP_CHARS) diff -uprN linux-3.7.orig/drivers/tty/serial/8250/8250.h linux-3.7/drivers/tty/serial/8250/8250.h --- linux-3.7.orig/drivers/tty/serial/8250/8250.h 2012-12-10 19:30:57.0 -0800 +++ linux-3.7/drivers/tty/serial/8250/8250.h2012-12-11 14:57:48.641613676 -0800 @@ -40,6 +40,7 @@ struct serial8250_config { #define UART_CAP_AFE (1 11) /* MCR-based hw flow control */ #define UART_CAP_UUE (1 12) /* UART needs IER bit 6 set (Xscale) */ #define UART_CAP_RTOIE (1 13) /* UART needs IER bit 4 set (Xscale, Tegra) */ +#define UART_CAP_HFIFO (1 14) /* UART has a hidden FIFO */ #define UART_BUG_QUOT (1 0)/* UART has buggy quot LSB */ #define UART_BUG_TXEN (1 1)/* UART has buggy TX IIR status */ diff -uprN linux-3.7.orig/drivers/tty/serial/8250/8250_pci.c linux-3.7/drivers/tty/serial/8250/8250_pci.c --- linux-3.7.orig/drivers/tty/serial/8250/8250_pci.c 2012-12-10 19:30:57.0 -0800 +++ linux-3.7/drivers/tty/serial/8250/8250_pci.c2012-12-11 15:58:10.958340077 -0800 @@ -1085,6 +1085,17 @@ pci_omegapci_setup(struct serial_private return setup_port(priv, port, 2, idx * 8, 0); } +static int +pci_brcm_trumanage_setup(struct serial_private *priv, + const struct pciserial_board *board, + struct uart_port *port, int idx) +{ + int ret = pci_default_setup(priv, board, port, idx); + port-type = PORT_BRCM_TRUMANAGE; + port-flags = (port-flags | UPF_FIXED_PORT | UPF_FIXED_TYPE); + return ret; +} + static int skip_tx_en_setup(struct serial_private *priv, const struct pciserial_board *board, struct uart_8250_port *port, int idx) @@ -1213,6 +1224,7 @@ pci_wch_ch353_setup(struct serial_privat #define PCI_VENDOR_ID_AGESTAR 0x5372 #define PCI_DEVICE_ID_AGESTAR_9375 0x6872 #define PCI_VENDOR_ID_ASIX 0x9710 +#define PCI_DEVICE_ID_BROADCOM_TRUMANAGE 0x160a /* Unknown vendors/cards - this should not be in linux/pci_ids.h */ #define PCI_SUBDEVICE_ID_UNKNOWN_0x15840x1584 @@ -1788,6 +1800,17 @@ static struct pci_serial_quirk pci_seria .setup = pci_asix_setup, }, /* +* Broadcom TruManage (NetXtreme) +*/ + { + .vendor = PCI_VENDOR_ID_BROADCOM, + .device = PCI_DEVICE_ID_BROADCOM_TRUMANAGE, + .subvendor = PCI_ANY_ID, + .subdevice = PCI_ANY_ID, + .setup = pci_brcm_trumanage_setup, + }, + + /* * Default match everything terminator entry */ { @@ -1975,6 +1998,7 @@ enum pci_board_num_t { pbn_ce4100_1_115200, pbn_omegapci, pbn_NETMOS9900_2s_115200