lkml.org 
[lkml]   [2018]   [Jul]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v3 03/18] dmaengine: dma-jz4780: Avoid hardcoding number of channels
    On 21-07-18, 13:06, Paul Cercueil wrote:

    > +static const struct jz4780_dma_soc_data jz4780_dma_soc_data[] = {
    > + [ID_JZ4780] = { .nb_channels = 32, },

    why the array of structs?

    > +};
    > +
    > +static const struct of_device_id jz4780_dma_dt_match[] = {
    > + { .compatible = "ingenic,jz4780-dma", .data = (void *)ID_JZ4780 },

    the data should be jz4780_dma_soc_data? as you would add more data
    later.. and not the enum..

    > - jzdma = devm_kzalloc(dev, sizeof(*jzdma), GFP_KERNEL);
    > + version = (enum jz_version)of_id->data;
    > + soc_data = &jz4780_dma_soc_data[version];

    this can be simplified if we do:

    soc_data = device_get_match_data(pdev);

    with:

    static const struct jz4780_dma_soc_data jz4780_dma_soc_data = {
    .nb_channels = 32,
    };

    and
    { .compatible = "ingenic,jz4780-dma", .data = (void *)jz4780_dma_soc_data },

    You add more parameters in future patches and store soc_data in driver
    object and use as is..

    > + jzdma = devm_kzalloc(dev, sizeof(*jzdma)
    > + + sizeof(*jzdma->chan) * soc_data->nb_channels,
    > + GFP_KERNEL);
    > if (!jzdma)
    > return -ENOMEM;
    >
    > + jzdma->soc_data = soc_data;
    > + jzdma->version = version;

    why do you need to store version, driver should handle values and not
    versions..

    --
    ~Vinod

    \
     
     \ /
      Last update: 2018-07-24 15:24    [W:4.706 / U:0.132 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site