21 Aug, 2008

1 commit

  • Fix two memory leaks in the Freescale QE library: add a missing kfree() in
    ucc_fast_init() and ucc_slow_init() if the ioremap() fails, and update
    ucc_fast_free() and ucc_slow_free() to call iounmap() if necessary.

    Based on a patch from Tony Breeds .

    Signed-off-by: Timur Tabi
    Signed-off-by: Kumar Gala

    Timur Tabi
     

01 Apr, 2008

1 commit


24 Jan, 2008

1 commit

  • Add support for UART serial ports using a Freescale QUICCEngine. Update
    booting-without-of.txt to define new properties for a QE UART node. Update
    the MPC8323E-MDS device tree to add UCC5 as a UART. Update the QE library
    to support slow UCC devices and modules.

    Signed-off-by: Timur Tabi
    Signed-off-by: Kumar Gala

    Timur Tabi
     

08 Oct, 2007

1 commit

  • This patch makes numerous miscellaneous code improvements to the QE library.

    1. Remove struct ucc_common and merge ucc_init_guemr() into ucc_set_type()
    (every caller of ucc_init_guemr() also calls ucc_set_type()). Modify all
    callers of ucc_set_type() accordingly.

    2. Remove the unused enum ucc_pram_initial_offset.

    3. Refactor qe_setbrg(), also implement work-around for errata QE_General4.

    4. Several printk() calls were missing the terminating \n.

    5. Add __iomem where needed, and change u16 to __be16 and u32 to __be32 where
    appropriate.

    6. In ucc_slow_init() the RBASE and TBASE registers in the PRAM were programmed
    with the wrong value.

    7. Add the protocol type to struct us_info and updated ucc_slow_init() to
    use it, instead of always programming QE_CR_PROTOCOL_UNSPECIFIED.

    8. Rename ucc_slow_restart_x() to ucc_slow_restart_tx()

    9. Add several macros in qe.h (mostly for slow UCC support, but also to
    standardize some naming convention) and remove several unused macros.

    10. Update ucc_geth.c to use the new macros.

    11. Add ucc_slow_info.protocol to specify which QE_CR_PROTOCOL_xxx protcol
    to use when initializing the UCC in ucc_slow_init().

    12. Rename ucc_slow_pram.rfcr to rbmr and ucc_slow_pram.tfcr to tbmr, since
    these are the real names of the registers.

    13. Use the setbits, clrbits, and clrsetbits where appropriate.

    14. Refactor ucc_set_qe_mux_rxtx().

    15. Remove all instances of 'volatile'.

    16. Simplify get_cmxucr_reg();

    17. Replace qe_mux.cmxucrX with qe_mux.cmxucr[].

    18. Updated struct ucc_geth because struct ucc_fast is not padded any more.

    Signed-off-by: Timur Tabi
    Signed-off-by: Kumar Gala

    Timur Tabi
     

10 May, 2007

1 commit

  • The rheap allocation functions return a pointer, but the actual value is based
    on how the heap was initialized, and so it can be anything, e.g. an offset
    into a buffer. A ulong is a better representation of the value returned by
    the allocation functions.

    This patch changes all of the relevant rheap functions to use a unsigned long
    integers instead of a pointer. In case of an error, the value returned is
    a negative error code that has been cast to an unsigned long. The caller can
    use the IS_ERR_VALUE() macro to check for this.

    All code which calls the rheap functions is updated accordingly. Macros
    IS_MURAM_ERR() and IS_DPERR(), have been deleted in favor of IS_ERR_VALUE().

    Also added error checking to rh_attach_region().

    Signed-off-by: Timur Tabi
    Signed-off-by: Kumar Gala

    Timur Tabi
     

27 Mar, 2007

1 commit

  • In two places, ucc_slow_init() passes a physical address instead of the
    virtual address to functions that were expecting the latter, causing a kernel
    panic. us_info->regs contains the physical address of the UCC register set.
    The registers are ioremap'd to kernel space, and the virtual pointers are
    stored in us_regs. The code was using us_info->regs when it should have been
    using us_regs.

    Signed-off-by: Timur Tabi
    Signed-off-by: Kumar Gala

    Timur Tabi
     

18 Feb, 2007

1 commit

  • Refactored and cleaned up ucc_fast.c and ucc_slow.c so that the two files
    look more alike and are easier to read. Removed uccf_printk() and related
    functions, because they were just front-ends to printk(). Fixed some
    spacing and tabbing issues. Minor optimizations of some code. Changed
    the type of some variables to their proper type (mostly buffer
    descriptors).

    Signed-off-by: Timur Tabi
    Signed-off-by: Kumar Gala

    Timur Tabi
     

09 Feb, 2007

1 commit

  • Rename the 'us_regs' field of the ucc_slow_info structure in ucc_slow.h
    to just 'regs'. The equivalent field in the ucc_fast_info structure is
    also called 'regs', so this patch makes them comparable, and makes the
    code a little easier to read, because there already is a 'us_regs' in
    another ucc_slow structure.

    Signed-off-by: Timur Tabi
    Signed-off-by: Kumar Gala

    Timur Tabi
     

04 Dec, 2006

1 commit


23 Oct, 2006

1 commit


04 Oct, 2006

1 commit

  • Add QUICC Engine (QE) configuration, header files, and
    QE management and library code that are used by QE devices
    drivers.

    Includes Leo's modifications up to, and including, the
    platform_device to of_device adaptation:

    "The series of patches add generic QE infrastructure called
    qe_lib, and MPC8360EMDS board support. Qe_lib is used by
    QE device drivers such as ucc_geth driver.

    This version updates QE interrupt controller to use new irq
    mapping mechanism, addresses all the comments received with
    last submission and includes some style fixes.

    v2: Change to use device tree for BCSR and MURAM;
    Remove I/O port interrupt handling code as it is not generic
    enough.

    v3: Address comments from Kumar; Update definition of several
    device tree nodes; Copyright style change."

    In addition, the following changes have been made:

    o removed typedefs
    o uint -> u32 conversions
    o removed following defines:
    QE_SIZEOF_BD, BD_BUFFER_ARG, BD_BUFFER_CLEAR, BD_BUFFER,
    BD_STATUS_AND_LENGTH_SET, BD_STATUS_AND_LENGTH, and BD_BUFFER_SET
    because they hid sizeof/in_be32/out_be32 operations from the reader.
    o fixed qe_snums_init() serial num assignment to use a const array
    o made CONFIG_UCC_FAST select UCC_SLOW
    o reduced NR_QE_IC_INTS from 128 to 64
    o remove _IO_BASE, etc. defines (not used)
    o removed irrelevant comments, added others to resemble removed BD_ defines
    o realigned struct definitions in headers
    o various other style fixes including things like pinMask -> pin_mask
    o fixed a ton of whitespace issues
    o marked ioregs as __be32/__be16
    o removed platform_device code and redundant get_qe_base()
    o removed redundant comments
    o added cpu_relax() to qe_reset
    o uncasted all get_property() assignments
    o eliminated unneeded casts
    o eliminated immrbar_phys_to_virt (not used)

    Signed-off-by: Li Yang
    Signed-off-by: Shlomi Gridish
    Signed-off-by: Kim Phillips
    Signed-off-by: Paul Mackerras

    Li Yang