On Mon, Oct 24, 2011 at 10:27:47AM +0200, Kukjin Kim wrote: > On 10/10/11 12:07, Thomas Abraham wrote: > >Changes since v1: > >- Included the missing dt bindings documentation in the last patch. > >- Rebased and tested with linux 3.1-rc9 on linux-samsung-soc tree. > >- Commit messages are modified to be elaborate. > >- No changes in code. > > > > > >This patchset reworks the lookup of parent clocks for baud rate generator in > >the uart controller and adds support for device tree based discovery for the > >uart controller. > > > >The Samsung uart driver was dependent on the clock names supplied in the > >platform data. This dependency had to be first removed to add device tree based > >discovery support for Samsung uart driver. In the process of reworking the clock > >lookup logic, several changes had to be made which in turn made parts of the > >driver redundant and such portions of the driver have been removed in this > >patchset. As a result, all the SoC specific extensions have been deleted. > > > >Patch 1 modifies the driver to keep a copy of the location of the platform data > >in the driver's private data. This makes device tree support addition > >non-intrusive. > > > >Patch 2 moves the complicated clock divider handling for fclk source clock for > >s3c2440 SoC into platform code. The fclk clock can be easily managed by > >representing it as a clock in the platform code. fclk clock handling was > >specific to s3c2440 and moving this out of the driver makes the rest of the > >clock handling in the driver almost identical for all SoC's supported by the > >driver. > > > >Patch 3 modifies the driver to lookup source clocks for baud rate generator > >by using generic clock names. The generic clock name used by the driver is > >'clk_uart_baud' appended with the parent number of the clock. For instance, > >the second parent clock source option for baud rate generator is named as > >'clk_uart_baud2'. > > > >The driver stops depending on the set_clock and get_clock callbacks in the > >SoC specific extensions. Instead, the driver is modified to lookup parent > >clock rates and decide/calculate the best parent clock source for the baud > >rate generator (best clock would have the least delta when compared to buad > >rate requested). > > > >In this process, four new members are added in the driver's private data > >structure. The 'def_clk_sel' member is a platform set bit-value that specifies > >the possible parents that the driver is allowed to use for baud rate clock. > >A bit set at a particular bit position selects that parent clock source. > >Example: If bit number 2 is set in 'def_clk_sel', then parent clock source '2' > >can be a possible parent clock for baud rate generator. The 'num_clks' > >is the number of possible parent clocks that the SoC supports. The > >'clksel_mask' and 'clksel_shift' members are used to operate on the parent clock > >selection bit field int the uart controller's contol register. > > > >Patch 4 removes all uses and instances of 'struct s3c24xx_uart_clksrc'. This > >structure was used to pass source clock 'names' between platform code, driver > >and SoC specific extensions. By moving away from using platform specified clock > >names in the driver, all uses and instances of 'struct s3c24xx_uart_clksrc' > >is removed. > > > >Patch 5 removes all the SoC specific get_clksrc and set_clksrc callbacks. These > >callbacks were using SoC specific clock names to communicate the clock to be > >set or retrieved. These callbacks are removed as they are no longer required. > > > >Patch 6 reworks the uart clocks in platform code of all Samsung SoC's. The > >driver would use generic clock names and this patch creates aliases to uart > >clocks with generic clock names as the alias name. > > > >Patch 7 merges all the SoC specific port reset functions into one common port > >reset function and moves the common function into the common Samsung uart > >driver. All the SoC specific port reset functions perform the same operation > >allowing all of them to be converged. > > > >Patch 8 collapses all the SoC specific probe functions and associated driver > >private data into the Samsung common uart driver. With get_clksrc, set_clksrc > >and reset_port functions removed from SoC specific extensions, all the remains > >in those extensions is the probe function along with SoC specific driver data. > >These are merged into the common Samsung uart driver and all the SoC specific > >extensions are deleted. > > > >Patch 9 adds device tree based discovery support for the uart driver. > > > > > >This patchset is based on the following tree > >https://github.com/kgene/linux-samsung.git branch: for-next > > > >with the following two patches applied > >[PATCH] serial: samsung: Add unified interrupt handler for s3c64xx and later SoC's > >[PATCH] ARM: SAMSUNG: Remove uart irq handling from plaform code > > > >and tested on the following boards. > >SMDK2440, SMDK2416, SMDK6410, SMDK6440, SMDK6450, SMDKC100, SMDKV210, SMDKV310. > > > >This patchset has dependency on the following patchset: > >[PATCH V2 0/2] Add a common macro for creating struct clk_lookup entries > > > > > >Thomas Abraham (9): > > serial: samsung: Keep a copy of the location of platform data in driver's private data > > serial: samsung: move handling of fclk/n clock to platform code > > serial: samsung: switch to clkdev based clock lookup > > serial: samsung: remove struct 's3c24xx_uart_clksrc' and all uses of it > > serial: samsung: remove all uses of get_clksrc and set_clksrc > > arm: samsung: register uart clocks to clock lookup list > > serial: samsung: merge all SoC specific port reset functions > > serial: samsung: merge probe() function from all SoC specific extensions > > serial: samsung: add device tree support > > > > .../devicetree/bindings/serial/samsung_uart.txt | 14 + > > arch/arm/mach-exynos4/clock.c | 106 ++-- > > arch/arm/mach-exynos4/init.c | 21 +- > > arch/arm/mach-s3c2410/mach-bast.c | 22 - > > arch/arm/mach-s3c2410/mach-vr1000.c | 24 - > > arch/arm/mach-s3c2410/s3c2410.c | 6 + > > arch/arm/mach-s3c2412/clock.c | 7 + > > arch/arm/mach-s3c2440/clock.c | 44 ++ > > arch/arm/mach-s3c2440/mach-anubis.c | 22 +- > > arch/arm/mach-s3c2440/mach-at2440evb.c | 22 +- > > arch/arm/mach-s3c2440/mach-osiris.c | 24 +- > > arch/arm/mach-s3c2440/mach-rx1950.c | 18 +- > > arch/arm/mach-s3c2440/mach-rx3715.c | 19 +- > > arch/arm/mach-s3c64xx/clock.c | 37 +- > > arch/arm/mach-s5p64x0/clock-s5p6440.c | 32 +- > > arch/arm/mach-s5p64x0/clock-s5p6450.c | 32 +- > > arch/arm/mach-s5p64x0/init.c | 31 - > > arch/arm/mach-s5pc100/clock.c | 33 +- > > arch/arm/mach-s5pv210/clock.c | 107 ++-- > > arch/arm/mach-s5pv210/init.c | 19 - > > arch/arm/plat-s3c24xx/s3c2443-clock.c | 23 +- > > arch/arm/plat-samsung/include/plat/regs-serial.h | 45 +- > > drivers/tty/serial/Kconfig | 45 +-- > > drivers/tty/serial/Makefile | 5 - > > drivers/tty/serial/s3c2410.c | 115 ---- > > drivers/tty/serial/s3c2412.c | 149 ----- > > drivers/tty/serial/s3c2440.c | 178 ------ > > drivers/tty/serial/s3c6400.c | 149 ----- > > drivers/tty/serial/s5pv210.c | 158 ----- > > drivers/tty/serial/samsung.c | 639 ++++++++++++-------- > > drivers/tty/serial/samsung.h | 32 +- > > 31 files changed, 752 insertions(+), 1426 deletions(-) > > create mode 100644 Documentation/devicetree/bindings/serial/samsung_uart.txt > > delete mode 100644 drivers/tty/serial/s3c2410.c > > delete mode 100644 drivers/tty/serial/s3c2412.c > > delete mode 100644 drivers/tty/serial/s3c2440.c > > delete mode 100644 drivers/tty/serial/s3c6400.c > > delete mode 100644 drivers/tty/serial/s5pv210.c > > (Cc'ed Greg KH) > > Looks good for me, and I need to get the ack from Greg before applying. > > Greg, if you're ok, I'd like to send this series to upstream via > Samsung tree for supporting device tree because this touches a lot > of arch/arm/ Samsung stuff. If any problems, please let me know. No objection from me, feel free to take this through your tree. greg k-h -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html