lcd: add DataImage SCF0403 LCD panel support

Add SPI-based driver for DataImage SCF0403852GGU04 LCD panel.

Signed-off-by: Dmitry Lifshitz <lifshitz@compulab.co.il>
Signed-off-by: Igor Grinberg <grinberg@compulab.co.il>
lcd: fix crash of DataImage SCF0403 LCD driver

If platform data provides -EINVAL for gpio_reset field, the below crash
can be observed.

-------------------cut--------------------
Unable to handle kernel paging request at virtual address 0009012f
pgd = c0004000
[0009012f] *pgd=00000000
Internal error: Oops: 5 [#1] SMP
Modules linked in:
CPU: 0    Not tainted  (3.0.35-cm-fx6-02054-g6dfb446-dirty #77)
PC is at gpio_set_value_cansleep+0x1c/0x34
LR is at 0x900ff
pc : [<c027db50>]    lr : [<000900ff>]    psr: 20000013
sp : e9fdded8  ip : ffffffea  fp : 00000000
r10: 00000000  r9 : 00000000  r8 : ffffffea
r7 : ffffffea  r6 : c07560dc  r5 : e9ce6480  r4 : ffffffea
r3 : c07a0e00  r2 : 00000001  r1 : 00000001  r0 : ffffffbe
Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
Control: 10c53c7d  Table: 1000404a  DAC: 00000015
Process swapper (pid: 1, stack limit = 0xe9fdc2f0)
Stack: (0xe9fdded8 to 0xe9fde000)
dec0:                                                       e9d9ed20
c02a41f8
dee0: e9d99600 c05786fc e9d99600 e9d99608 c07661d4 c0000000 c07a4ffc
c07661d4
df00: e9d99600 c02e2730 c07661d4 c0341814 c03417fc c02e25d4 e9d99600
c07661d4
df20: e9d99634 c02e2730 c001ccf4 c02e2718 00000000 e9d99600 c07661d4
c02e27bc
df40: c07661d4 00000000 e9fddf50 c02e1dd0 e9e5f79c e9d9ed54 c075966c
c07661d4
df60: c076fab8 e9eb4e60 00000000 c02e15dc c06a1d80 c078a5a0 c078a5a0
c07661d4
df80: 00000000 00000000 c001ccf4 00000000 00000000 c02e2da8 c078a5a0
c0032dd0
dfa0: c004695c 00000000 c001ccf4 c003f4d0 00000000 c0140000 00000000
c0758880
dfc0: 000001f0 c004695c c0032bb8 c0032dd0 c004695c 00000013 00000000
00000000
dfe0: 00000000 c0008454 00000000 00000000 c000839c c004695c 29040e94
950b8a00
[<c027db50>] (gpio_set_value_cansleep+0x1c/0x34) from [<c02a41f8>]
(scf0403_gpio_reset+0x10/0x44)
[<c02a41f8>] (scf0403_gpio_reset+0x10/0x44) from [<c05786fc>]
(scf0403_probe+0xe0/0x1dc)
[<c05786fc>] (scf0403_probe+0xe0/0x1dc) from [<c0341814>]
(spi_drv_probe+0x18/0x1c)
[<c0341814>] (spi_drv_probe+0x18/0x1c) from [<c02e25d4>]
(really_probe+0x64/0x160)
[<c02e25d4>] (really_probe+0x64/0x160) from [<c02e2718>]
(driver_probe_device+0x48/0x60)
[<c02e2718>] (driver_probe_device+0x48/0x60) from [<c02e27bc>]
(__driver_attach+0x8c/0x90)
[<c02e27bc>] (__driver_attach+0x8c/0x90) from [<c02e1dd0>]
(bus_for_each_dev+0x60/0x8c)
[<c02e1dd0>] (bus_for_each_dev+0x60/0x8c) from [<c02e15dc>]
(bus_add_driver+0xa8/0x298)
[<c02e15dc>] (bus_add_driver+0xa8/0x298) from [<c02e2da8>]
(driver_register+0x78/0x18c)
[<c02e2da8>] (driver_register+0x78/0x18c) from [<c003f4d0>]
(do_one_initcall+0x34/0x180)
[<c003f4d0>] (do_one_initcall+0x34/0x180) from [<c0008454>]
(kernel_init+0xb8/0x148)
[<c0008454>] (kernel_init+0xb8/0x148) from [<c004695c>]
(kernel_thread_exit+0x0/0x8)
Code: e0800080 e34c307a e1a02001 e793e100 (e59e1030)
---[ end trace 65f8ea860415c04f ]---
Kernel panic - not syncing: Attempted to kill init!
----------------------cut--------------

Fix the above crash by checking if the GPIO is valid before toggling.

Signed-off-by: Igor Grinberg <grinberg@compulab.co.il>
ARM: i.MX6: cm-fx6: add support for SPI bus 1

Add support for SPI bus 1 and peripheral DataImage SCF0403 LCD
connected to the bus.

Signed-off-by: Igor Grinberg <grinberg@compulab.co.il>
ARM: i.MX6: cm-fx6: refactor I2C buses handling

Refactor the I2C bus and board info handling, so all the information
will be in the same place. This allows convinient viewing/adding/etc. of
the I2C devices on different boards (e.g. modules, base boards,
touchscreens).

Signed-off-by: Igor Grinberg <grinberg@compulab.co.il>
ARM: i.MX6: cm-fx6: add support for GPIO extender

sb-fx6 features a GPIO extender on the I2C bus 1.
Add support for the GPIO extender.

Signed-off-by: Igor Grinberg <grinberg@compulab.co.il>
ARM: i.MX6: cm-fx6: add support for PWM backlight

sb-fx6 features a PWM compliant backlight driver for LCD.
Add support for the sb-fx6 PWM backlight.

Signed-off-by: Igor Grinberg <grinberg@compulab.co.il>
video: mxc: lcd: add DataImage SCF0403 LCD support

Add support for DataImage SCF0403852GGU04 LCD panel.

Signed-off-by: Igor Grinberg <grinberg@compulab.co.il>
ARM: i.MX6: cm-fx6: adobt the display init code

1) Refactor the display initialization code to be cm-fx6 specific.
2) Add support for DataImage SCF0403 LCD panel.

Signed-off-by: Igor Grinberg <grinberg@compulab.co.il>