10 Jan, 2012

1 commit

  • Cleanups on various subarchitectures

    Cleanup patches for various ARM platforms and some of their associated
    drivers, the bulk of these is for mach-91.

    Arnd ended up pulling in the restart branch from Russell in order to
    fix up some simple but annoying merge conflicts.

    * tag 'cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (44 commits)
    arm/at91: fix build of stamp9g20
    ARM: u300: delete memory.h
    MAINTAINERS: add maintainer entry for Picochip picoxcell
    ARM: picoxcell: move io mappings to common.c
    ARM: picoxcell: don't reserve irq_descs
    ARM: picoxcell: remove mach/memory.h
    ARM: at91: delete the pcontrol_g20_defconfig
    arm/tegra: Remove code that's ifndef CONFIG_ARM_GIC
    arm/tegra: remove unused defines
    arm/tegra: fix variable formatting in makefile
    ARM: davinci: vpif: move code to driver core header from platform
    ARM: at91/gpio: fix display of number of irq setuped
    ARM: at91/gpio: drop PIN_BASE
    ARM: at91/udc: use gpio_is_valid to check the gpio
    ARM: at91/ohci: use gpio_is_valid to check the gpio
    ARM: at91/nand: use gpio_is_valid to check the gpio
    ARM: at91/mmc: use gpio_is_valid to check the gpio
    ARM: at91/ide: use gpio_is_valid to check the gpio
    ARM: at91/pata: use gpio_is_valid to check the gpio
    ARM: at91/soc: use gpio_is_valid to check the gpio
    ...

    Linus Torvalds
     

22 Dec, 2011

1 commit

  • The sysdev.h file should not be needed by any in-kernel code, so remove
    the .h file from these random files that seem to still want to include
    it.

    The sysdev code will be going away soon, so this include needs to be
    removed no matter what.

    Cc: Jiandong Zheng
    Cc: Scott Branden
    Cc: Russell King
    Cc: Kukjin Kim
    Cc: David Brown
    Cc: Daniel Walker
    Cc: Bryan Huntsman
    Cc: Ben Dooks
    Cc: Wan ZongShun
    Cc: Haavard Skinnemoen
    Cc: Hans-Christian Egtvedt
    Cc: Guan Xuetao
    Cc: "Venkatesh Pallipadi
    Cc: Thomas Gleixner
    Cc: Ingo Molnar
    Cc: "H. Peter Anvin"
    Cc: Grant Likely
    Cc: Richard Purdie
    Cc: Matthew Garrett
    Signed-off-by: Kay Sievers

    Kay Sievers
     

22 Nov, 2011

1 commit

  • Both at91 and avr32 defines its own platform data structure for
    the macb driver and both share common structures though at91
    includes a currently unused phy_irq_pin. Create a common
    macb_platform_data for macb that both at91 and avr32 can use. In
    future we can use this to support other architectures that use the
    same IP block with the macb driver.

    v2: rename eth_platform_data to macb_platform_data and allow at91_ether
    to share the platform data with macb.

    Signed-off-by: Jamie Iles
    Acked-by: Nicolas Ferre
    Tested-by: Jean-Christophe PLAGNIOL-VILLARD

    Jamie Iles
     

11 Sep, 2011

1 commit

  • Currently atmel_nand driver used by AT91 and AVR32 calls a special callback
    which return nand partition table and number of partitions. However in all
    boards this callback returns just static data. So drop this callback and
    make atmel_nand use partition table provided statically via platform_data.

    Nicolas Ferre: I am in favor for a mainline inclusion through linux-mtd tree.
    Hans-Christian Egtvedt: I'm fine by sending the changes for AVR32 through linux-mtd

    Signed-off-by: Dmitry Eremin-Solenikov
    Acked-by: Hans-Christian Egtvedt
    Acked-by: Nicolas Ferre
    Acked-by: Jean-Christophe PLAGNIOL-VILLARD
    Signed-off-by: Artem Bityutskiy

    Dmitry Eremin-Solenikov
     

