*** ARM: Update arch-vt8500 to Devicetree ***
Subsystems (11)
cover *** ARM: Update arch-vt8500 to Devicetree ***
This patchset updates arch-vt8500 to devicetree and removes all the old-style code. Support for WM8650 has also been added.
Example dts/dtsi files are given for the three currently supported models.
Major changes:
GPIO code has been converted to a platform_device and rewritten as WM8505 support was broken. Add support for WM8650 gpio controller.
UHCI support was missing. Added this as a generic non-pci uhci controller as it doesn't require anything special. Should be usable by any system that doesn't have special requirements to get the UHCI controller working.
Framebuffer code patched to support WM8650. The bindings for this are of concern but there doesn't seem to be a formalized binding yet. This patch is based off Sascha Hauer's current patch on the dri-devel mailing list and should be easily patched out when its finalized.
Patchset based on Arnd's arm-soc/for-next branch.
Could I get this reviewed, hopefully for inclusion into v3.7.
Regards
Tony Prisk
Tony Prisk (8):
arm: vt8500: Add device tree files for VIA/Wondermedia SoC's
rtc: vt8500: Add devicetree support for vt8500-rtc
serial: vt8500: Add devicetree support for vt8500-serial
usb: vt8500: Add devicetree support for vt8500-ehci and -uhci.
video: vt8500: Add devicetree support for vt8500-fb and wm8505-fb
arm: vt8500: Update arch-vt8500 to devicetree support.
arm: vt8500: doc: Add device tree bindings for arch-vt8500 devices
ARM: vt8500: gpio: Devicetree support for arch-vt8500
Documentation/devicetree/bindings/arm/vt8500.txt | 15 + .../bindings/arm/vt8500/via,vt8500-intc.txt | 16 + .../bindings/arm/vt8500/via,vt8500-pmc.txt | 13 + .../bindings/arm/vt8500/via,vt8500-timer.txt | 15 + .../devicetree/bindings/gpio/gpio_vt8500.txt | 24 ++ .../devicetree/bindings/rtc/via,vt8500-rtc.txt | 15 + .../bindings/tty/serial/via,vt8500-uart.txt | 15 + .../devicetree/bindings/usb/platform-uhci.txt | 15 + .../devicetree/bindings/usb/via,vt8500-ehci.txt | 15 + .../devicetree/bindings/vendor-prefixes.txt | 2 + .../devicetree/bindings/video/via,vt8500-fb.txt | 46 +++ .../devicetree/bindings/video/wm,prizm-ge-rops.txt | 13 + .../devicetree/bindings/video/wm,wm8505-fb.txt | 20 ++ arch/arm/Kconfig | 2 + arch/arm/boot/dts/vt8500.dtsi | 99 ++++++ arch/arm/boot/dts/vt8500_ref.dts | 31 ++ arch/arm/boot/dts/wm8505.dtsi | 125 ++++++++ arch/arm/boot/dts/wm8505_ref.dts | 31 ++ arch/arm/boot/dts/wm8650.dtsi | 95 ++++++ arch/arm/boot/dts/wm8650_ref.dts | 31 ++ arch/arm/mach-vt8500/Kconfig | 72 +---- arch/arm/mach-vt8500/Makefile | 9 +- arch/arm/mach-vt8500/bv07.c | 80 ----- arch/arm/mach-vt8500/common.h | 25 ++ arch/arm/mach-vt8500/devices-vt8500.c | 91 ------ arch/arm/mach-vt8500/devices-wm8505.c | 99 ------ arch/arm/mach-vt8500/devices.c | 270 ----------------- arch/arm/mach-vt8500/devices.h | 88 ------ arch/arm/mach-vt8500/gpio.c | 240 --------------- arch/arm/mach-vt8500/include/mach/restart.h | 4 +- arch/arm/mach-vt8500/include/mach/vt8500_irqs.h | 88 ------ arch/arm/mach-vt8500/include/mach/vt8500_regs.h | 79 ----- arch/arm/mach-vt8500/include/mach/wm8505_irqs.h | 115 ------- arch/arm/mach-vt8500/include/mach/wm8505_regs.h | 78 ----- arch/arm/mach-vt8500/irq.c | 160 +++++----- arch/arm/mach-vt8500/restart.c | 54 ---- arch/arm/mach-vt8500/timer.c | 56 +++- arch/arm/mach-vt8500/vt8500.c | 192 ++++++++++++ arch/arm/mach-vt8500/wm8505_7in.c | 79 ----- drivers/gpio/Kconfig | 6 + drivers/gpio/Makefile | 1 + drivers/gpio/gpio-vt8500.c | 318 ++++++++++++++++++++ drivers/rtc/rtc-vt8500.c | 7 + drivers/tty/serial/vt8500_serial.c | 7 + drivers/usb/host/Kconfig | 4 +- drivers/usb/host/ehci-vt8500.c | 24 +- drivers/usb/host/uhci-hcd.c | 5 + drivers/usb/host/uhci-platform.c | 166 ++++++++++ drivers/video/Kconfig | 6 +- drivers/video/vt8500lcdfb.c | 77 ++++- drivers/video/wm8505fb.c | 95 +++++- drivers/video/wmt_ge_rops.c | 7 + 52 files changed, 1674 insertions(+), 1566 deletions(-) create mode 100644 Documentation/devicetree/bindings/arm/vt8500.txt create mode 100644 Documentation/devicetree/bindings/arm/vt8500/via,vt8500-intc.txt create mode 100644 Documentation/devicetree/bindings/arm/vt8500/via,vt8500-pmc.txt create mode 100644 Documentation/devicetree/bindings/arm/vt8500/via,vt8500-timer.txt create mode 100644 Documentation/devicetree/bindings/gpio/gpio_vt8500.txt create mode 100644 Documentation/devicetree/bindings/rtc/via,vt8500-rtc.txt create mode 100644 Documentation/devicetree/bindings/tty/serial/via,vt8500-uart.txt create mode 100644 Documentation/devicetree/bindings/usb/platform-uhci.txt create mode 100644 Documentation/devicetree/bindings/usb/via,vt8500-ehci.txt create mode 100644 Documentation/devicetree/bindings/video/via,vt8500-fb.txt create mode 100644 Documentation/devicetree/bindings/video/wm,prizm-ge-rops.txt create mode 100644 Documentation/devicetree/bindings/video/wm,wm8505-fb.txt create mode 100644 arch/arm/boot/dts/vt8500.dtsi create mode 100644 arch/arm/boot/dts/vt8500_ref.dts create mode 100644 arch/arm/boot/dts/wm8505.dtsi create mode 100644 arch/arm/boot/dts/wm8505_ref.dts create mode 100644 arch/arm/boot/dts/wm8650.dtsi create mode 100644 arch/arm/boot/dts/wm8650_ref.dts delete mode 100644 arch/arm/mach-vt8500/bv07.c create mode 100644 arch/arm/mach-vt8500/common.h delete mode 100644 arch/arm/mach-vt8500/devices-vt8500.c delete mode 100644 arch/arm/mach-vt8500/devices-wm8505.c delete mode 100644 arch/arm/mach-vt8500/devices.c delete mode 100644 arch/arm/mach-vt8500/devices.h delete mode 100644 arch/arm/mach-vt8500/gpio.c delete mode 100644 arch/arm/mach-vt8500/include/mach/vt8500_irqs.h delete mode 100644 arch/arm/mach-vt8500/include/mach/vt8500_regs.h delete mode 100644 arch/arm/mach-vt8500/include/mach/wm8505_irqs.h delete mode 100644 arch/arm/mach-vt8500/include/mach/wm8505_regs.h delete mode 100644 arch/arm/mach-vt8500/restart.c create mode 100644 arch/arm/mach-vt8500/vt8500.c delete mode 100644 arch/arm/mach-vt8500/wm8505_7in.c create mode 100644 drivers/gpio/gpio-vt8500.c create mode 100644 drivers/usb/host/uhci-platform.c
Signature · 1 line
1.7.9.5
PATCH 1/8 arm: vt8500: Add device tree files for VIA/Wondermedia SoC's
Add device tree files for VT8500, WM8505 and WM8650 SoC's and reference boards.
--- arch/arm/boot/dts/vt8500.dtsi | 99 ++++++++++++++++++++++++++++++ arch/arm/boot/dts/vt8500_ref.dts | 31 ++++++++++ arch/arm/boot/dts/wm8505.dtsi | 125 ++++++++++++++++++++++++++++++++++++++ arch/arm/boot/dts/wm8505_ref.dts | 31 ++++++++++ arch/arm/boot/dts/wm8650.dtsi | 95 +++++++++++++++++++++++++++++ arch/arm/boot/dts/wm8650_ref.dts | 31 ++++++++++ 6 files changed, 412 insertions(+) create mode 100644 arch/arm/boot/dts/vt8500.dtsi create mode 100644 arch/arm/boot/dts/vt8500_ref.dts create mode 100644 arch/arm/boot/dts/wm8505.dtsi create mode 100644 arch/arm/boot/dts/wm8505_ref.dts create mode 100644 arch/arm/boot/dts/wm8650.dtsi create mode 100644 arch/arm/boot/dts/wm8650_ref.dts
arch/arm/boot/dts/vt8500.dtsi new file +99 -0
@@ -0,0 +1,99 @@ +/* + * vt8500.dtsi - Device tree file for VIA VT8500 SoC + * + * Copyright (C) 2012 Tony Prisk <[email protected]> + * + * Licensed under GPLv2 or later + */ + +/include/ "skeleton.dtsi" + +/ { + compatible = "via,vt8500"; + + soc { + #address-cells = <1>; + #size-cells = <1>; + compatible = "simple-bus"; + ranges; + interrupt-parent = <&intc>; + + intc: interrupt-controller at d8140000 { + compatible = "via,vt8500-intc"; + interrupt-controller; + reg = <0xd8140000 0x10000>; + #interrupt-cells = <1>; + }; + + gpio: gpio-controller at d8110000 { + compatible = "via,vt8500-gpio"; + gpio-controller; + reg = <0xd8110000 0x10000>; + #gpio-cells = <3>; + }; + + pmc at d8130000 { + compatible = "via,vt8500-pmc"; + reg = <0xd8130000 0x1000>; + }; + + timer at d8130100 { + compatible = "via,vt8500-timer"; + reg = <0xd8130100 0x28>; + interrupts = <36>; + }; + + ehci at d8007900 { + compatible = "via,vt8500-ehci"; + reg = <0xd8007900 0x200>; + interrupts = <43>; + }; + + uhci at d8007b00 { + compatible = "platform-uhci"; + reg = <0xd8007b00 0x200>; + interrupts = <43>; + }; + + fb at d800e400 { + compatible = "via,vt8500-fb"; + reg = <0xd800e400 0x400>; + interrupts = <12>; + }; + + ge_rops at d8050400 { + compatible = "wm,prizm-ge-rops"; + reg = <0xd8050400 0x100>; + }; + + uart at d8200000 { + compatible = "via,vt8500-uart"; + reg = <0xd8200000 0x1040>; + interrupts = <32>; + }; + + uart at d82b0000 { + compatible = "via,vt8500-uart"; + reg = <0xd82b0000 0x1040>; + interrupts = <33>; + }; + + uart at d8210000 { + compatible = "via,vt8500-uart"; + reg = <0xd8210000 0x1040>; + interrupts = <47>; + }; + + uart at d82c0000 { + compatible = "via,vt8500-uart"; + reg = <0xd82c0000 0x1040>; + interrupts = <50>; + }; + + rtc at d8100000 { + compatible = "via,vt8500-rtc"; + reg = <0xd8100000 0x10000>; + interrupts = <48>; + }; + }; +};
arch/arm/boot/dts/vt8500_ref.dts new file +31 -0
@@ -0,0 +1,31 @@ +/* + * vt8500_ref.dts - Device tree file for Benign BV07 Netbook + * + * Copyright (C) 2012 Tony Prisk <[email protected]> + * + * Licensed under GPLv2 or later + */ + +/dts-v1/; +/include/ "vt8500.dtsi" + +/ { + model = "Benign BV07 Netbook"; + + /* + * Display node is based on Sascha Hauer's patch on dri-devel. + * Added a bpp property to calculate the size of the framebuffer + * until the binding is formalized. + */ + display { + xres = <800>; + yres = <480>; + left-margin = <88>; + right-margin = <40>; + hsync-len = <0>; + upper-margin = <32>; + lower-margin = <11>; + vsync-len = <1>; + bpp = <16>; + }; +};
arch/arm/boot/dts/wm8505.dtsi new file +125 -0
125 lines not on this page · raw message
arch/arm/boot/dts/wm8505_ref.dts new file +31 -0
@@ -0,0 +1,31 @@ +/* + * wm8505_ref.dts - Device tree file for Wondermedia WM8505 reference board + * + * Copyright (C) 2012 Tony Prisk <[email protected]> + * + * Licensed under GPLv2 or later + */ + +/dts-v1/; +/include/ "wm8505.dtsi" + +/ { + model = "Wondermedia WM8505"; + + /* + * Display node is based on Sascha Hauer's patch on dri-devel. + * Added a bpp property to calculate the size of the framebuffer + * until the binding is formalized. + */ + display { + xres = <800>; + yres = <480>; + left-margin = <88>; + right-margin = <40>; + hsync-len = <0>; + upper-margin = <32>; + lower-margin = <11>; + vsync-len = <1>; + bpp = <32>; + }; +};
arch/arm/boot/dts/wm8650.dtsi new file +95 -0
95 lines not on this page · raw message
arch/arm/boot/dts/wm8650_ref.dts new file +31 -0
@@ -0,0 +1,31 @@ +/* + * wm8650_ref.dts - Device tree file for Wondermedia WM8650 reference board + * + * Copyright (C) 2012 Tony Prisk <[email protected]> + * + * Licensed under GPLv2 or later + */ + +/dts-v1/; +/include/ "wm8650.dtsi" + +/ { + model = "Wondermedia WM8650"; + + /* + * Display node is based on Sascha Hauer's patch on dri-devel. + * Added a bpp property to calculate the size of the framebuffer + * until the binding is formalized. + */ + display { + xres = <800>; + yres = <480>; + left-margin = <88>; + right-margin = <40>; + hsync-len = <0>; + upper-margin = <32>; + lower-margin = <11>; + vsync-len = <1>; + bpp = <16>; + }; +};
Signature · 1 line
1.7.9.5
Re: [PATCH 1/8] arm: vt8500: Add device tree files for VIA/Wondermedia SoC's
arch/arm/boot/dts/vt8500_ref.dts
Quoted 4 lines · Tony Prisk
Add device tree files for VT8500, WM8505 and WM8650 SoC's and reference boards.
arch/arm/boot/dts/vt8500_ref.dts +0
-0
It appears more typical to use "-" rather than "_" in the filename to join SoC and board names.
I guess "_ref" means "reference". Is that how the boards are commonly known? Are you sure there will never be another reference board for these SoCs? Given the "model" values in the file, something more like vt8500-bv07.dts might be more appropriate?
arch/arm/boot/dts/vt8500_ref.dts line 20
Quoted 6 lines
arch/arm/boot/dts/vt8500_ref.dts +6
-0+ /* + * Display node is based on Sascha Hauer's patch on dri-devel. + * Added a bpp property to calculate the size of the framebuffer + * until the binding is formalized. + */ + display {
Maybe it's better to just hold off on adding this node, to wait until the binding is complete so this file doesn't churn? Certainly it sounded like Sascha was going to change the binding a little in response to comments it received.
PATCH 1/8 arm: vt8500: Add device tree files for VIA/Wondermedia SoC's
Quoted 2 lines
It appears more typical to use "-" rather than "_" in the filename to join SoC and board names.
Fixed.
Quoted 4 lines
I guess "
_ref" means "reference". Is that how the boards are commonly known? Are you sure there will never be another reference board for these SoCs? Given the "model" values in the file, something more likevt8500-bv07.dtsmight be more appropriate?
I'm fairly certain there will never be another reference board, as these SoC's seem to disappear after a few months and a new one comes out. Most of the models are chinese in origin with no real identifying names. Having said that, I have renamed the dts files to a less 'generic' name. vt8500-bv07.dts, wm8850-mid.dts.
wm8505-ref is the same as I can't find any other identification for it, and everyone else I've had contact with who has one has the same board design.
Quoted 11 lines
arch/arm/boot/dts/vt8500_ref.dts line 20
Quoted 6 lines
arch/arm/boot/dts/vt8500_ref.dts new file +6
-0+ /* + * Display node is based on Sascha Hauer's patch on dri-devel. + * Added a bpp property to calculate the size of the framebuffer + * until the binding is formalized. + */ + display {Maybe it's better to just hold off on adding this node, to wait until the binding is complete so this file doesn't churn? Certainly it sounded like Sascha was going to change the binding a little in response to comments it received.
My understanding with Sascha's patch is that it won't include a pixel format property and therefore we won't be able to use his binding properly until its revisited. Without this node, we have no display output available other than uart - and that's only available if you modify the hardware.
This patchset will make arch-vt8500 nearly unusable without this node as we would have to leave the framebuffer code out as well.
Always open to suggestions,
Regards
Tony Prisk
PATCH 2/8 rtc: vt8500: Add devicetree support for vt8500-rtc
In reply to Tony Prisk--- drivers/rtc/rtc-vt8500.c | 7 +++++++ 1 file changed, 7 insertions(+)
drivers/rtc/rtc-vt8500.c +7 -0
@@ -23,6 +23,7 @@#include <linux/bcd.h> #include <linux/platform_device.h> #include <linux/slab.h> +#include <linux/of.h> /* * Register definitions
@@ -302,12 +303,18 @@ static int __devexit vt8500_rtc_remove(struct platform_device *pdev)return 0 ; } +static const struct of_device_id wmt_dt_ids[] = { + { .compatible ="via,vt8500-rtc" , }, + {} +}; +static struct platform_driver vt8500_rtc_driver = { .probe = vt8500_rtc_probe, .remove =__devexit_p (vt8500_rtc_remove), .driver = { .name ="vt8500-rtc" , .owner =THIS_MODULE , + .of_match_table =of_match_ptr (wmt_dt_ids), }, };
Signature · 1 line
1.7.9.5
PATCH 3/8 serial: vt8500: Add devicetree support for vt8500-serial
In reply to Tony Prisk--- drivers/tty/serial/vt8500_serial.c | 7 +++++++ 1 file changed, 7 insertions(+)
drivers/tty/serial/vt8500_serial.c +7 -0
@@ -34,6 +34,7 @@#include <linux/slab.h> #include <linux/clk.h> #include <linux/platform_device.h> +#include <linux/of.h> /* * UART Register offsets
@@ -603,12 +604,18 @@ static int __devexit vt8500_serial_remove(struct platform_device *pdev)return 0 ; } +static const struct of_device_id wmt_dt_ids[] = { + { .compatible ="via,vt8500-uart" , }, + {} +}; +static struct platform_driver vt8500_platform_driver = { .probe = vt8500_serial_probe, .remove =__devexit_p (vt8500_serial_remove), .driver = { .name ="vt8500_serial" , .owner =THIS_MODULE , + .of_match_table =of_match_ptr (wmt_dt_ids), }, };
Signature · 1 line
1.7.9.5
PATCH 4/8 usb: vt8500: Add devicetree support for vt8500-ehci and -uhci.
In reply to Tony PriskAdd devicetree support for vt8500-ehci.
Convert vt8500-uhci to a generic non-pci platform-uhci with device tree support.
--- drivers/usb/host/Kconfig | 4 +- drivers/usb/host/ehci-vt8500.c | 24 ++++-- drivers/usb/host/uhci-hcd.c | 5 ++ drivers/usb/host/uhci-platform.c | 166 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 191 insertions(+), 8 deletions(-) create mode 100644 drivers/usb/host/uhci-platform.c
drivers/usb/host/Kconfig +2 -2
@@ -450,7 +450,7 @@ config USB_OHCI_LITTLE_ENDIAN config USB_UHCI_HCD tristate "UHCI HCD (most Intel and VIA) support" - depends on USB && (PCI || SPARC_LEON) + depends on USB && (PCI || SPARC_LEON || ARCH_VT8500) ---help--- The Universal Host Controller Interface is a standard by Intel for accessing the USB hardware in the PC (which is also called the USB
@@ -468,7 +468,7 @@ config USB_UHCI_HCD config USB_UHCI_SUPPORT_NON_PCI_HC bool depends on USB_UHCI_HCD - default y if SPARC_LEON + default y if (SPARC_LEON || ARCH_VT8500) config USB_UHCI_BIG_ENDIAN_MMIO bool
drivers/usb/host/ehci-vt8500.c +18 -6
@@ -16,6 +16,7 @@* */ +#include <linux/of.h> #include <linux/platform_device.h> static int ehci_update_device (struct usb_hcd *hcd,struct usb_device *udev)
@@ -84,20 +85,23 @@ static const struct hc_driver vt8500_ehci_hc_driver = { .clear_tt_buffer_complete = ehci_clear_tt_buffer_complete, }; +static u64 wmt_ehci_dma_mask =DMA_BIT_MASK (32 ); +static int vt8500_ehci_drv_probe (struct platform_device *pdev) {struct usb_hcd *hcd;struct ehci_hcd *ehci;struct resource *res; +int irq;int ret;if (usb_disabled ())return -ENODEV ; -if (pdev->resource[1 ].flags !=IORESOURCE_IRQ ) { -pr_debug ("resource[1] is not IORESOURCE_IRQ" ); -return -ENOMEM ; - } +/* devicetree created devices don't specify a dma mask */ +if (!pdev->dev.dma_mask) + pdev->dev.dma_mask = &wmt_ehci_dma_mask; + hcd =usb_create_hcd (&vt8500_ehci_hc_driver, &pdev->dev,"VT8500" );if (!hcd)return -ENOMEM ;
@@ -134,8 +138,9 @@ static int vt8500_ehci_drv_probe(struct platform_device *pdev)ehci_reset (ehci); - ret =usb_add_hcd (hcd, pdev->resource[1 ].start, -IRQF_SHARED ); + irq =platform_get_irq (pdev,0 ); + + ret =usb_add_hcd (hcd, irq,IRQF_SHARED );if (ret ==0 ) {platform_set_drvdata (pdev, hcd);return ret;
@@ -162,6 +167,11 @@ static int vt8500_ehci_drv_remove(struct platform_device *pdev)return 0 ; } +static const struct of_device_id vt8500_ehci_ids[] = { + { .compatible ="via,vt8500-ehci" , }, + {} +}; +static struct platform_driver vt8500_ehci_driver = { .probe = vt8500_ehci_drv_probe, .remove = vt8500_ehci_drv_remove,
@@ -169,7 +179,9 @@ static struct platform_driver vt8500_ehci_driver = { .driver = { .name = "vt8500-ehci", .owner = THIS_MODULE, + .of_match_table = of_match_ptr(vt8500_ehci_ids), } };MODULE_ALIAS ("platform:vt8500-ehci" ); +MODULE_DEVICE_TABLE (of, vt8500_ehci_ids);
drivers/usb/host/uhci-hcd.c +5 -0
@@ -846,6 +846,11 @@ static const char hcd_name[] = "uhci_hcd";#define PLATFORM_DRIVER uhci_grlib_driver#endif +#ifdef CONFIG_ARCH_VT8500 +#include "uhci-platform.c" +#define PLATFORM_DRIVER uhci_platform_driver +#endif +#if !defined(PCI_DRIVER ) && !defined(PLATFORM_DRIVER )#error "missing bus glue for uhci-hcd"#endif
drivers/usb/host/uhci-platform.c new file +166 -0
166 lines not on this page · raw message
Signature · 1 line
1.7.9.5
PATCH 5/8 video: vt8500: Add devicetree support for vt8500-fb and wm8505-fb
In reply to Tony PriskUpdate vt8500-fb, wm8505-fb and wmt-ge-rops to support device tree bindings.
Small change in wm8505-fb.c to support WM8650 framebuffer color format.
--- drivers/video/Kconfig | 6 +-- drivers/video/vt8500lcdfb.c | 77 ++++++++++++++++++++++++++++++----- drivers/video/wm8505fb.c | 95 ++++++++++++++++++++++++++++++++++++------- drivers/video/wmt_ge_rops.c | 7 ++++ 4 files changed, 158 insertions(+), 27 deletions(-)
drivers/video/Kconfig +3 -3
@@ -1788,7 +1788,7 @@ config FB_AU1200 config FB_VT8500 bool "VT8500 LCD Driver" - depends on (FB = y) && ARM && ARCH_VT8500 && VTWM_VERSION_VT8500 + depends on (FB = y) && ARM && ARCH_VT8500 select FB_WMT_GE_ROPS select FB_SYS_IMAGEBLIT help
@@ -1797,11 +1797,11 @@ config FB_VT8500 config FB_WM8505 bool "WM8505 frame buffer support" - depends on (FB = y) && ARM && ARCH_VT8500 && VTWM_VERSION_WM8505 + depends on (FB = y) && ARM && ARCH_VT8500 select FB_WMT_GE_ROPS select FB_SYS_IMAGEBLIT help - This is the framebuffer driver for WonderMedia WM8505 + This is the framebuffer driver for WonderMedia WM8505/WM8650 integrated LCD controller. source "drivers/video/geode/Kconfig"
drivers/video/vt8500lcdfb.c +67 -10
122 lines not on this page · raw message
drivers/video/wm8505fb.c +81 -14
153 lines not on this page · raw message
drivers/video/wmt_ge_rops.c +7 -0
@@ -158,12 +158,18 @@ static int __devexit wmt_ge_rops_remove(struct platform_device *pdev)return 0 ; } +static const struct of_device_id wmt_dt_ids[] = { + { .compatible ="wm,prizm-ge-rops" , }, + {/* sentinel */ } +}; +static struct platform_driver wmt_ge_rops_driver = { .probe = wmt_ge_rops_probe, .remove =__devexit_p (wmt_ge_rops_remove), .driver = { .owner =THIS_MODULE , .name ="wmt_ge_rops" , + .of_match_table =of_match_ptr (wmt_dt_ids), }, };
@@ -173,3 +179,4 @@ MODULE_AUTHOR("Alexey Charkov <[email protected]");MODULE_DESCRIPTION ("Accelerators for raster operations using " "WonderMedia Graphics Engine" );MODULE_LICENSE ("GPL" ); +MODULE_DEVICE_TABLE (of, wmt_dt_ids);
Signature · 1 line
1.7.9.5
Re: [PATCH 5/8] video: vt8500: Add devicetree support for vt8500-fb and wm8505-fb
Quoted 5 lines · Tony Prisk
Update vt8500-fb, wm8505-fb and wmt-ge-rops to support device tree bindings.
Small change in
wm8505-fb.cto support WM8650 framebuffer color format.
That might warrant a separate patch?
drivers/video/vt8500lcdfb.c static int __devinit vt8500lcd_probe(struct platform_device *pdev) · line 354
Quoted 8 lines
drivers/video/vt8500lcdfb.c +6
-0+ np =of_find_node_by_name (NULL ,"display" ); +if (!np) { +pr_err ("%s: No display description in Device Tree\n" , __func__); + ret = -EINVAL ; + goto failed_free_res; + }
I believe that using hard-coded node names is frowned upon. Better would be to put a phandle into the display controller's node that points at the node representing the display, e.g.:
fb at d800e400 {
compatible = "via,vt8500-fb";
reg = <0xd800e400 0x400>;
interrupts = <12>;
via,display = <&display>;
};
display: display {
...
};PATCH 5/8 video: vt8500: Add devicetree support for vt8500-fb and wm8505-fb
Quoted 8 lines · Tony Prisk
Quoted 5 lines
Update vt8500-fb, wm8505-fb and wmt-ge-rops to support device tree bindings.
Small change in
wm8505-fb.cto support WM8650 framebuffer color format.That might warrant a separate patch?
The patch consisted of changing one value in one line and is commented in the source. I didn't think it justified a separate patch as it has been thoroughly tested and is unlikely to cause any problems.
Quoted 9 lines
drivers/video/vt8500lcdfb.c static int __devinit vt8500lcd_probe(struct platform_device *pdev) · line 354
Quoted 8 lines
drivers/video/vt8500lcdfb.c +6
-0+ np =of_find_node_by_name (NULL ,"display" ); +if (!np) { +pr_err ("%s: No display description in Device Tree\n" , __func__); + ret = -EINVAL ; + goto failed_free_res; + }
Quoted 3 lines
I believe that using hard-coded node names is frowned upon. Better would be to put a phandle into the display controller's node that points at the node representing the display, e.g.:
Will do.
Regards
Tony Prisk
PATCH 5/8 video: vt8500: Add devicetree support for vt8500-fb and wm8505-fb
Quoted 13 lines · Tony Prisk
Quoted 12 lines · Tony Prisk
Quoted 11 lines
Update vt8500-fb, wm8505-fb and wmt-ge-rops to support device tree bindings.
drivers/video/vt8500lcdfb.c +6
-0+ np =of_find_node_by_name (NULL ,"display" ); +if (!np) { +pr_err ("%s: No display description in Device Tree\n" , __func__); + ret = -EINVAL ; + goto failed_free_res; + }
Quoted 5 lines
Quoted 3 lines
I believe that using hard-coded node names is frowned upon. Better would be to put a phandle into the display controller's node that points at the node representing the display, e.g.:
Will do.
I don't think this change made it into v2?
PATCH 6/8 arm: vt8500: Update arch-vt8500 to devicetree support.
In reply to Tony PriskMerged existing board files to a single dt-capable file. Converted irq and timer code to devicetree.
Removed existing device files that are no longer required with devicetree support.
All existing platform devices are converted to devicetree nodes except GPIO and PWM.
GPIO support was limited to VT8500 (non-working on WM8505).
Removed restart.c and moved code into vt8500.c to remove duplicate PMC code.
--- arch/arm/Kconfig | 2 + arch/arm/mach-vt8500/Kconfig | 72 +----- arch/arm/mach-vt8500/Makefile | 9 +- arch/arm/mach-vt8500/bv07.c | 80 ------- arch/arm/mach-vt8500/common.h | 25 +++ arch/arm/mach-vt8500/devices-vt8500.c | 91 -------- arch/arm/mach-vt8500/devices-wm8505.c | 99 --------- arch/arm/mach-vt8500/devices.c | 270 ----------------------- arch/arm/mach-vt8500/devices.h | 88 -------- arch/arm/mach-vt8500/gpio.c | 240 -------------------- arch/arm/mach-vt8500/include/mach/restart.h | 4 +- arch/arm/mach-vt8500/include/mach/vt8500_irqs.h | 88 -------- arch/arm/mach-vt8500/include/mach/vt8500_regs.h | 79 ------- arch/arm/mach-vt8500/include/mach/wm8505_irqs.h | 115 ---------- arch/arm/mach-vt8500/include/mach/wm8505_regs.h | 78 ------- arch/arm/mach-vt8500/irq.c | 160 +++++++------- arch/arm/mach-vt8500/restart.c | 54 ----- arch/arm/mach-vt8500/timer.c | 56 +++-- arch/arm/mach-vt8500/vt8500.c | 192 ++++++++++++++++ arch/arm/mach-vt8500/wm8505_7in.c | 79 ------- 20 files changed, 350 insertions(+), 1531 deletions(-) delete mode 100644 arch/arm/mach-vt8500/bv07.c create mode 100644 arch/arm/mach-vt8500/common.h delete mode 100644 arch/arm/mach-vt8500/devices-vt8500.c delete mode 100644 arch/arm/mach-vt8500/devices-wm8505.c delete mode 100644 arch/arm/mach-vt8500/devices.c delete mode 100644 arch/arm/mach-vt8500/devices.h delete mode 100644 arch/arm/mach-vt8500/gpio.c delete mode 100644 arch/arm/mach-vt8500/include/mach/vt8500_irqs.h delete mode 100644 arch/arm/mach-vt8500/include/mach/vt8500_regs.h delete mode 100644 arch/arm/mach-vt8500/include/mach/wm8505_irqs.h delete mode 100644 arch/arm/mach-vt8500/include/mach/wm8505_regs.h delete mode 100644 arch/arm/mach-vt8500/restart.c create mode 100644 arch/arm/mach-vt8500/vt8500.c delete mode 100644 arch/arm/mach-vt8500/wm8505_7in.c
arch/arm/Kconfig +2 -0
@@ -996,6 +996,7 @@ config ARCH_VT8500 select GENERIC_CLOCKEVENTS select ARCH_REQUIRE_GPIOLIB select HAVE_PWM + select USE_OF help Support for VIA/WonderMedia VT8500/WM85xx System-on-Chip.
@@ -1613,6 +1614,7 @@ config ARCH_NR_GPIO default 355 if ARCH_U8500 default 264 if MACH_H4700 default 512 if SOC_OMAP5 + default 288 if ARCH_VT8500 default 0 help Maximum number of GPIOs in the system.
arch/arm/mach-vt8500/Kconfig +7 -65
80 lines not on this page · raw message
arch/arm/mach-vt8500/Makefile +2 -7
@@ -1,9 +1,4 @@ -obj-y += devices.o gpio.o irq.o timer.o restart.o - -obj-$(CONFIG_VTWM_VERSION_VT8500) += devices-vt8500.o -obj-$(CONFIG_VTWM_VERSION_WM8505) += devices-wm8505.o - -obj-$(CONFIG_MACH_BV07) += bv07.o -obj-$(CONFIG_MACH_WM8505_7IN_NETBOOK) += wm8505_7in.o +obj-$(CONFIG_VTWM_VERSION_WMT_DT) += irq.o timer.o +obj-$(CONFIG_MACH_WMT_DT) += vt8500.o obj-$(CONFIG_HAVE_PWM) += pwm.o
arch/arm/mach-vt8500/bv07.c deleted +0 -80
80 lines not on this page · raw message
arch/arm/mach-vt8500/common.h new file +25 -0
@@ -0,0 +1,25 @@ +/* linux/arch/arm/mach-vt8500/dt_common.h +* +* Copyright (C) 2012 Tony Prisk <[email protected]> +* +* This software is licensed under the terms of the GNU General Public +* License version 2, as published by the Free Software Foundation, and +* may be copied, distributed, and modified under those terms. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +*/ + +#ifndef __ARCH_ARM_MACH_VT8500_DT_COMMON_H +#define __ARCH_ARM_MACH_VT8500_DT_COMMON_H + +#include <linux/of.h> + +void __init vt8500_timer_init (void ); +int __init vt8500_irq_init (struct device_node *node, +struct device_node *parent); + +#endif
arch/arm/mach-vt8500/devices-vt8500.c deleted +0 -91
91 lines not on this page · raw message
arch/arm/mach-vt8500/devices-wm8505.c deleted +0 -99
99 lines not on this page · raw message
arch/arm/mach-vt8500/devices.c deleted +0 -270
270 lines not on this page · raw message
arch/arm/mach-vt8500/devices.h deleted +0 -88
88 lines not on this page · raw message
arch/arm/mach-vt8500/gpio.c deleted +0 -240
240 lines not on this page · raw message
arch/arm/mach-vt8500/include/mach/restart.h +2 -2
@@ -13,5 +13,5 @@* */ -void wmt_setup_restart (void ); -void wmt_restart (char mode,const char *cmd); +void vt8500_setup_restart (void ); +void vt8500_restart (char mode,const char *cmd);
arch/arm/mach-vt8500/include/mach/vt8500_irqs.h deleted +0 -88
88 lines not on this page · raw message
arch/arm/mach-vt8500/include/mach/vt8500_regs.h deleted +0 -79
79 lines not on this page · raw message
arch/arm/mach-vt8500/include/mach/wm8505_irqs.h deleted +0 -115
115 lines not on this page · raw message
arch/arm/mach-vt8500/include/mach/wm8505_regs.h deleted +0 -78
78 lines not on this page · raw message
arch/arm/mach-vt8500/irq.c +79 -81
239 lines not on this page · raw message
arch/arm/mach-vt8500/restart.c deleted +0 -54
54 lines not on this page · raw message
arch/arm/mach-vt8500/timer.c +41 -15
117 lines not on this page · raw message
arch/arm/mach-vt8500/vt8500.c new file +192 -0
192 lines not on this page · raw message
arch/arm/mach-vt8500/wm8505_7in.c deleted +0 -79
79 lines not on this page · raw message
Signature · 1 line
1.7.9.5
Re: [PATCH 6/8] arm: vt8500: Update arch-vt8500 to devicetree support.
Quoted 7 lines · Tony Prisk
Merged existing board files to a single dt-capable file. Converted irq and timer code to devicetree.
Removed existing device files that are no longer required with devicetree support.All existing platform devices are converted to devicetree nodes except GPIO and PWM.
Perhaps that also explains what I was commenting on in the GPIO driver patch. Why not convert GPIO too?
arch/arm/mach-vt8500/irq.c line 2
Quoted 5 lines
arch/arm/mach-vt8500/irq.c +1
-1/* -* arch/arm/mach-vt8500/irq.c +* arch/arm/mach-vt8500/irq_dt.c
This file didn't get renamed?
Quoted 23 lines
arch/arm/mach-vt8500/vt8500.c +21
-0+void __init vt8500_init (void ) +{ +struct device_node *np, *fb; +void __iomem *gpio_base; + +#ifdef CONFIG_FB_VT8500 + fb =of_find_compatible_node (NULL ,NULL ,"via,vt8500-fb" ); +if (fb) { + np =of_find_compatible_node (NULL ,NULL ,"via,vt8500-gpio" ); +if (np) { + gpio_base =of_iomap (np,0 ); + +if (!gpio_base) +pr_err ("%s:of_iomap(gpio_mux) failed\n" , __func__); + +of_node_put (np); + }else { + gpio_base =ioremap (LEGACY_GPIO_BASE ,0x1000 ); +if (!gpio_base) +pr_err ("%s:ioremap(legacy_gpio_mux) failed\n" , __func__); + }
arch/arm/mach-vt8500/vt8500.c line 109
Quoted 10 lines
arch/arm/mach-vt8500/vt8500.c +10
-0+if (gpio_base) { +writel (readl (gpio_base +VT8500_GPIO_MUX_REG ) |1 , + gpio_base +VT8500_GPIO_MUX_REG ); +iounmap (gpio_base); + }else +pr_err ("%s: Could not remap GPIO mux\n" , __func__); + + of_node_put(fb); + } +#endif
That looks quite suspicious. What's it doing? Is this something that should be part of a pinctrl driver, or the GPIO driver?
PATCH 6/8 arm: vt8500: Update arch-vt8500 to devicetree support.
Quoted 11 lines · Tony Prisk
Quoted 7 lines
Merged existing board files to a single dt-capable file. Converted irq and timer code to devicetree.
Removed existing device files that are no longer required with devicetree support.All existing platform devices are converted to devicetree nodes except GPIO and PWM.
Perhaps that also explains what I was commenting on in the GPIO driver patch. Why not convert GPIO too?
GPIO was converted - I hadn't planned on doing it, but apparently I did it anyway :/ Comment is now removed from the commit message.
Quoted 7 lines
arch/arm/mach-vt8500/irq.c line 2
Quoted 5 lines
arch/arm/mach-vt8500/irq.c +1
-1/* -* arch/arm/mach-vt8500/irq.c +* arch/arm/mach-vt8500/irq_dt.c This file didn't get renamed?
Not sure what is going on here. I will take a look - it should just be renamed.
Quoted 28 lines
Quoted 28 lines
arch/arm/mach-vt8500/vt8500.c +26
-0+void __init vt8500_init (void ) +{ +struct device_node *np, *fb; +void __iomem *gpio_base; + +#ifdef CONFIG_FB_VT8500 + fb =of_find_compatible_node (NULL ,NULL ,"via,vt8500-fb" ); +if (fb) { + np =of_find_compatible_node (NULL ,NULL ,"via,vt8500-gpio" ); +if (np) { + gpio_base =of_iomap (np,0 ); + +if (!gpio_base) +pr_err ("%s:of_iomap(gpio_mux) failed\n" , __func__); + +of_node_put (np); + }else { + gpio_base =ioremap (LEGACY_GPIO_BASE ,0x1000 ); +if (!gpio_base) +pr_err ("%s:ioremap(legacy_gpio_mux) failed\n" , __func__); + } +if (gpio_base) { +writel (readl (gpio_base +VT8500_GPIO_MUX_REG ) |1 , + gpio_base +VT8500_GPIO_MUX_REG ); +iounmap (gpio_base); + }else
Quoted 8 lines
arch/arm/mach-vt8500/vt8500.c line 109
Quoted 5 lines
arch/arm/mach-vt8500/vt8500.c +5
-0+pr_err ("%s: Could not remap GPIO mux\n" , __func__); + + of_node_put(fb); + } +#endif That looks quite suspicious. What's it doing? Is this something that should be part of a pinctrl driver, or the GPIO driver?
This code is carried over from the original implementation but converted for device tree. It should be part of a pinctrl driver, but we don't have one. It is basically selecting between CCIR or LCD.
Annoyingly, the bit-fields changed between models, so we have it twice, once for each framebuffer driver. It needs to check for compatible nodes so that it only applies the setting for the framebuffer type being requested by the dts because of the conflicting bit-fields.
Tony Prisk
PATCH 7/8 arm: vt8500: doc: Add device tree bindings for arch-vt8500 devices
In reply to Tony PriskBindings for gpio, interrupt controller, power management controller, timer, realtime clock, serial uart, ehci and uhci controllers and framebuffer controllers used on the arch-vt8500 platform.
Framebuffer binding also specifies a 'display' node which is required for determining the lcd panel data.
--- Documentation/devicetree/bindings/arm/vt8500.txt | 15 +++++++ .../bindings/arm/vt8500/via,vt8500-intc.txt | 16 +++++++ .../bindings/arm/vt8500/via,vt8500-pmc.txt | 13 ++++++ .../bindings/arm/vt8500/via,vt8500-timer.txt | 15 +++++++ .../devicetree/bindings/gpio/gpio_vt8500.txt | 24 ++++++++++ .../devicetree/bindings/rtc/via,vt8500-rtc.txt | 15 +++++++ .../bindings/tty/serial/via,vt8500-uart.txt | 15 +++++++ .../devicetree/bindings/usb/platform-uhci.txt | 15 +++++++ .../devicetree/bindings/usb/via,vt8500-ehci.txt | 15 +++++++ .../devicetree/bindings/vendor-prefixes.txt | 2 + .../devicetree/bindings/video/via,vt8500-fb.txt | 46 ++++++++++++++++++++ .../devicetree/bindings/video/wm,prizm-ge-rops.txt | 13 ++++++ .../devicetree/bindings/video/wm,wm8505-fb.txt | 20 +++++++++ 13 files changed, 224 insertions(+) create mode 100644 Documentation/devicetree/bindings/arm/vt8500.txt create mode 100644 Documentation/devicetree/bindings/arm/vt8500/via,vt8500-intc.txt create mode 100644 Documentation/devicetree/bindings/arm/vt8500/via,vt8500-pmc.txt create mode 100644 Documentation/devicetree/bindings/arm/vt8500/via,vt8500-timer.txt create mode 100644 Documentation/devicetree/bindings/gpio/gpio_vt8500.txt create mode 100644 Documentation/devicetree/bindings/rtc/via,vt8500-rtc.txt create mode 100644 Documentation/devicetree/bindings/tty/serial/via,vt8500-uart.txt create mode 100644 Documentation/devicetree/bindings/usb/platform-uhci.txt create mode 100644 Documentation/devicetree/bindings/usb/via,vt8500-ehci.txt create mode 100644 Documentation/devicetree/bindings/video/via,vt8500-fb.txt create mode 100644 Documentation/devicetree/bindings/video/wm,prizm-ge-rops.txt create mode 100644 Documentation/devicetree/bindings/video/wm,wm8505-fb.txt
Documentation/devicetree/bindings/arm/vt8500.txt new file +15 -0
@@ -0,0 +1,15 @@ +VIA/Wondermedia VT8500 Platforms Device Tree Bindings +--------------------------------------- + +Boards with the VIA VT8500 SoC shall have the following properties: +Required root node property: +compatible = "via,vt8500"; + +Boards with the Wondermedia WM8505 SoC shall have the following properties: +Required root node property: +compatible = "wm,wm8505"; + +Boards with the Wondermedia WM8650 SoC shall have the following properties: +Required root node property: +compatible = "wm,wm8650"; +
Documentation/devicetree/bindings/arm/vt8500/via,vt8500-intc.txt new file +16 -0
@@ -0,0 +1,16 @@ +VIA/Wondermedia VT8500 Interrupt Controller +----------------------------------------------------- + +Required properties: +- compatible : "via,vt8500-intc" +- reg : Should contain 1 register ranges(address and length) +- #interrupt-cells : should be <1> + +Example: + + intc: interrupt-controller at d8140000 { + compatible = "via,vt8500-intc"; + interrupt-controller; + reg = <0xd8140000 0x10000>; + #interrupt-cells = <1>; + };
Documentation/devicetree/bindings/arm/vt8500/via,vt8500-pmc.txt new file +13 -0
@@ -0,0 +1,13 @@ +VIA/Wondermedia VT8500 Power Management Controller +----------------------------------------------------- + +Required properties: +- compatible : "via,vt8500-pmc" +- reg : Should contain 1 register ranges(address and length) + +Example: + + pmc at d8130000 { + compatible = "via,vt8500-pmc"; + reg = <0xd8130000 0x1000>; + };
Documentation/devicetree/bindings/arm/vt8500/via,vt8500-timer.txt new file +15 -0
@@ -0,0 +1,15 @@ +VIA/Wondermedia VT8500 Timer +----------------------------------------------------- + +Required properties: +- compatible : "via,vt8500-timer" +- reg : Should contain 1 register ranges(address and length) +- interrupts : interrupt for the timer + +Example: + + timer at d8130100 { + compatible = "via,vt8500-timer"; + reg = <0xd8130100 0x28>; + interrupts = <36>; + };
Documentation/devicetree/bindings/gpio/gpio_vt8500.txt new file +24 -0
@@ -0,0 +1,24 @@ +VIA/Wondermedia VT8500 GPIO Controller +----------------------------------------------------- + +Required properties: +- compatible : "via,vt8500-gpio", "wm,wm8505-gpio" + or "wm,wm8650-gpio" depending on your SoC +- reg : Should contain 1 register range (address and length) +- #gpio-cells : should be <3>. + 1) bank + 2) pin number + 3) flags + +Example: + + gpio: gpio-controller at d8110000 { + compatible = "via,vt8500-gpio"; + gpio-controller; + reg = <0xd8110000 0x10000>; + #gpio-cells = <3>; + }; + + vibrate { + gpios = <&gpio 0 1 0>; /* Bank 0, Pin 1, No flags */ + };
Documentation/devicetree/bindings/rtc/via,vt8500-rtc.txt new file +15 -0
@@ -0,0 +1,15 @@ +VIA/Wondermedia VT8500 Realtime Clock Controller +----------------------------------------------------- + +Required properties: +- compatible : "via,vt8500-rtc" +- reg : Should contain 1 register ranges(address and length) +- interrupts : alarm interrupt + +Example: + + rtc at d8100000 { + compatible = "via,vt8500-rtc"; + reg = <0xd8100000 0x10000>; + interrupts = <48>; + };
Documentation/devicetree/bindings/tty/serial/via,vt8500-uart.txt new file +15 -0
@@ -0,0 +1,15 @@ +VIA/Wondermedia VT8500 UART Controller +----------------------------------------------------- + +Required properties: +- compatible : "via,vt8500-uart" +- reg : Should contain 1 register ranges(address and length) +- interrupts : UART interrupt + +Example: + + uart at d8210000 { + compatible = "via,vt8500-uart"; + reg = <0xd8210000 0x1040>; + interrupts = <47>; + };
Documentation/devicetree/bindings/usb/platform-uhci.txt new file +15 -0
@@ -0,0 +1,15 @@ +Generic Platform UHCI Controller +----------------------------------------------------- + +Required properties: +- compatible : "platform-uhci" +- reg : Should contain 1 register ranges(address and length) +- interrupts : UHCI controller interrupt + +Example: + + uhci at d8007b00 { + compatible = "platform-uhci"; + reg = <0xd8007b00 0x200>; + interrupts = <43>; + };
Documentation/devicetree/bindings/usb/via,vt8500-ehci.txt new file +15 -0
@@ -0,0 +1,15 @@ +VIA/Wondermedia VT8500 EHCI Controller +----------------------------------------------------- + +Required properties: +- compatible : "via,vt8500-ehci" +- reg : Should contain 1 register ranges(address and length) +- interrupts : ehci controller interrupt + +Example: + + ehci at d8007900 { + compatible = "via,vt8500-ehci"; + reg = <0xd8007900 0x200>; + interrupts = <43>; + };
Documentation/devicetree/bindings/vendor-prefixes.txt +2 -0
@@ -47,5 +47,7 @@ sirf SiRF Technology, Inc. st STMicroelectronics stericsson ST-Ericsson ti Texas Instruments +via VIA Technologies, Inc. wlf Wolfson Microelectronics +wm Wondermedia Technologies, Inc. xlnx Xilinx
Documentation/devicetree/bindings/video/via,vt8500-fb.txt new file +46 -0
46 lines not on this page · raw message
Documentation/devicetree/bindings/video/wm,prizm-ge-rops.txt new file +13 -0
@@ -0,0 +1,13 @@ +VIA/Wondermedia Graphics Engine Controller +----------------------------------------------------- + +Required properties: +- compatible : "wm,prizm-ge-rops" +- reg : Should contain 1 register ranges(address and length) + +Example: + + ge_rops at d8050400 { + compatible = "wm,prizm-ge-rops"; + reg = <0xd8050400 0x100>; + };
Documentation/devicetree/bindings/video/wm,wm8505-fb.txt new file +20 -0
@@ -0,0 +1,20 @@ +Wondermedia WM8505 Framebuffer +----------------------------------------------------- + +Required properties: +- compatible : "wm,wm8505-fb" +- reg : Should contain 1 register ranges(address and length) + +Required nodes: +- display: a display node is required to initialize the lcd panel + This should be in the board dts. See definition in + Documentation/devicetree/bindings/video/via,vt8500-fb.txt + + +Example: + + fb at d8050800 { + compatible = "wm,wm8505-fb"; + reg = <0xd8050800 0x200>; + }; +
Signature · 1 line
1.7.9.5
PATCH 8/8 ARM: vt8500: gpio: Devicetree support for arch-vt8500
In reply to Tony PriskConverted the existing arch-vt8500 gpio to a platform_device. Added support for WM8505 and WM8650 GPIO controllers.
--- drivers/gpio/Kconfig | 6 + drivers/gpio/Makefile | 1 + drivers/gpio/gpio-vt8500.c | 318 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 325 insertions(+) create mode 100644 drivers/gpio/gpio-vt8500.c
drivers/gpio/Kconfig +6 -0
@@ -183,6 +183,12 @@ config GPIO_STA2X11 Say yes here to support the STA2x11/ConneXt GPIO device. The GPIO module has 128 GPIO pins with alternate functions. +config GPIO_VT8500 + bool "VIA/Wondermedia SoC GPIO Support" + depends on ARCH_VT8500 + help + Say yes here to support the VT8500/WM8505/WM8650 GPIO controller. + config GPIO_XILINX bool "Xilinx GPIO support" depends on PPC_OF || MICROBLAZE
drivers/gpio/Makefile +1 -0
@@ -66,6 +66,7 @@ obj-$(CONFIG_GPIO_TPS65912) += gpio-tps65912.o obj-$(CONFIG_GPIO_TWL4030) += gpio-twl4030.o obj-$(CONFIG_GPIO_UCB1400) += gpio-ucb1400.o obj-$(CONFIG_GPIO_VR41XX) += gpio-vr41xx.o +obj-$(CONFIG_GPIO_VT8500) += gpio-vt8500.o obj-$(CONFIG_GPIO_VX855) += gpio-vx855.o obj-$(CONFIG_GPIO_WM831X) += gpio-wm831x.o obj-$(CONFIG_GPIO_WM8350) += gpio-wm8350.o
drivers/gpio/gpio-vt8500.c new file +318 -0
318 lines not on this page · raw message
Signature · 1 line
1.7.9.5
Re: [rtc-linux] [PATCH 8/8] ARM: vt8500: gpio: Devicetree support for arch-vt8500
Quoted 2 lines · Tony Prisk
Converted the existing arch-vt8500 gpio to a
platform_device. Added support for WM8505 and WM8650 GPIO controllers.
(...)
Quoted 1 line
+++
b/drivers/gpio/gpio-vt8500.c
This driver looks very one-bit-per-gpio typed. Are you sure you cannot just reuse drivers/gpio/gpio-generic.c? Make a compelling case please...
drivers/gpio/gpio-vt8500.c line 40
Quoted 5 lines
drivers/gpio/gpio-vt8500.c new file +5
-0+struct vt8500_gpio_bank_regs { +int en; +int dir; +int data_out; +int data_in;
Why are all these members int? They should be u8 from reading your code.
Quoted 4 lines
drivers/gpio/gpio-vt8500.c new file +2
-0+int ngpio; +};
drivers/gpio/gpio-vt8500.c line 67
Quoted 10 lines
drivers/gpio/gpio-vt8500.c new file +10
-0+static struct vt8500_gpio_data vt8500_data = { + .num_banks =7 , + .banks = { +VT8500_BANK (0x00 ,0x20 ,0x40 ,0x60 ,26 ), +VT8500_BANK (0x04 ,0x24 ,0x44 ,0x64 ,28 ), +VT8500_BANK (0x08 ,0x28 ,0x48 ,0x68 ,31 ), +VT8500_BANK (0x0C ,0x2C ,0x4C ,0x6C ,19 ), +VT8500_BANK (0x10 ,0x30 ,0x50 ,0x70 ,19 ), +VT8500_BANK (0x14 ,0x34 ,0x54 ,0x74 ,23 ), +VT8500_BANK (-1 ,0x3C ,0x5C ,0x7C ,9 ),/* external gpio */
What on earth are all those magic numbers?
I *guess* they're enabling some default GPIO settings etc.
But it really needs better structure, #defines for each one or atleast include <linux/bitops.h> and say:
= BIT(4) | /* Enable GPIO pin 5 on this bank */
BIT(5); /* Enable GPIO pin 6 on this bank */
However I suspect this is board specific and should be taken from device tree. Please elaborate on this...
Ditto for the different instances.
(...)
Quoted 1 line
+ unsigned val;
Looks like all of these should be u8.
Review
Quoted 2 lines
(quoted diff) +2
-0+ val = readl(vt8500_chip->base + vt8500_chip->regs->en + + vt8500_chip->regoff);
val = (u8) readl(...);
usw
Quoted 1 line
+ val |= (1 << offset);
Use <linux/bitops.h>
val |= BIT(offset);
Apart from these remarks it's looking good...
Yours,
Linus Walleij
Re: [rtc-linux] [PATCH 8/8] ARM: vt8500: gpio: Devicetree support for arch-vt8500
Quoted 10 lines · Linus Walleij
Quoted 2 lines · Tony Prisk
Converted the existing arch-vt8500 gpio to a
platform_device. Added support for WM8505 and WM8650 GPIO controllers.(...)
Quoted 1 line
+++
b/drivers/gpio/gpio-vt8500.cThis driver looks very one-bit-per-gpio typed. Are you sure you cannot just reuse
drivers/gpio/gpio-generic.c? Make a compelling case please...
Quoted 10 lines
drivers/gpio/gpio-vt8500.c line 40
Quoted 5 lines
drivers/gpio/gpio-vt8500.c new file +5
-0+struct vt8500_gpio_bank_regs { +int en; +int dir; +int data_out; +int data_in;Why are all these members int? They should be u8 from reading your code.
Quoted 2 lines
(quoted diff) +2
-0+ int ngpio; +};
Not necessarily 8 bit, but definitely unsigned.
Quoted 11 lines
drivers/gpio/gpio-vt8500.c line 67
Quoted 10 lines
drivers/gpio/gpio-vt8500.c new file +10
-0+static struct vt8500_gpio_data vt8500_data = { + .num_banks =7 , + .banks = { +VT8500_BANK (0x00 ,0x20 ,0x40 ,0x60 ,26 ), +VT8500_BANK (0x04 ,0x24 ,0x44 ,0x64 ,28 ), +VT8500_BANK (0x08 ,0x28 ,0x48 ,0x68 ,31 ), +VT8500_BANK (0x0C ,0x2C ,0x4C ,0x6C ,19 ), +VT8500_BANK (0x10 ,0x30 ,0x50 ,0x70 ,19 ), +VT8500_BANK (0x14 ,0x34 ,0x54 ,0x74 ,23 ), +VT8500_BANK (-1 ,0x3C ,0x5C ,0x7C ,9 ),/* external gpio */
Quoted 3 lines
What on earth are all those magic numbers?
I *guess* they're enabling some default GPIO settings etc.
No, they are the register offsets you quoted above, per bank. There is no easy way to abstract these, and I suggested putting the values into the source code rather than describing each bank separately in the .dtsi file.
My feeling however is that the "vt8500_chip->regoff" is wrong, which would mean only the first bank works. The code adds the same offsets per bank once more that it sets in this bank table.
Arnd
Re: [rtc-linux] [PATCH 8/8] ARM: vt8500: gpio: Devicetree support for arch-vt8500
Quoted 5 lines · Arnd Bergmann
Quoted 3 lines
What on earth are all those magic numbers?
I *guess* they're enabling some default GPIO settings etc.
No, they are the register offsets you quoted above, per bank.
Aha I was fooled by this:
+struct vt8500_gpio_bank_regs {
+ int en; + int dir; + int data_out; + int data_in; + int ngpio;
+};
This needs to be named something intuitive like "vt8500_gpio_bank_regoffsets"
Some kerneldoc intsead of the opaque comment above will also improve readability a lot:
/**
* struct vt8500_gpio_bank_regoffsets
* @en: offset to enable register in the bank
* ...
Yours,
Linus Walleij
PATCH 8/8 ARM: vt8500: gpio: Devicetree support for arch-vt8500
Quoted 9 lines
This needs to be named something intuitive like "
vt8500_gpio_bank_regoffsets"Some kerneldoc intsead of the opaque comment above will also improve readability a lot:
/**
* structvt8500_gpio_bank_regoffsets
* @en: offset to enable register in the bank
* ...
Changes made as requested.
Quoted 5 lines
My feeling however is that the "
vt8500_chip->regoff" is wrong, which would mean only the first bank works. The code adds the same offsets per bank once more that it sets in this bank table.Arnd
Oh.. Thanks for picking that up Arnd. You are absolutely correct. I have removed the references for ->regoff. Left over from old code.
Regards
Tony Prisk
Re: [PATCH 8/8] ARM: vt8500: gpio: Devicetree support for arch-vt8500
In reply to Tony PriskQuoted 15 lines · Tony Prisk
Converted the existing arch-vt8500 gpio to a
platform_device. Added support for WM8505 and WM8650 GPIO controllers.drivers/gpio/gpio-vt8500.c +10
-0+static struct of_device_id vt8500_gpio_dt_ids[] = { + { .compatible ="via,vt8500-gpio" , .data = &vt8500_data, }, + { .compatible ="wm,wm8505-gpio" , .data = &wm8505_data, }, + { .compatible ="wm,wm8650-gpio" , .data = &wm8650_data, }, + {/* Sentinel */ }, +}; + +static int __devinit vt8500_gpio_probe (struct platform_device *pdev) +{ +void __iomem *gpio_base;
drivers/gpio/gpio-vt8500.c line 273
Quoted 10 lines
drivers/gpio/gpio-vt8500.c +10
-0+struct device_node *np; +const struct of_device_id *of_id = +of_match_device (vt8500_gpio_dt_ids, &pdev->dev); + +if (!of_id) { +dev_err (&pdev->dev,"Failed to find gpio controller\n" ); +return -ENODEV ; + } + + np =of_find_matching_node (NULL , vt8500_gpio_dt_ids);
Can't you use pdev->dev.of_node instead of searching for it again?
...
drivers/gpio/gpio-vt8500.c
Quoted 1 line
drivers/gpio/gpio-vt8500.c +1
-0+of_node_put (np);
If so, you could also remove that.
drivers/gpio/gpio-vt8500.c line 313
Quoted 12 lines
drivers/gpio/gpio-vt8500.c +12
-0+static int __init vt8500_gpio_init (void ) +{ +return platform_driver_probe (&vt8500_gpio_driver, &vt8500_gpio_probe); +} + +static void __exit vt8500_gpio_exit(void) +{ +return platform_driver_unregister (&vt8500_gpio_driver); +} + +module_init (vt8500_gpio_init); +module_exit (vt8500_gpio_exit);
I think that's all just:
module_platform_driver(vt8500_gpio_driver);
(except that _init uses platform_driver_probe() rather than platform_driver_register(), which seems unusual. I guess that explains the of_find_matching_node() above too.)
Quoted 1 line
+MODULE_LICENSE("GPL");
That should be "GPL v2" given the license header.
Re: [PATCH 8/8] ARM: vt8500: gpio: Devicetree support for arch-vt8500
Quoted 7 lines · Stephen Warren
I think that's all just:
module_platform_driver(vt8500_gpio_driver);(except that
_initusesplatform_driver_probe()rather thanplatform_driver_register(), which seems unusual. I guess that explains theof_find_matching_node()above too.)
Ah, I totally missed both of these. Using platform_driver_register is definitely preferred over platform_driver_probe in cases like this, so using module_platform_driver is the right simplification.
Arnd
cover *** ARM: Update arch-vt8500 to Devicetree ***
In reply to Tony PriskApologies for the formatting/style errors. Thought I had checkpatch'd these but missed a few (especially the uhci patch). All formatting errors returned by scripts/checkpatch.pl are now fixed locally.
Apologies again,
Tony P
cover *** ARM: Update arch-vt8500 to Devicetree ***
In reply to Tony PriskThese patches can be used directly on kernel.org's main tarballs? Or just on gitorious/vt8500 ?
Quoted 136 lines · Tony Prisk
This patchset updates arch-vt8500 to devicetree and removes all the old-style
code. Support for WM8650 has also been added.Example dts/dtsi files are given for the three currently supported models.
Major changes:
GPIO code has been converted to a
platform_deviceand rewritten as WM8505 support was broken. Add support for WM8650 gpio controller.UHCI support was missing. Added this as a generic non-pci uhci controller as
it doesn't require anything special. Should be usable by any system that doesn't
have special requirements to get the UHCI controller working.Framebuffer code patched to support WM8650. The bindings for this are of concern
but there doesn't seem to be a formalized binding yet. This patch is based off
Sascha Hauer's current patch on the dri-devel mailing list and should be easily
patched out when its finalized.Patchset based on Arnd's arm-soc/for-next branch.
Could I get this reviewed, hopefully for inclusion into v3.7.
Regards
Tony PriskTony Prisk (8):
arm: vt8500: Add device tree files for VIA/Wondermedia SoC's
rtc: vt8500: Add devicetree support for vt8500-rtc
serial: vt8500: Add devicetree support for vt8500-serial
usb: vt8500: Add devicetree support for vt8500-ehci and -uhci.
video: vt8500: Add devicetree support for vt8500-fb and wm8505-fb
arm: vt8500: Update arch-vt8500 to devicetree support.
arm: vt8500: doc: Add device tree bindings for arch-vt8500 devices
ARM: vt8500: gpio: Devicetree support for arch-vt8500Documentation/devicetree/bindings/arm/vt8500.txt | 15 + .../bindings/arm/vt8500/via,vt8500-intc.txt | 16 + .../bindings/arm/vt8500/via,vt8500-pmc.txt | 13 + .../bindings/arm/vt8500/via,vt8500-timer.txt | 15 + .../devicetree/bindings/gpio/gpio_vt8500.txt | 24 ++ .../devicetree/bindings/rtc/via,vt8500-rtc.txt | 15 + .../bindings/tty/serial/via,vt8500-uart.txt | 15 + .../devicetree/bindings/usb/platform-uhci.txt | 15 + .../devicetree/bindings/usb/via,vt8500-ehci.txt | 15 + .../devicetree/bindings/vendor-prefixes.txt | 2 + .../devicetree/bindings/video/via,vt8500-fb.txt | 46 +++ .../devicetree/bindings/video/wm,prizm-ge-rops.txt | 13 + .../devicetree/bindings/video/wm,wm8505-fb.txt | 20 ++ arch/arm/Kconfig | 2 + arch/arm/boot/dts/vt8500.dtsi | 99 ++++++ arch/arm/boot/dts/vt8500_ref.dts | 31 ++ arch/arm/boot/dts/wm8505.dtsi | 125 ++++++++ arch/arm/boot/dts/wm8505_ref.dts | 31 ++ arch/arm/boot/dts/wm8650.dtsi | 95 ++++++ arch/arm/boot/dts/wm8650_ref.dts | 31 ++ arch/arm/mach-vt8500/Kconfig | 72 +---- arch/arm/mach-vt8500/Makefile | 9 +- arch/arm/mach-vt8500/bv07.c | 80 ----- arch/arm/mach-vt8500/common.h | 25 ++ arch/arm/mach-vt8500/devices-vt8500.c | 91 ------ arch/arm/mach-vt8500/devices-wm8505.c | 99 ------ arch/arm/mach-vt8500/devices.c | 270 ----------------- arch/arm/mach-vt8500/devices.h | 88 ------ arch/arm/mach-vt8500/gpio.c | 240 --------------- arch/arm/mach-vt8500/include/mach/restart.h | 4 +- arch/arm/mach-vt8500/include/mach/vt8500_irqs.h | 88 ------ arch/arm/mach-vt8500/include/mach/vt8500_regs.h | 79 ----- arch/arm/mach-vt8500/include/mach/wm8505_irqs.h | 115 ------- arch/arm/mach-vt8500/include/mach/wm8505_regs.h | 78 ----- arch/arm/mach-vt8500/irq.c | 160 +++++----- arch/arm/mach-vt8500/restart.c | 54 ---- arch/arm/mach-vt8500/timer.c | 56 +++- arch/arm/mach-vt8500/vt8500.c | 192 ++++++++++++ arch/arm/mach-vt8500/wm8505_7in.c | 79 ----- drivers/gpio/Kconfig | 6 + drivers/gpio/Makefile | 1 + drivers/gpio/gpio-vt8500.c | 318 ++++++++++++++++++++ drivers/rtc/rtc-vt8500.c | 7 + drivers/tty/serial/vt8500_serial.c | 7 + drivers/usb/host/Kconfig | 4 +- drivers/usb/host/ehci-vt8500.c | 24 +- drivers/usb/host/uhci-hcd.c | 5 + drivers/usb/host/uhci-platform.c | 166 ++++++++++ drivers/video/Kconfig | 6 +- drivers/video/vt8500lcdfb.c | 77 ++++- drivers/video/wm8505fb.c | 95 +++++- drivers/video/wmt_ge_rops.c | 7 + 52 files changed, 1674 insertions(+), 1566 deletions(-) create mode 100644 Documentation/devicetree/bindings/arm/vt8500.txt create mode 100644 Documentation/devicetree/bindings/arm/vt8500/via,vt8500-intc.txt create mode 100644 Documentation/devicetree/bindings/arm/vt8500/via,vt8500-pmc.txt create mode 100644 Documentation/devicetree/bindings/arm/vt8500/via,vt8500-timer.txt create mode 100644 Documentation/devicetree/bindings/gpio/gpio_vt8500.txt create mode 100644 Documentation/devicetree/bindings/rtc/via,vt8500-rtc.txt create mode 100644 Documentation/devicetree/bindings/tty/serial/via,vt8500-uart.txt create mode 100644 Documentation/devicetree/bindings/usb/platform-uhci.txt create mode 100644 Documentation/devicetree/bindings/usb/via,vt8500-ehci.txt create mode 100644 Documentation/devicetree/bindings/video/via,vt8500-fb.txt create mode 100644 Documentation/devicetree/bindings/video/wm,prizm-ge-rops.txt create mode 100644 Documentation/devicetree/bindings/video/wm,wm8505-fb.txt create mode 100644 arch/arm/boot/dts/vt8500.dtsi create mode 100644 arch/arm/boot/dts/vt8500_ref.dts create mode 100644 arch/arm/boot/dts/wm8505.dtsi create mode 100644 arch/arm/boot/dts/wm8505_ref.dts create mode 100644 arch/arm/boot/dts/wm8650.dtsi create mode 100644 arch/arm/boot/dts/wm8650_ref.dts delete mode 100644 arch/arm/mach-vt8500/bv07.c create mode 100644 arch/arm/mach-vt8500/common.h delete mode 100644 arch/arm/mach-vt8500/devices-vt8500.c delete mode 100644 arch/arm/mach-vt8500/devices-wm8505.c delete mode 100644 arch/arm/mach-vt8500/devices.c delete mode 100644 arch/arm/mach-vt8500/devices.h delete mode 100644 arch/arm/mach-vt8500/gpio.c delete mode 100644 arch/arm/mach-vt8500/include/mach/vt8500_irqs.h
Quoted 13 lines
delete mode 100644 arch/arm/mach-vt8500/include/mach/vt8500_regs.h delete mode 100644 arch/arm/mach-vt8500/include/mach/wm8505_irqs.h delete mode 100644 arch/arm/mach-vt8500/include/mach/wm8505_regs.h delete mode 100644 arch/arm/mach-vt8500/restart.c create mode 100644 arch/arm/mach-vt8500/vt8500.c delete mode 100644 arch/arm/mach-vt8500/wm8505_7in.c create mode 100644 drivers/gpio/gpio-vt8500.c create mode 100644 drivers/usb/host/uhci-platform.cSignature · 1 line
1.7.9.5
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20120818/7d16f695/attachment-0001.html>