• Annaliese McDermond's avatar
    ASoC: tlv320aic32x4: Dynamically Determine Clocking · 96c3bb00
    Annaliese McDermond authored
    The existing code uses a static lookup table to determine the
    settings of the various clock devices on board the chip.  This is
    limiting in a couple of ways.  First, this doesn't allow for any
    master clock rates other than the three that have been
    precalculated.  Additionally, new sample rates are difficult to
    add to the table.  Witness that the chip is capable of 192000 Hz
    sampling, but it is not provided by this driver.  Last, if the
    driver is clocked by something that isn't a crystal, the
    upstream clock may not be able to achieve exactly the rate
    requested in the driver.  This will mean that clocking will be
    slightly off for the sampling clock or that it won't work at all.
    
    This patch determines the settings for all of the clocks at
    runtime considering the real conditions of the clocks in the
    system.  The rules for the clocks are in TI's SLAA557 application
    guide on pages 37, 51 and 77.
    Signed-off-by: default avatarAnnaliese McDermond <nh6z@nh6z.net>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    96c3bb00
tlv320aic32x4.c 38 KB