Search Linux Wireless

Re: [PATCH 4/5] bcma: add support for 1 and 2 byte extended config space access

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 01/12/2013 11:46 AM, Nathan Hintz wrote:
> The sanity checks allow 1 and 2 byte reads/writes of the extended
> PCI config space to proceed; however, the code only supports 4
> byte reads/writes.  This patch adds support for 1 and 2 byte
> reads/writes of the extended PCI config space.
> 
> Signed-off-by: Nathan Hintz <nlhintz@xxxxxxxxxxx>

Acked-by: Hauke Mehrtens <hauke@xxxxxxxxxx>

> ---
>  drivers/bcma/driver_pci_host.c |   15 ++++++++-------
>  1 files changed, 8 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/bcma/driver_pci_host.c b/drivers/bcma/driver_pci_host.c
> index e1381ba..92800b4 100644
> --- a/drivers/bcma/driver_pci_host.c
> +++ b/drivers/bcma/driver_pci_host.c
> @@ -101,7 +101,7 @@ static int bcma_extpci_read_config(struct bcma_drv_pci *pc, unsigned int dev,
>  		 */
>  		if (off >= PCI_CONFIG_SPACE_SIZE) {
>  			addr = (func << 12);
> -			addr |= (off & 0x0FFF);
> +			addr |= (off & 0x0FFC);
>  			val = bcma_pcie_read_config(pc, addr);
>  		} else {
>  			addr = BCMA_CORE_PCI_PCICFG0;
> @@ -164,7 +164,11 @@ static int bcma_extpci_write_config(struct bcma_drv_pci *pc, unsigned int dev,
>  		/* accesses to config registers with offsets >= 256
>  		 * requires indirect access.
>  		 */
> -		if (off < PCI_CONFIG_SPACE_SIZE) {
> +		if (off >= PCI_CONFIG_SPACE_SIZE) {
> +			addr = (func << 12);
> +			addr |= (off & 0x0FFC);
> +			val = bcma_pcie_read_config(pc, addr);
> +		} else {
>  			addr = BCMA_CORE_PCI_PCICFG0;
>  			addr |= (func << 8);
>  			addr |= (off & 0xfc);
> @@ -202,13 +206,10 @@ static int bcma_extpci_write_config(struct bcma_drv_pci *pc, unsigned int dev,
>  		/* accesses to config registers with offsets >= 256
>  		 * requires indirect access.
>  		 */
> -		if (off >= PCI_CONFIG_SPACE_SIZE) {
> -			addr = (func << 12);
> -			addr |= (off & 0x0FFF);
> +		if (off >= PCI_CONFIG_SPACE_SIZE)
>  			bcma_pcie_write_config(pc, addr, val);
> -		} else {
> +		else
>  			pcicore_write32(pc, addr, val);
> -		}
>  	} else {
>  		writel(val, mmio);
>  
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux