Subject: Re: [PATCH] ems_pci: fix size of CAN controllers BAR mapping for CPC-PCI v2

From: Wolfgang Grandegger <[email-masked]>
Date: Thu, 24 Sep 2009 10:37:19 +0200

Hi Sebastian,

Sebastian Haas wrote:
> The driver mapped only 128 bytes of the CAN controller address space when a
> CPC-PCI v2 was detected (incl. CPC-104P). This patch will fix it by always
> mapping the whole address space (4096 bytes on all boards) of the
> corresponding PCI BAR.
> 
> Signed-off-by: Sebastian Haas <[email-masked]>
> ---
> 
>  drivers/net/can/sja1000/ems_pci.c |    8 +++++---
>  1 files changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/net/can/sja1000/ems_pci.c b/drivers/net/can/sja1000/ems_pci.c
> index 7d84b8a..ba98063 100644
> --- a/drivers/net/can/sja1000/ems_pci.c
> +++ b/drivers/net/can/sja1000/ems_pci.c
> @@ -94,12 +94,14 @@ struct ems_pci_card {
>  #define EMS_PCI_CDR             (CDR_CBP | CDR_CLKOUT_MASK)
>  
>  #define EMS_PCI_V1_BASE_BAR     1
> -#define EMS_PCI_V1_MEM_SIZE     4096
> +#define EMS_PCI_V1_MEM_SIZE     4096 /* size of PITA control area */
>  #define EMS_PCI_V2_BASE_BAR     2
> -#define EMS_PCI_V2_MEM_SIZE     128
> +#define EMS_PCI_V2_MEM_SIZE     128 /* size of PLX control area */
>  #define EMS_PCI_CAN_BASE_OFFSET 0x400 /* offset where the controllers starts */
>  #define EMS_PCI_CAN_CTRL_SIZE   0x200 /* memory size for each controller */
>  
> +#define EMS_PCI_CONTR_MEM_SIZE  4096 /* size of controller area */
> +
>  static struct pci_device_id ems_pci_tbl[] = {
>  	/* CPC-PCI v1 */
>  	{PCI_VENDOR_ID_SIEMENS, 0x2104, PCI_ANY_ID, PCI_ANY_ID,},
> @@ -266,7 +268,7 @@ static int __devinit ems_pci_add_card(struct pci_dev *pdev,
>  		goto failure_cleanup;
>  	}
>  
> -	card->base_addr = pci_iomap(pdev, base_bar, mem_size);
> +	card->base_addr = pci_iomap(pdev, base_bar, EMS_PCI_CONTR_MEM_SIZE);
>  	if (card->base_addr == NULL) {
>  		err = -ENOMEM;
>  		goto failure_cleanup;

I see. To avoid confusion I suggest renaming some variables and defines:

s/EMS_PCI_V1_MEM_SIZE/EMS_PCI_V1_CONF_SIZE/
s/EMS_PCI_V2_MEM_SIZE/EMS_PCI_V2_CONF_SIZE/
s/mem_size/conf_size/
s/EMS_PCI_CONTR_MEM_SIZE/EMS_PCI_BASE_SIZE/

Would that not be more appropriate?

Wolfgang.