[U-Boot-Users] [PATCH] Adds support for Xilinx Uart Lite on ppc4xx

Wolfgang Denk wd at denx.de
Thu Jul 10 20:41:53 CEST 2008


In message <1215712408-23567-8-git-send-email-ricardo.ribalda at uam.es> you wrote:
> 
> +*     This program is free software; you can redistribute it and/or modify it
> +*     under the terms of the GNU General Public License as published by the
> +*     Free Software Foundation; either version 2 of the License, or (at your
> +*     option) any later version.
...
> +*     XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" AS A
> +*     COURTESY TO YOU. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION AS
> +*     ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION OR STANDARD,
> +*     XILINX IS MAKING NO REPRESENTATION THAT THIS IMPLEMENTATION IS FREE
> +*     FROM ANY CLAIMS OF INFRINGEMENT, AND YOU ARE RESPONSIBLE FOR OBTAINING
> +*     ANY THIRD PARTY RIGHTS YOU MAY REQUIRE FOR YOUR IMPLEMENTATION.

This is IMHO in contradiction to the GPL clause above.

> +*     Xilinx hardware products are not intended for use in life support
> +*     appliances, devices, or systems. Use in such applications is
> +*     expressly prohibited.

This restriction is IMHO in contradiction to the GPL clause above.

...
> +#define XCOMPONENT_IS_READY	0x11111111	/* component has been initialized */
> +#define XCOMPONENT_IS_STARTED	0x22222222	/* component has been started */

Lines too long.

> +/* the following constants and declarations are for unit test purposes and are
> + * designed to be used in test applications.
> + */
> +#define XTEST_PASSED	0
> +#define XTEST_FAILED	1
> +
> +#define XASSERT_NONE	 0
> +#define XASSERT_OCCURRED 1
> +
> +extern unsigned int XAssertStatus;
> +extern void XAssert(char *, int);
> +
> +/**************************** Type Definitions *******************************/
> +
> +/** @name Primitive types
> + * These primitive types are created for transportability.
> + * They are dependent upon the target architecture.
> + * @{
> + */
> +#include <linux/types.h>
> +
> +typedef struct {
> +	u32 Upper;
> +	u32 Lower;
> +} Xuint64;
> +
> +/* Xilinx's unsigned integer types */
> +typedef u32 Xuint32;
> +typedef u16 Xuint16;
> +typedef u8 Xuint8;
> +
> +/* and signed integer types */
> +typedef s32 Xint32;
> +typedef s16 Xint16;
> +typedef s8 Xint8;
> +
> +#ifndef NULL
> +#define NULL 0
> +#endif
> +
> +typedef unsigned long Xboolean;
> +#define XNULL	NULL
> +
> +#define XTRUE	1
> +#define XFALSE	0
> +
> +/*@}*/
> +
> +/**
> + * This data type defines an interrupt handler for a device.
> + * The argument points to the instance of the component
> + */
> +typedef void (*XInterruptHandler) (void *InstancePtr);
> +
> +/**
> + * This data type defines a callback to be invoked when an
> + * assert occurs. The callback is invoked only when asserts are enabled
> + */
> +typedef void (*XAssertCallback) (char *FilenamePtr, int LineNumber);
> +
> +/***************** Macros (Inline Functions) Definitions *********************/
> +
> +/*****************************************************************************/
> +/**
> +* Return the most significant half of the 64 bit data type.
> +*
> +* @param x is the 64 bit word.
> +*
> +* @return
> +*
> +* The upper 32 bits of the 64 bit word.
> +*
> +* @note
> +*
> +* None.
> +*
> +******************************************************************************/
> +#define XUINT64_MSW(x) ((x).Upper)
> +
> +/*****************************************************************************/
> +/**
> +* Return the least significant half of the 64 bit data type.
> +*
> +* @param x is the 64 bit word.
> +*
> +* @return
> +*
> +* The lower 32 bits of the 64 bit word.
> +*
> +* @note
> +*
> +* None.
> +*
> +******************************************************************************/
> +#define XUINT64_LSW(x) ((x).Lower)
> +
> +#ifndef NDEBUG
> +
> +/*****************************************************************************/
> +/**
> +* This assert macro is to be used for functions that do not return anything
> +* (void). This in conjunction with the XWaitInAssert boolean can be used to
> +* accomodate tests so that asserts which fail allow execution to continue.
> +*
> +* @param expression is the expression to evaluate. If it evaluates to false,
> +*	 the assert occurs.
> +*
> +* @return
> +*
> +* Returns void unless the XWaitInAssert variable is true, in which case
> +* no return is made and an infinite loop is entered.
> +*
> +* @note
> +*
> +* None.
> +*
> +******************************************************************************/
> +#define XASSERT_VOID(expression)			\
> +{							\
> +	if (expression) {				\
> +		XAssertStatus = XASSERT_NONE;		\
> +	} else {					\
> +		XAssert(__FILE__, __LINE__);		\
> +		XAssertStatus = XASSERT_OCCURRED;	\
> +		return;					\
> +	}						\
> +}
> +
> +/*****************************************************************************/
> +/**
> +* This assert macro is to be used for functions that do return a value. This in
> +* conjunction with the XWaitInAssert boolean can be used to accomodate tests so
> +* that asserts which fail allow execution to continue.
> +*
> +* @param expression is the expression to evaluate. If it evaluates to false,
> +*	 the assert occurs.
> +*
> +* @return
> +*
> +* Returns 0 unless the XWaitInAssert variable is true, in which case
> +* no return is made and an infinite loop is entered.
> +*
> +* @note
> +*
> +* None.
> +*
> +******************************************************************************/
> +#define XASSERT_NONVOID(expression)			\
> +{							\
> +	if (expression) {				\
> +		XAssertStatus = XASSERT_NONE;		\
> +	} else {					\
> +		XAssert(__FILE__, __LINE__);		\
> +		XAssertStatus = XASSERT_OCCURRED;	\
> +		return 0;				\
> +	}						\
> +}
> +
> +/*****************************************************************************/
> +/**
> +* Always assert. This assert macro is to be used for functions that do not
> +* return anything (void). Use for instances where an assert should always
> +* occur.
> +*
> +* @return
> +*
> +* Returns void unless the XWaitInAssert variable is true, in which case
> +* no return is made and an infinite loop is entered.
> +*
> +* @note
> +*
> +* None.
> +*
> +******************************************************************************/
> +#define XASSERT_VOID_ALWAYS()				\
> +{							\
> +	XAssert(__FILE__, __LINE__);			\
> +	XAssertStatus = XASSERT_OCCURRED;		\
> +	return;						\
> +}
> +
> +/*****************************************************************************/
> +/**
> +* Always assert. This assert macro is to be used for functions that do return
> +* a value. Use for instances where an assert should always occur.
> +*
> +* @return
> +*
> +* Returns void unless the XWaitInAssert variable is true, in which case
> +* no return is made and an infinite loop is entered.
> +*
> +* @note
> +*
> +* None.
> +*
> +******************************************************************************/
> +#define XASSERT_NONVOID_ALWAYS()			\
> +{							\
> +	XAssert(__FILE__, __LINE__);			\
> +	XAssertStatus = XASSERT_OCCURRED;		\
> +	return 0;					\
> +}
> +
> +#else
> +
> +#define XASSERT_VOID(expression)
> +#define XASSERT_VOID_ALWAYS()
> +#define XASSERT_NONVOID(expression)
> +#define XASSERT_NONVOID_ALWAYS()
> +#endif
> +
> +/************************** Function Prototypes ******************************/
> +
> +void XAssertSetCallback(XAssertCallback Routine);
> +
> +#endif	/* end of protection macro */