25 Mar, 2011

1 commit


14 Jan, 2011

1 commit


15 Oct, 2010

1 commit

  • All file_operations should get a .llseek operation so we can make
    nonseekable_open the default for future file operations without a
    .llseek pointer.

    The three cases that we can automatically detect are no_llseek, seq_lseek
    and default_llseek. For cases where we can we can automatically prove that
    the file offset is always ignored, we use noop_llseek, which maintains
    the current behavior of not returning an error from a seek.

    New drivers should normally not use noop_llseek but instead use no_llseek
    and call nonseekable_open at open time. Existing drivers can be converted
    to do the same when the maintainer knows for certain that no user code
    relies on calling seek on the device file.

    The generated code is often incorrectly indented and right now contains
    comments that clarify for each added line why a specific variant was
    chosen. In the version that gets submitted upstream, the comments will
    be gone and I will manually fix the indentation, because there does not
    seem to be a way to do that using coccinelle.

    Some amount of new code is currently sitting in linux-next that should get
    the same modifications, which I will do at the end of the merge window.

    Many thanks to Julia Lawall for helping me learn to write a semantic
    patch that does all this.

    ===== begin semantic patch =====
    // This adds an llseek= method to all file operations,
    // as a preparation for making no_llseek the default.
    //
    // The rules are
    // - use no_llseek explicitly if we do nonseekable_open
    // - use seq_lseek for sequential files
    // - use default_llseek if we know we access f_pos
    // - use noop_llseek if we know we don't access f_pos,
    // but we still want to allow users to call lseek
    //
    @ open1 exists @
    identifier nested_open;
    @@
    nested_open(...)
    {

    }

    @ open exists@
    identifier open_f;
    identifier i, f;
    identifier open1.nested_open;
    @@
    int open_f(struct inode *i, struct file *f)
    {

    }

    @ read disable optional_qualifier exists @
    identifier read_f;
    identifier f, p, s, off;
    type ssize_t, size_t, loff_t;
    expression E;
    identifier func;
    @@
    ssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)
    {

    }

    @ read_no_fpos disable optional_qualifier exists @
    identifier read_f;
    identifier f, p, s, off;
    type ssize_t, size_t, loff_t;
    @@
    ssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)
    {
    ... when != off
    }

    @ write @
    identifier write_f;
    identifier f, p, s, off;
    type ssize_t, size_t, loff_t;
    expression E;
    identifier func;
    @@
    ssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)
    {

    }

    @ write_no_fpos @
    identifier write_f;
    identifier f, p, s, off;
    type ssize_t, size_t, loff_t;
    @@
    ssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)
    {
    ... when != off
    }

    @ fops0 @
    identifier fops;
    @@
    struct file_operations fops = {
    ...
    };

    @ has_llseek depends on fops0 @
    identifier fops0.fops;
    identifier llseek_f;
    @@
    struct file_operations fops = {
    ...
    .llseek = llseek_f,
    ...
    };

    @ has_read depends on fops0 @
    identifier fops0.fops;
    identifier read_f;
    @@
    struct file_operations fops = {
    ...
    .read = read_f,
    ...
    };

    @ has_write depends on fops0 @
    identifier fops0.fops;
    identifier write_f;
    @@
    struct file_operations fops = {
    ...
    .write = write_f,
    ...
    };

    @ has_open depends on fops0 @
    identifier fops0.fops;
    identifier open_f;
    @@
    struct file_operations fops = {
    ...
    .open = open_f,
    ...
    };

    // use no_llseek if we call nonseekable_open
    ////////////////////////////////////////////
    @ nonseekable1 depends on !has_llseek && has_open @
    identifier fops0.fops;
    identifier nso ~= "nonseekable_open";
    @@
    struct file_operations fops = {
    ... .open = nso, ...
    +.llseek = no_llseek, /* nonseekable */
    };

    @ nonseekable2 depends on !has_llseek @
    identifier fops0.fops;
    identifier open.open_f;
    @@
    struct file_operations fops = {
    ... .open = open_f, ...
    +.llseek = no_llseek, /* open uses nonseekable */
    };

    // use seq_lseek for sequential files
    /////////////////////////////////////
    @ seq depends on !has_llseek @
    identifier fops0.fops;
    identifier sr ~= "seq_read";
    @@
    struct file_operations fops = {
    ... .read = sr, ...
    +.llseek = seq_lseek, /* we have seq_read */
    };

    // use default_llseek if there is a readdir
    ///////////////////////////////////////////
    @ fops1 depends on !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier readdir_e;
    @@
    // any other fop is used that changes pos
    struct file_operations fops = {
    ... .readdir = readdir_e, ...
    +.llseek = default_llseek, /* readdir is present */
    };

    // use default_llseek if at least one of read/write touches f_pos
    /////////////////////////////////////////////////////////////////
    @ fops2 depends on !fops1 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier read.read_f;
    @@
    // read fops use offset
    struct file_operations fops = {
    ... .read = read_f, ...
    +.llseek = default_llseek, /* read accesses f_pos */
    };

    @ fops3 depends on !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier write.write_f;
    @@
    // write fops use offset
    struct file_operations fops = {
    ... .write = write_f, ...
    + .llseek = default_llseek, /* write accesses f_pos */
    };

    // Use noop_llseek if neither read nor write accesses f_pos
    ///////////////////////////////////////////////////////////

    @ fops4 depends on !fops1 && !fops2 && !fops3 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier read_no_fpos.read_f;
    identifier write_no_fpos.write_f;
    @@
    // write fops use offset
    struct file_operations fops = {
    ...
    .write = write_f,
    .read = read_f,
    ...
    +.llseek = noop_llseek, /* read and write both use no f_pos */
    };

    @ depends on has_write && !has_read && !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier write_no_fpos.write_f;
    @@
    struct file_operations fops = {
    ... .write = write_f, ...
    +.llseek = noop_llseek, /* write uses no f_pos */
    };

    @ depends on has_read && !has_write && !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier read_no_fpos.read_f;
    @@
    struct file_operations fops = {
    ... .read = read_f, ...
    +.llseek = noop_llseek, /* read uses no f_pos */
    };

    @ depends on !has_read && !has_write && !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    @@
    struct file_operations fops = {
    ...
    +.llseek = noop_llseek, /* no read or write fn */
    };
    ===== End semantic patch =====

    Signed-off-by: Arnd Bergmann
    Cc: Julia Lawall
    Cc: Christoph Hellwig

    Arnd Bergmann
     

