Subject: Re: [PATCH v7 1/4] i2c-mpc: use __devinit[data] for initialization functions and data

From: Wolfgang Grandegger <[email-masked]>
Date: Tue, 16 Feb 2010 21:49:46 +0100

Grant Likely wrote:
> On Wed, Feb 10, 2010 at 7:55 AM, Wolfgang Grandegger <[email-masked]> wrote:
>> From: Wolfgang Grandegger <[email-masked]>
>>
>> "__devinit[data]" has not yet been used for all initialization functions
>> and data. To avoid truncating lines, the struct "mpc_i2c_match_data" has
>> been renamed to "mpc_i2c_data", which is even the better name.
>>
>> Signed-off-by: Wolfgang Grandegger <[email-masked]>
>> Tested-by: Wolfram Sang <[email-masked]>
> 
> Between patch 1 & 2 is not bisectable.  Functions still called
> *_setclock in this patch, but referenced as *_setup in the structure.
> Please respin.

Argh, sorry for the mess. I will fix it tomorrow.

> Also ...
> 
>> +static struct mpc_i2c_data mpc_i2c_data_52xx __devinitdata = {
>> +       .setup = mpc_i2c_setup_52xx,
>> +};
>> +
>> +static struct mpc_i2c_data mpc_i2c_data_8313 __devinitdata = {
>> +       .setup = mpc_i2c_setup_8xxx,
>> +};
>> +
>> +static struct mpc_i2c_data mpc_i2c_data_8543 __devinitdata = {
>> +       .setup = mpc_i2c_setup_8xxx,
>> +       .prescaler = 2,
>> +};
>> +
>> +static struct mpc_i2c_data mpc_i2c_data_8544 __devinitdata = {
>> +       .setup = mpc_i2c_setup_8xxx,
>> +       .prescaler = 3,
>> +};
>> +
>>  static const struct of_device_id mpc_i2c_of_match[] = {
>> -       {.compatible = "mpc5200-i2c",
>> -        .data = &(struct mpc_i2c_match_data) {
>> -                       .setclock = mpc_i2c_setclock_52xx,
>> -               },
>> -       },
>> -       {.compatible = "fsl,mpc5200b-i2c",
>> -        .data = &(struct mpc_i2c_match_data) {
>> -                       .setclock = mpc_i2c_setclock_52xx,
>> -               },
>> -       },
>> -       {.compatible = "fsl,mpc5200-i2c",
>> -        .data = &(struct mpc_i2c_match_data) {
>> -                       .setclock = mpc_i2c_setclock_52xx,
>> -               },
>> -       },
>> -       {.compatible = "fsl,mpc8313-i2c",
>> -        .data = &(struct mpc_i2c_match_data) {
>> -                       .setclock = mpc_i2c_setclock_8xxx,
>> -               },
>> -       },
>> -       {.compatible = "fsl,mpc8543-i2c",
>> -        .data = &(struct mpc_i2c_match_data) {
>> -                       .setclock = mpc_i2c_setclock_8xxx,
>> -                       .prescaler = 2,
>> -               },
>> -       },
>> -       {.compatible = "fsl,mpc8544-i2c",
>> -        .data = &(struct mpc_i2c_match_data) {
>> -                       .setclock = mpc_i2c_setclock_8xxx,
>> -                       .prescaler = 3,
>> -               },
>> +       {.compatible = "mpc5200-i2c", .data = &mpc_i2c_data_52xx, },
>> +       {.compatible = "fsl,mpc5200b-i2c", .data = &mpc_i2c_data_52xx, },
>> +       {.compatible = "fsl,mpc5200-i2c", .data = &mpc_i2c_data_52xx, },
>> +       {.compatible = "fsl,mpc8313-i2c", .data = &mpc_i2c_data_8313, },
>> +       {.compatible = "fsl,mpc8543-i2c", .data = &mpc_i2c_data_8543, },
>> +       {.compatible = "fsl,mpc8544-i2c", .data = &mpc_i2c_data_8544, },
> 
> ... what was wrong with the old format of declaring the .data
> structures inline with the match table?

It does not allow to use __devinitdata because the space reserved by the
compiler does belong to another section. In other words it was necessary
to get ride of section mismatches.

Wolfgang.