[PATCH] ARM: mxs: Add initial support for Bluegiga APX4 Development Kit

Lauri Hintsala lauri.hintsala at bluegiga.com
Tue Oct 18 03:27:04 EDT 2011


Hi Uwe,

On 10/17/2011 12:44 PM, Uwe Kleine-König wrote:
> Hello,
>
> On Mon, Oct 17, 2011 at 11:08:36AM +0300, Lauri Hintsala wrote:
>> Added initial support for Bluegiga APX4 module and Development Kit.
>> Patches are based on Linux v3.1-rc9.
> Specifying the base isn't helpful in the commit log. You can better
> write things like these after the tripple dash below.

I'll drop the version information from commit log.


>> +config MODULE_APX4
>> +	bool
>> +	select SOC_IMX28
>> +	select LEDS_GPIO_REGISTER
>> +	select MXS_HAVE_AMBA_DUART
>> +	select MXS_HAVE_PLATFORM_AUART
>> +	select MXS_HAVE_PLATFORM_FEC
>> +    select MXS_HAVE_PLATFORM_MXS_I2C
> broken indention

Thanks for catching it.


>> +	select MXS_HAVE_PLATFORM_MXS_MMC
>> +	select MXS_OCOTP
>> +
> MODULE_APX4 is unused, do you plan to use it later?

It is already used. MODULE_APX4 is selected by MACH_APX4DEVKIT.


>>   config MACH_TX28
>>   	bool "Ka-Ro TX28 module"
>>   	select MODULE_TX28
>>
>> +config MACH_APX4DEVKIT
>> +	bool "Support Bluegiga APX4 Development Kit"
>> +	select MODULE_APX4
>> +
>>   endif
>> diff --git a/arch/arm/mach-mxs/Makefile b/arch/arm/mach-mxs/Makefile
>> index 6c38262..1838466 100644
>> --- a/arch/arm/mach-mxs/Makefile
>> +++ b/arch/arm/mach-mxs/Makefile
>> @@ -10,6 +10,7 @@ obj-$(CONFIG_SOC_IMX28) += clock-mx28.o mm-mx28.o
>>   obj-$(CONFIG_MACH_STMP378X_DEVB) += mach-stmp378x_devb.o
>>   obj-$(CONFIG_MACH_MX23EVK) += mach-mx23evk.o
>>   obj-$(CONFIG_MACH_MX28EVK) += mach-mx28evk.o
>> +obj-$(CONFIG_MACH_APX4DEVKIT) += mach-apx4devkit.o
>>   obj-$(CONFIG_MODULE_TX28) += module-tx28.o
>>   obj-$(CONFIG_MACH_TX28)    += mach-tx28.o
>>
>> diff --git a/arch/arm/mach-mxs/include/mach/mxs.h b/arch/arm/mach-mxs/include/mach/mxs.h
>> index 35a89dd..209698c 100644
>> --- a/arch/arm/mach-mxs/include/mach/mxs.h
>> +++ b/arch/arm/mach-mxs/include/mach/mxs.h
>> @@ -33,6 +33,7 @@
>>   		0)
>>   #define cpu_is_mx28()		(					\
>>   		machine_is_mx28evk() ||					\
>> +		machine_is_apx4devkit() ||				\
>>   		machine_is_tx28() ||					\
> please keep this list sorted alphabetically.

Thanks. I'll fix it.


>> +static struct fec_platform_data mx28_fec_pdata __initdata = {
>> +	.phy = PHY_INTERFACE_MODE_RMII,
>> +};
>> +
>> +static int __init apx4devkit_fec_get_mac(char *macstr)
>> +{
>> +	int i, h, l;
>> +
>> +	macstr++;
>> +
>> +	for (i = 0; i<  6; i++) {
>> +		if (i != 5&&  *(macstr + 2) != ':')
>> +			goto error;
>> +
>> +		h = hex_to_bin(*macstr++);
>> +		if (h == -1)
>> +			goto error;
>> +
>> +		l = hex_to_bin(*macstr++);
>> +		if (l == -1)
>> +			goto error;
>> +
>> +		macstr++;
>> +		mx28_fec_pdata.mac[i] = (h<<  4) + l;
>> +	}
>> +	return 0;
> I wonder if there isn't a more generic way to parse a mac address.

Maybe it is better to use sscanf for parsing mac address, is it. I 
didn't found any generic function for this purpose. Is there any?

Other boards seems to use similar methods for parsing mac address:
arch/arm/mach-orion5x/dns323-setup.c: dns323_read_mac_addr
arch/arm/mach-orion5x/tsx09-common.c: qnap_tsx09_check_mac_addr
arch/mips/rb532/devices.c: parse_mac_addr

I dont't mean it is right/best way to do parsing but it seems to be 
generic problem.


> Other machines put the mac into the otp.

We do not want to use otps for mac.


>> +error:
>> +	pr_err("%s: invalid mac address\n", __func__);
>> +	return -EINVAL;
>> +}
>> +
>> +__setup("ethaddr", apx4devkit_fec_get_mac);
> the name is IMHO too generic for a board specific parameter. Think about
> a kernel that runs on all mxs based machines. ethaddr=... only affects
> your machine type. And it's not possible to add the same parameter to a
> different board.

I could rename the parameter name.


>> +static void __init apx4devkit_timer_init(void)
>> +{
>> +	mx28_clocks_init();
>> +}
>> +
>> +static struct sys_timer apx4devkit_timer = {
>> +	.init	= apx4devkit_timer_init,
>> +};
>> +
>> +MACHINE_START(APX4DEVKIT, "Bluegiga APX4 Development Kit")
>> +	.map_io		= mx28_map_io,
>> +	.init_irq	= mx28_init_irq,
>> +	.init_machine	= apx4devkit_init,
>> +	.timer		=&apx4devkit_timer,
>> +MACHINE_END
> please read http://article.gmane.org/gmane.linux.ports.arm.omap/50721

Do you mean init_machine and timer are in wrong order?


Regards,
Lauri Hintsala



More information about the linux-arm-kernel mailing list