And all this stuff is really, really needed in this boot loader ?

Really?

> --- /dev/null
> +++ b/include/asm-ppc/arch-ppc4xx/xuartlite_l.h
> @@ -0,0 +1,256 @@
> +/*****************************************************************************
> +*
> +*	XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS"
> +*	AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND
> +*	SOLUTIONS FOR XILINX DEVICES.  BY PROVIDING THIS DESIGN, CODE,
> +*	OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE,
> +*	APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION
> +*	THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT,
> +*	AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE
> +*	FOR YOUR IMPLEMENTATION.  XILINX EXPRESSLY DISCLAIMS ANY
> +*	WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE
> +*	IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR
> +*	REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF
> +*	INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
> +*	FOR A PARTICULAR PURPOSE.
> +*
> +*	(c) Copyright 2002 Xilinx Inc.
> +*	All rights reserved.

GPL header missing.

...
> +#define XUL_RX_FIFO_OFFSET		0   /* receive FIFO, read only */
> +#define XUL_TX_FIFO_OFFSET		4   /* transmit FIFO, write only */
> +#define XUL_STATUS_REG_OFFSET		8   /* status register, read only */
> +#define XUL_CONTROL_REG_OFFSET		12  /* control register, write only */

Lines too long. See also rest of your patches!



Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
That Microsoft, the Trabant of the operating  system  world,  may  be
glancing  over the Berlin Wall at the Audis and BMWs and Mercedes. In
their own universe Trabants and Ladas were mainstream too...
                                                   -- Evan Leibovitch




More information about the U-Boot mailing list