16 Dec, 2009

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/avr32-2.6:
    avr32: update default configurations for ATNGW100, ATSTK1002 and ATSTK1006
    avr32: add default configurations for ATNGW100 mkII and EVKLCD10X
    avr32: add support for ATNGW100 mkII board
    avr32: convert to asm-generic/hardirq.h
    avr32: add two new at91 to cpu.h definition
    avr32: clean up linker script using standard macros.
    avr32: MRMT: correct setup of SPI slaves
    avr32: function for independently setting up SPI slaves
    avr32: re-instate MCI WP/CD pin assignments for ATNGW100

    Linus Torvalds
     

15 Dec, 2009

1 commit

  • This patch adds board support for ATNGW100 mkII. This board is an upgrade of
    the ATNGW100 where the difference is an additional 256 MB NAND flash device and
    128 MB 32-bit SDRAM instead of the 32 MB 16-bit SDRAM on ATNGW100.

    Tested on ATNGW100 mkII, duh (-:

    Signed-off-by: Hans-Christian Egtvedt
    Signed-off-by: Haavard Skinnemoen

    Hans-Christian Egtvedt
     

04 Dec, 2009

1 commit

  • That is "success", "unknown", "through", "performance", "[re|un]mapping"
    , "access", "default", "reasonable", "[con]currently", "temperature"
    , "channel", "[un]used", "application", "example","hierarchy", "therefore"
    , "[over|under]flow", "contiguous", "threshold", "enough" and others.

    Signed-off-by: André Goddard Rosa
    Signed-off-by: Jiri Kosina

    André Goddard Rosa
     

27 Aug, 2009

2 commits


27 Jul, 2009

1 commit

  • The ezLCD+101 board (to which an favr-32 is fitted) has a long,
    unshielded, nasty lead between the touch panel and the ads7843 touch
    controller. In order to get satisfactory response then, we need to
    employ every noise-reduction trick in the driver's arsenal. After
    extensive fiddling I've found some good settings:

    1) We keep vref on all the time to dramatically reduce settling times
    (at the cost of a tiny increase in power consumption).

    2) Despite 1 the settling time is still non-zero. 500uS is plenty of
    time for the signals to settle

    3) Despite 1 and 2 there's still a little bit of noise around. By
    setting a pen recheck delay we make the panel feel less touchy and
    twitchy.

    Someone with more time and patience myself might be able to tune this
    numbers further but these settings are now perfectly acceptable for
    normal use.

    Tested on ezLCD+101 though should only improve response on other ezLCD+/
    favr-32 boards too.

    Signed-off-by: Ben Nizette
    Signed-off-by: Haavard Skinnemoen

    Ben Nizette
     

