Re: [PATCH V2 1/4] mfd: f81504-core: Add Fintek F81504/508/512 PCIE-to-UART/GPIO core support

From: One Thousand Gnomes
Date: Thu Jan 28 2016 - 05:05:43 EST


> +config MFD_FINTEK_F81504_CORE
> + tristate "Fintek F81504/508/512 PCIE-to-UART/GPIO MFD support"
> + depends on PCI
> + select MFD_CORE
> + default y
> + help
> + This driver generate F81504/508/512 UART & GPIO platform
This driver provides the F81504/508/512 UART & GPIO platform
> + device. It should enable CONFIG_GPIO_F81504 to get GPIOLIB
devices. You should enable CONFIG_GPIO_F81504 to get GPIOLIB
> + support and CONFIG_8250_F81504 to get serial ports support.
port rather than ports

> + Please bulit-in kernel if you need early console support.
This driver needs to be built into the kernel to use early console
support.



> + switch (dev->device) {
> + case FINTEK_F81504: /* 4 ports */
> + /* F81504 max 2 sets of GPIO, others are max 6 sets*/
> + gpio_en &= 0x03;
> + case FINTEK_F81508: /* 8 ports */
> + max_port = dev->device & 0xff;

If that is meant to fall through from F81504 into F81508 it's worth
commenting, otherwise someone reviewing the code can't always be sure it
was intentional.

> + break;
> + case FINTEK_F81512: /* 12 ports */
> + max_port = 12;
> + break;
> + default:
> + return -EINVAL;
> + }
> +
> + /* rewrite GPIO Mode setting */
> + pci_write_config_byte(dev, F81504_GPIO_ENABLE_REG, gpio_en & 0x3f);
> + pci_write_config_byte(dev, F81504_GPIO_MODE_REG, ~gpio_en & 0x3f);
> +
> + /* Get the UART IO address dispatch from the BIOS */
> + pci_read_config_dword(dev, 0x24, &bar_data[0]);
> + pci_read_config_dword(dev, 0x20, &bar_data[1]);
> + pci_read_config_dword(dev, 0x1c, &bar_data[2]);

Take these from the pci device itself. On some non PC platforms the
values in the pci bar may be remapped by bridges and not give you the
true answer.

pci_resource_start(dev, barnumber)


Alan