lkml.org 
[lkml]   [2013]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] regulator: core: add regulator_get_linear_step()
    On Fri, 7 Jun 2013, Paul Walmsley wrote:

    > The IP block has an I2C controller embedded in it that autonomously sends
    > set-voltage commands (across a range of voltages) to the PMIC. To enable
    > that, the driver must first initialize the IP block with a
    > voltage-to-selector table.

    Here's the table loading code -

    +/**
    + * _load_lut - load voltage lookup table into DFLL RAM
    + * @pdev: DFLL instance
    + *
    + * Load the voltage-to-PMIC register value lookup table into the DFLL
    + * IP block LUT memory. td->lut_min and td->lut_max are used to cap
    + * the minimum and maximum voltage requested. This function shouldn't
    + * be called directly by code other than dfll_load_lut(), since this
    + * function doesn't handle the necessary pre- and post-requisites. No
    + * return value.
    + */
    +static void _load_lut(struct platform_device *pdev)
    +{
    + struct tegra_dfll *td = dev_get_drvdata(&pdev->dev);
    + int i;
    + u32 val;
    +
    + val = td->out_map[td->lut_min]->reg_value;
    + for (i = 0; i <= td->lut_min; i++)
    + dfll_writel(td, val, DFLL_OUTPUT_LUT + i * 4);
    +
    + for (; i < td->lut_max; i++) {
    + val = td->out_map[i]->reg_value;
    + dfll_writel(td, val, DFLL_OUTPUT_LUT + i * 4);
    + }
    +
    + val = td->out_map[td->lut_max]->reg_value;
    + for (; i < td->num_voltages; i++)
    + dfll_writel(td, val, DFLL_OUTPUT_LUT + i * 4);
    +
    + dfll_wmb(td);
    +}



    - Paul


    \
     
     \ /
      Last update: 2013-06-07 13:01    [W:3.013 / U:1.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site