13 Jun, 2009

1 commit


08 Jun, 2009

2 commits


03 Jun, 2009

1 commit

  • This patch updates the LCD init code for the MIMC200 board.

    V2 fixes a .yres typo and corrects an incorrect setup value
    in the call to at32_add_device_lcdc()

    Without this patch, the lcd setup is wrong and won't display images
    correctly (if at all !!)

    Signed-off-by: Mark Jackson
    Signed-off-by: Haavard Skinnemoen

    Mark Jackson
     

09 Apr, 2009

1 commit


07 Apr, 2009

1 commit


01 Apr, 2009

1 commit


30 Mar, 2009

1 commit


27 Mar, 2009

3 commits

  • This patch will adjust the setup the DMA controller for the AC97
    Controller in the at32ap700x machine code. This setup matches the new
    ALSA driver for the AC97C.

    The struct ac97c_platform_data has been moved into its own header file
    located in the sound include path.

    Tested on ATSTK1006 + ATSTK1000.

    This patch will setup the AC97 controller properly for the adjusted
    machine code. Both EVKLCD10x and Hammerhead board has been updated.

    Tested on EVKLCD10x, and copied to Hammerhead board.

    Signed-off-by: Hans-Christian Egtvedt
    [haavard.skinnemoen@atmel.com: fold with board code update]
    Signed-off-by: Haavard Skinnemoen

    Hans-Christian Egtvedt
     
  • This patch will adjust the setup the DMA controller for the Audio
    Bistream DAC in the at32ap700x machine code. This setup matches the new
    ALSA driver for the ABDAC.

    Tested on ATSTK1006 + ATSTK1000.

    This patch will setup the needed platform data for the Audio Bistream
    DAC used by the Favr-32 board.

    Signed-off-by: Hans-Christian Egtvedt
    [haavard.skinnemoen@atmel.com: fold board code update]
    Signed-off-by: Haavard Skinnemoen

    Hans-Christian Egtvedt
     
  • Merisc is the family name for a range of AVR32-based boards.

    The boards are designed to be used in a man-machine interfacing
    environment, utilizing a touch-based graphical user interface. They host
    a vast range of I/O peripherals as well as a large SDRAM & Flash memory
    bank.

    For more information see: http://www.martinsson.se/merisc

    Signed-off-by: Jonas Larsson
    Signed-off-by: Haavard Skinnemoen

    Jonas Larsson
     

26 Mar, 2009

4 commits


24 Mar, 2009

1 commit


06 Jan, 2009

1 commit


05 Jan, 2009

7 commits


18 Dec, 2008

1 commit


23 Oct, 2008

2 commits