Skip to contentSkip to conversation

Support for the ML507 Xilinx Board

U-Boot-Users New Ricardo Ribalda Delgado 5 participants 26 messages Jul 10, 2008 – Jul 11, 2008 3 messages not in the archive

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

Hi List:

<Sorry for the multiple submitions, but I think that this will safe a lot of time for our main developers. BTW: This is the first time I use git>

This is my first contribution to u-boot. I have ported u-boot to the ML507 Board by Xilinx.
http://www.xilinx.com/products/devkits/HW-V5-ML507-UNI-G.htm

This boards includes an FPGA Virtex 5 FX with an embedded PowerPC 440.

The port supports:
-Virtex 5 ppc440x5
-XIlinx Interrupt Controller
-Xilinx I2C Controller (Interrupted mode)
-Xilinx Uart Lite (simple port)
-Xilinx LL_TEMA (Interrupted and SGDMA)
-Save environment on board eeprom
-DTT support for the ADT sensor on board (new hwmon driver) -Dummy I2C driver (for testing purposes)

This patch works against the last commit to the p4xx branch.

I am a researcher of the Universidad Autonoma de Madrid, and this work has been supported by Q-Technology ( http://qtec.com ) under a Research Agreement.

Any comment will be very welcomed.

#1 lore raw

PATCH 1/1 -Support fot the ADT7640 Monitor chip

---
 drivers/hwmon/Makefile  |    1 +
 drivers/hwmon/adt7460.c |   89 +++++++++++++++++++++++++++++++++++++++++++++++
 drivers/hwmon/adt7460.h |   49 ++++++++++++++++++++++++++
 include/dtt.h           |    2 +-
 4 files changed, 140 insertions(+), 1 deletions(-)
 create mode 100644 drivers/hwmon/adt7460.c
 create mode 100644 drivers/hwmon/adt7460.h
drivers/hwmon/Makefile +1 -0
index 065433a..83aa297 100644
@@ -34,6 +34,7 @@ COBJS-y += adm1021.o
 COBJS-y += ds1621.o
 COBJS-y += ds1722.o
 COBJS-y += ds1775.o
+COBJS-y += adt7460.o
 COBJS-$(CONFIG_DTT_LM73) += lm73.o
 COBJS-y += lm75.o
 COBJS-y += lm81.o
drivers/hwmon/adt7460.c new file +89 -0

89 lines not on this page · raw message

drivers/hwmon/adt7460.h new file +49 -0

49 lines not on this page · raw message

include/dtt.h +1 -1
index 4e8aaad..73d7547 100644
@@ -32,7 +32,7 @@
     defined(CONFIG_DTT_DS1775) || \
     defined(CONFIG_DTT_LM81) || \
     defined(CONFIG_DTT_ADM1021) || \
-    defined(CONFIG_DTT_LM73)
+    defined(CONFIG_DTT_LM73)||defined(CONFIG_DTT_ADT7460)
 
 #define CONFIG_DTT				/* We have a DTT */
 
Signature · 1 line
1.5.6.2
#2 lore raw

PATCH 1/1 I2C Dummy Driver

---
 drivers/i2c/Makefile    |    1 +
 drivers/i2c/dummy_i2c.c |   84 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 85 insertions(+), 0 deletions(-)
 create mode 100644 drivers/i2c/dummy_i2c.c
drivers/i2c/Makefile +1 -0
index 534c015..322c822 100644
@@ -30,6 +30,7 @@ COBJS-y += omap1510_i2c.o
 COBJS-y += omap24xx_i2c.o
 COBJS-y += tsi108_i2c.o
 COBJS-y += mxc_i2c.o
+COBJS-y += dummy_i2c.o
 
 COBJS	:= $(COBJS-y)
 SRCS	:= $(COBJS:.o=.c)
drivers/i2c/dummy_i2c.c new file +84 -0

84 lines not on this page · raw message

Signature · 1 line
1.5.6.2

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): [email protected]

#6 lore raw

PATCH 1/1 Adds support for the PPC440x5 Processor on Virtex5 FX

---
 cpu/ppc4xx/4xx_enet.c       |    2 +-
 cpu/ppc4xx/4xx_uart.c       |    4 ++++
 cpu/ppc4xx/cpu.c            |    5 +++++
 cpu/ppc4xx/gpio.c           |    5 +++++
 cpu/ppc4xx/interrupts.c     |    6 ++++++
 cpu/ppc4xx/miiphy.c         |    5 +++++
 cpu/ppc4xx/speed.c          |    5 ++++-
 cpu/ppc4xx/start.S          |    1 +
 include/asm-ppc/processor.h |    2 ++
 net/eth.c                   |    3 ++-
 10 files changed, 35 insertions(+), 3 deletions(-)
cpu/ppc4xx/4xx_enet.c +1 -1
index 4e863dc..d55ce56 100644
@@ -97,7 +97,7 @@
  * network support enabled.
  * Remark: CONFIG_405 describes Xilinx PPC405 FPGA without EMAC controller!
  */
-#if defined(CONFIG_CMD_NET) && !defined(CONFIG_405) && !defined(CONFIG_IOP480)
+#if defined(CONFIG_CMD_NET) && !defined(CONFIG_405) && !defined(CONFIG_IOP480) && !defined(CONFIG_440_VIRTEX5)
 
 #if !(defined(CONFIG_MII) || defined(CONFIG_CMD_MII))
 #error "CONFIG_MII has to be defined!"
cpu/ppc4xx/4xx_uart.c +4 -0
index a7587d4..e79c48c 100644
@@ -48,6 +48,7 @@
 #include <watchdog.h>
 #include <asm/ppc4xx-intvec.h>
 
+#if !defined(CONFIG_440_VIRTEX5)
 #ifdef CONFIG_SERIAL_MULTI
 #include <serial.h>
 #endif
@@ -58,6 +59,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
+
 #if defined(CONFIG_405GP) || defined(CONFIG_405CR) || \
     defined(CONFIG_405EP) || defined(CONFIG_405EZ) || \
     defined(CONFIG_405EX) || defined(CONFIG_440)
@@ -873,3 +875,5 @@ int serial_tstc(void)
 #endif /* CONFIG_SERIAL_MULTI */
 
 #endif	/* CONFIG_405GP || CONFIG_405CR */
+
+#endif
cpu/ppc4xx/cpu.c +5 -0
index 39f439d..defbbba 100644
@@ -508,6 +508,11 @@ int checkcpu (void)
 		puts("GT Rev. A");
 		strcpy(addstr, "Security/Kasumi support");
 		break;
+	
+	case PVR_VIRTEX5:
+		printf(" VIRTEX5");
+		break;
+
 
 	default:
 		printf (" UNKNOWN (PVR=%08x)", pvr);
cpu/ppc4xx/gpio.c +5 -0
index df99f53..59159ee 100644
@@ -26,6 +26,9 @@
 #include <asm/io.h>
 #include <asm/gpio.h>
 
+
+#if !defined(CONFIG_440_VIRTEX5)
+
 #if defined(CFG_4xx_GPIO_TABLE)
 gpio_param_s const gpio_tab[GPIO_GROUP_MAX][GPIO_MAX] = CFG_4xx_GPIO_TABLE;
 #endif
@@ -253,3 +256,5 @@ void gpio_set_chip_configuration(void)
 	}
 }
 #endif /* CFG_4xx_GPIO_TABLE */
+
+#endif
cpu/ppc4xx/interrupts.c +6 -0
index 8620e2b..7c7b073 100644
@@ -28,6 +28,9 @@
  */
 
 #include <common.h>
+
+#if !defined(CONFIG_440_VIRTEX5)
+
 #include <watchdog.h>
 #include <command.h>
 #include <asm/processor.h>
@@ -393,3 +396,6 @@ int do_irqinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 	return 0;
 }
 #endif
+
+
+#endif
cpu/ppc4xx/miiphy.c +5 -0
index c882720..172fbcd 100644
@@ -43,6 +43,9 @@
 #include <405_mal.h>
 #include <miiphy.h>
 
+
+#if !defined(CONFIG_440_VIRTEX5)
+
 #if !defined(CONFIG_PHY_CLK_FREQ)
 #define CONFIG_PHY_CLK_FREQ	0
 #endif
@@ -331,3 +334,5 @@ int emac4xx_miiphy_write (char *devname, unsigned char addr, unsigned char reg,
 {
 	return emac_miiphy_command(addr, reg, EMAC_STACR_WRITE, value);
 }
+
+#endif
cpu/ppc4xx/speed.c +4 -1
index 34bd721..5aa3655 100644
@@ -415,7 +415,7 @@ ulong get_PCI_freq (void)
 	return sys_info.freqPCI;
 }
 
-#elif !defined(CONFIG_440GX) && !defined(CONFIG_440SP) && !defined(CONFIG_440SPE)
+#elif !defined(CONFIG_440GX) && !defined(CONFIG_440SP) && !defined(CONFIG_440SPE) &&!defined(CONFIG_440_VIRTEX5)
 void get_sys_info (sys_info_t * sysInfo)
 {
 	unsigned long strp0;
@@ -448,6 +448,8 @@ void get_sys_info (sys_info_t * sysInfo)
 	sysInfo->freqUART = sysInfo->freqPLB;
 }
 #else
+
+#if !defined(CONFIG_440_VIRTEX5)
 void get_sys_info (sys_info_t * sysInfo)
 {
 	unsigned long strp0;
@@ -534,6 +536,7 @@ void get_sys_info (sys_info_t * sysInfo)
 }
 
 #endif
+#endif
 
 #if defined(CONFIG_YUCCA)
 unsigned long determine_sysper(void)
cpu/ppc4xx/start.S +1 -0
index 426bf3c..acb536d 100644
@@ -367,6 +367,7 @@ skip_debug_init:
 	/*----------------------------------------------------------------*/
 	/* Setup interrupt vectors */
 	/*----------------------------------------------------------------*/
+	li	r0,0
 	mtspr	ivpr,r0		/* Vectors start at 0x0000_0000 */
 	li	r1,0x0100
 	mtspr	ivor0,r1	/* Critical input */
include/asm-ppc/processor.h +2 -0
index 10fd478..04fa431 100644
@@ -835,6 +835,8 @@
 #define PVR_86xx	0x80040000
 #define PVR_86xx_REV1	(PVR_86xx | 0x0010)
 
+#define PVR_VIRTEX5     0x7ff21912
+
 /*
  * For the 8xx processors, all of them report the same PVR family for
  * the PowerPC core. The various versions of these processors must be
net/eth.c +2 -1
index 7fc9aee..763308d 100644
@@ -291,6 +291,7 @@ int eth_initialize(bd_t *bis)
 	at91sam9_eth_initialize(bis);
 #endif
 
+
 	if (!eth_devices) {
 		puts ("No ethernet found.\n");
 		show_boot_progress (-64);
@@ -621,7 +622,7 @@ int eth_initialize(bd_t *bis)
 	at91rm9200_miiphy_initialize(bis);
 #endif
 #if defined(CONFIG_4xx) && !defined(CONFIG_IOP480) \
-	&& !defined(CONFIG_AP1000) && !defined(CONFIG_405)
+	&& !defined(CONFIG_AP1000) && !defined(CONFIG_405) && !defined(CONFIG_440_VIRTEX5)
 	emac4xx_miiphy_initialize(bis);
 #endif
 #if defined(CONFIG_MCF52x2)
Signature · 1 line
1.5.6.2
#7 lore raw

PATCH 1/1 Adds support for Xilinx Uart Lite on ppc4xx

---
 include/asm-ppc/arch-ppc4xx/xbasic_types.h |  301 ++++++++++++++++++++++++++++
 include/asm-ppc/arch-ppc4xx/xio.h          |   63 ++++++
 include/asm-ppc/arch-ppc4xx/xuartlite_l.h  |  256 +++++++++++++++++++++++
 include/asm-ppc/serial_xuartlite.h         |   25 +++
 4 files changed, 645 insertions(+), 0 deletions(-)
 create mode 100644 include/asm-ppc/arch-ppc4xx/xbasic_types.h
 create mode 100644 include/asm-ppc/arch-ppc4xx/xio.h
 create mode 100644 include/asm-ppc/arch-ppc4xx/xuartlite_l.h
 create mode 100644 include/asm-ppc/serial_xuartlite.h
include/asm-ppc/arch-ppc4xx/xbasic_types.h new file +301 -0
new file mode 100644
index 0000000..25012e6
@@ -0,0 +1,301 @@
+/******************************************************************************
+*
+*     Author: Xilinx, Inc.
+*
+*
+*     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.
+*     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.
+*
+*
+*     Xilinx hardware products are not intended for use in life support
+*     appliances, devices, or systems. Use in such applications is
+*     expressly prohibited.
+*
+*
+*     (c) Copyright 2002-2003 Xilinx Inc.
+*     All rights reserved.
+*
+*
+*     You should have received a copy of the GNU General Public License along
+*     with this program; if not, write to the Free Software Foundation, Inc.,
+*     675 Mass Ave, Cambridge, MA 02139, USA.
+*
+******************************************************************************/
+/*****************************************************************************/
+/**
+*
+* @file xbasic_types.h
+*
+* This file contains basic types for Xilinx software IP.  These types do not
+* follow the standard naming convention with respect to using the component
+* name in front of each name because they are considered to be primitives.
+*
+* @note
+*
+* This file contains items which are architecture dependent.
+*
+* <pre>
+* MODIFICATION HISTORY:
+*
+* Ver	 Who	Date	Changes
+* ----- ---- -------- -----------------------------------------------
+* 1.00a rmm  12/14/01 First release
+*	rmm  05/09/03 Added "xassert always" macros to rid ourselves of diab
+*		      compiler warnings
+* </pre>
+*
+******************************************************************************/
+
+#ifndef XBASIC_TYPES_H		/* prevent circular inclusions */
+#define XBASIC_TYPES_H		/* by using protection macros */
+
+/***************************** Include Files *********************************/
+
+/************************** Constant Definitions *****************************/
+
+#ifndef TRUE
+#define TRUE 1
+#endif
+#ifndef FALSE
+#define FALSE 0
+#endif
+
+#ifndef NULL
+#define NULL 0
+#endif
+/** Null */
+
+#define XCOMPONENT_IS_READY	0x11111111	/* component has been initialized */
+#define XCOMPONENT_IS_STARTED	0x22222222	/* component has been started */
+
+/* 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 */
include/asm-ppc/arch-ppc4xx/xio.h new file +63 -0

63 lines not on this page · raw message

include/asm-ppc/arch-ppc4xx/xuartlite_l.h new file +256 -0

256 lines not on this page · raw message

include/asm-ppc/serial_xuartlite.h new file +25 -0
new file mode 100644
index 0000000..6cd1e83
@@ -0,0 +1,25 @@
+/*
+ * (C) Copyright 2004 Atmark Techno, Inc.
+ *
+ * Yasushi SHOJI <[email protected]>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * 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.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <asm/arch/xuartlite_l.h>
Signature · 1 line
1.5.6.2
#8 lore raw

PATCH 1/1 Adds support for Xilinx Uart Lite on ppc4xx

Quoted 5 lines · In message <[email protected]> you wrote:
include/asm-ppc/arch-ppc4xx/xbasic_types.h new file +4 -0
+*     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.

...

include/asm-ppc/arch-ppc4xx/xbasic_types.h line 17

Quoted 6 lines
include/asm-ppc/arch-ppc4xx/xbasic_types.h new file +6 -0
+*     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.

include/asm-ppc/arch-ppc4xx/xbasic_types.h line 27

Quoted 3 lines
include/asm-ppc/arch-ppc4xx/xbasic_types.h new file +3 -0
+*     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.

...

include/asm-ppc/arch-ppc4xx/xbasic_types.h line 84

Quoted 2 lines
include/asm-ppc/arch-ppc4xx/xbasic_types.h new file +2 -0
+#define XCOMPONENT_IS_READY	0x11111111	/* component has been initialized */
+#define XCOMPONENT_IS_STARTED	0x22222222	/* component has been started */

Lines too long.

Quoted 206 lines
include/asm-ppc/arch-ppc4xx/xbasic_types.h new file +206 -0
+/* 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)

include/asm-ppc/arch-ppc4xx/xbasic_types.h line 301

Quoted 10 lines
include/asm-ppc/arch-ppc4xx/xbasic_types.h new file +10 -0
+#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?

Quoted 11 lines
include/asm-ppc/arch-ppc4xx/xuartlite_l.h new file +8 -0
@@ -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,

include/asm-ppc/arch-ppc4xx/xuartlite_l.h line 18

Quoted 10 lines
include/asm-ppc/arch-ppc4xx/xuartlite_l.h new file +10 -0
+*	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.

...

include/asm-ppc/arch-ppc4xx/xuartlite_l.h line 55

Quoted 4 lines
include/asm-ppc/arch-ppc4xx/xuartlite_l.h new file +4 -0
+#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

Signature · 7 lines
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
#9 lore raw

PATCH 1/1 Adds support for Xilinx Uart Lite on ppc4xx

Hello again

This files already exist on the u-boot tree. They are located in
include/asm-microblaze and include/asm-microblaze/arch-microblaze . They give support to a simple uart which can also be used on the powerpc, I have just copied them from one directory to another.

This files have been provided by Xilinx, and they are the same in
all the OS and boot loaders, I don't think they break any GPL license,

Best regards and sorry for the coding style.... I am correcting it.

Quoted 296 lines · Wolfgang Denk
Quoted 5 lines · In message <[email protected]> you wrote:
include/asm-ppc/arch-ppc4xx/xbasic_types.h new file +4 -0
+*     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.

..

include/asm-ppc/arch-ppc4xx/xbasic_types.h line 17

Quoted 6 lines
include/asm-ppc/arch-ppc4xx/xbasic_types.h new file +6 -0
+*     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.

include/asm-ppc/arch-ppc4xx/xbasic_types.h line 27

Quoted 3 lines
include/asm-ppc/arch-ppc4xx/xbasic_types.h new file +3 -0
+*     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.

..

include/asm-ppc/arch-ppc4xx/xbasic_types.h line 84

Quoted 2 lines
include/asm-ppc/arch-ppc4xx/xbasic_types.h new file +2 -0
+#define XCOMPONENT_IS_READY  0x11111111      /* component has been initialized */
+#define XCOMPONENT_IS_STARTED        0x22222222      /* component has been started */

Lines too long.

Quoted 206 lines
include/asm-ppc/arch-ppc4xx/xbasic_types.h new file +206 -0
+/* 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)

include/asm-ppc/arch-ppc4xx/xbasic_types.h line 301

Quoted 10 lines
include/asm-ppc/arch-ppc4xx/xbasic_types.h new file +10 -0
+#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?

Quoted 11 lines
include/asm-ppc/arch-ppc4xx/xuartlite_l.h new file +8 -0
@@ -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,

include/asm-ppc/arch-ppc4xx/xuartlite_l.h line 18

Quoted 10 lines
include/asm-ppc/arch-ppc4xx/xuartlite_l.h new file +10 -0
+*    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.

..

include/asm-ppc/arch-ppc4xx/xuartlite_l.h line 55

Quoted 4 lines
include/asm-ppc/arch-ppc4xx/xuartlite_l.h new file +4 -0
+#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

Signature · 2 lines
Ricardo Ribalda
http://www.eps.uam.es/~rribalda/
#10 lore raw

PATCH 1/1 Adds support for Xilinx Uart Lite on ppc4xx

Quoted 5 lines · In message <[email protected]> you…

This files already exist on the u-boot tree. They are located in
include/asm-microblaze and include/asm-microblaze/arch-microblaze . They give support to a simple uart which can also be used on the powerpc, I have just copied them from one directory to another.

That's even worse. Don't do that. NEVER duplicate code.

Software engineering is an art of NOT duplicating previous work or code.

Quoted 3 lines

This files have been provided by Xilinx, and they are the same in
all the OS and boot loaders, I don't think they break any GPL license,

IANAL. Are you a laywer?

Quoted 5 lines
Quoted 5 lines
Quoted 4 lines
include/asm-ppc/arch-ppc4xx/xbasic_types.h new file +4 -0
+*     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.

..

Quoted 8 lines
Quoted 8 lines

include/asm-ppc/arch-ppc4xx/xbasic_types.h line 17

Quoted 6 lines
include/asm-ppc/arch-ppc4xx/xbasic_types.h new file +6 -0
+*     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.

If the code is under GPL there should not be any undefined (probably dangerous?) third party rights. If this should be the case, the file cannot be released under GPL.

Quoted 5 lines
Quoted 5 lines

include/asm-ppc/arch-ppc4xx/xbasic_types.h line 27

Quoted 3 lines
include/asm-ppc/arch-ppc4xx/xbasic_types.h new file +3 -0
+*     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.

[BTW: please do not top-post / full-quote.]

Best regards,

Wolfgang Denk

Signature · 4 lines
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
If you hear an onion ring, answer it.
#11 lore raw

PATCH 1/1 Adds support for Xilinx Uart Lite on ppc4xx

In reply to Ricardo Ribalda Delgado

Hi Wolfgang and Ricardo,

Quoted 6 lines

Hello again

This files already exist on the u-boot tree. They are located in
include/asm-microblaze and include/asm-microblaze/arch-microblaze . They give support to a simple uart which can also be used on the powerpc, I have just copied them from one directory to another.

These files are ancient and they are added 4 years ago. I'll look at it if they are use anywhere.

BTW in next merge open window I want to remove big bunch of code relate with xilinx generic driver.

Michal

Quoted 300 lines

This files have been provided by Xilinx, and they are the same in
all the OS and boot loaders, I don't think they break any GPL license,

Best regards and sorry for the coding style.... I am correcting it.

Quoted 289 lines · Wolfgang Denk
Quoted 4 lines · In message <[email protected]> you wrote:
include/asm-ppc/arch-ppc4xx/xbasic_types.h new file +4 -0
+*     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.

..

include/asm-ppc/arch-ppc4xx/xbasic_types.h line 17

Quoted 6 lines
include/asm-ppc/arch-ppc4xx/xbasic_types.h new file +6 -0
+*     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.

include/asm-ppc/arch-ppc4xx/xbasic_types.h line 27

Quoted 3 lines
include/asm-ppc/arch-ppc4xx/xbasic_types.h new file +3 -0
+*     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.

..

include/asm-ppc/arch-ppc4xx/xbasic_types.h line 84

Quoted 2 lines
include/asm-ppc/arch-ppc4xx/xbasic_types.h new file +2 -0
+#define XCOMPONENT_IS_READY  0x11111111      /* component has been initialized */
+#define XCOMPONENT_IS_STARTED        0x22222222      /* component has been started */

Lines too long.

Quoted 206 lines
include/asm-ppc/arch-ppc4xx/xbasic_types.h new file +206 -0
+/* 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)

include/asm-ppc/arch-ppc4xx/xbasic_types.h line 301

Quoted 10 lines
include/asm-ppc/arch-ppc4xx/xbasic_types.h new file +10 -0
+#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?

Quoted 11 lines
include/asm-ppc/arch-ppc4xx/xuartlite_l.h new file +8 -0
@@ -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,

include/asm-ppc/arch-ppc4xx/xuartlite_l.h line 18

Quoted 10 lines
include/asm-ppc/arch-ppc4xx/xuartlite_l.h new file +10 -0
+*    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.

..

include/asm-ppc/arch-ppc4xx/xuartlite_l.h line 55

Quoted 4 lines
include/asm-ppc/arch-ppc4xx/xuartlite_l.h new file +4 -0
+#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

#12 lore raw

PATCH 1/1 Adds support for Xilinx Uart Lite on ppc4xx

In reply to Ricardo Ribalda Delgado

100% NACK.

Quoted 681 lines
---
 include/asm-ppc/arch-ppc4xx/xbasic_types.h |  301 ++++++++++++++++++++++++++++
 include/asm-ppc/arch-ppc4xx/xio.h          |   63 ++++++
 include/asm-ppc/arch-ppc4xx/xuartlite_l.h  |  256 +++++++++++++++++++++++
 include/asm-ppc/serial_xuartlite.h         |   25 +++
 4 files changed, 645 insertions(+), 0 deletions(-)
 create mode 100644 include/asm-ppc/arch-ppc4xx/xbasic_types.h
 create mode 100644 include/asm-ppc/arch-ppc4xx/xio.h
 create mode 100644 include/asm-ppc/arch-ppc4xx/xuartlite_l.h
 create mode 100644 include/asm-ppc/serial_xuartlite.h
include/asm-ppc/arch-ppc4xx/xbasic_types.h new file +301 -0
new file mode 100644
index 0000000..25012e6
@@ -0,0 +1,301 @@
+/******************************************************************************
+*
+*     Author: Xilinx, Inc.
+*
+*
+*     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.
+*     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.
+*
+*
+*     Xilinx hardware products are not intended for use in life support
+*     appliances, devices, or systems. Use in such applications is
+*     expressly prohibited.
+*
+*
+*     (c) Copyright 2002-2003 Xilinx Inc.
+*     All rights reserved.
+*
+*
+*     You should have received a copy of the GNU General Public License along
+*     with this program; if not, write to the Free Software Foundation, Inc.,
+*     675 Mass Ave, Cambridge, MA 02139, USA.
+*
+******************************************************************************/
+/*****************************************************************************/
+/**
+*
+* @file xbasic_types.h
+*
+* This file contains basic types for Xilinx software IP.  These types do not
+* follow the standard naming convention with respect to using the component
+* name in front of each name because they are considered to be primitives.
+*
+* @note
+*
+* This file contains items which are architecture dependent.
+*
+* <pre>
+* MODIFICATION HISTORY:
+*
+* Ver	 Who	Date	Changes
+* ----- ---- -------- -----------------------------------------------
+* 1.00a rmm  12/14/01 First release
+*	rmm  05/09/03 Added "xassert always" macros to rid ourselves of diab
+*		      compiler warnings
+* </pre>
+*
+******************************************************************************/
+
+#ifndef XBASIC_TYPES_H		/* prevent circular inclusions */
+#define XBASIC_TYPES_H		/* by using protection macros */
+
+/***************************** Include Files *********************************/
+
+/************************** Constant Definitions *****************************/
+
+#ifndef TRUE
+#define TRUE 1
+#endif
+#ifndef FALSE
+#define FALSE 0
+#endif
+
+#ifndef NULL
+#define NULL 0
+#endif
+/** Null */
+
+#define XCOMPONENT_IS_READY	0x11111111	/* component has been initialized */
+#define XCOMPONENT_IS_STARTED	0x22222222	/* component has been started */
+
+/* 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 */
include/asm-ppc/arch-ppc4xx/xio.h new file +63 -0
new file mode 100644
index 0000000..7eed327
@@ -0,0 +1,63 @@
+/*
+ * xio.h
+ *
+ * Defines XIo functions for Xilinx OCP in terms of Linux primitives
+ *
+ * Author: MontaVista Software, Inc.
+ *         source at mvista.com
+ *
+ * 2002 (c) MontaVista, Software, Inc.  This file is licensed under the terms
+ * of the GNU General Public License version 2.  This program is licensed
+ * "as is" without any warranty of any kind, whether express or implied.
+ */
+
+#ifndef XIO_H
+#define XIO_H
+
+#include "xbasic_types.h"
+#include <asm/io.h>
+
+typedef u32 XIo_Address;
+
+extern inline u8
+XIo_In8(XIo_Address InAddress)
+{
+	return (u8) in_8((volatile unsigned char *) InAddress);
+}
+extern inline u16
+XIo_In16(XIo_Address InAddress)
+{
+	return (u16) in_be16((volatile unsigned short *) InAddress);
+}
+extern inline u32
+XIo_In32(XIo_Address InAddress)
+{
+	return (u32) in_be32((volatile unsigned *) InAddress);
+}
+extern inline void
+XIo_Out8(XIo_Address OutAddress, u8 Value)
+{
+	out_8((volatile unsigned char *) OutAddress, Value);
+}
+extern inline void
+XIo_Out16(XIo_Address OutAddress, u16 Value)
+{
+	out_be16((volatile unsigned short *) OutAddress, Value);
+}
+extern inline void
+XIo_Out32(XIo_Address OutAddress, u32 Value)
+{
+	out_be32((volatile unsigned *) OutAddress, Value);
+}
+
+#define XIo_ToLittleEndian16(s,d) (*(u16*)(d) = cpu_to_le16((u16)(s)))
+#define XIo_ToLittleEndian32(s,d) (*(u32*)(d) = cpu_to_le32((u32)(s)))
+#define XIo_ToBigEndian16(s,d) (*(u16*)(d) = cpu_to_be16((u16)(s)))
+#define XIo_ToBigEndian32(s,d) (*(u32*)(d) = cpu_to_be32((u32)(s)))
+
+#define XIo_FromLittleEndian16(s,d) (*(u16*)(d) = le16_to_cpu((u16)(s)))
+#define XIo_FromLittleEndian32(s,d) (*(u32*)(d) = le32_to_cpu((u32)(s)))
+#define XIo_FromBigEndian16(s,d) (*(u16*)(d) = be16_to_cpu((u16)(s)))
+#define XIo_FromBigEndian32(s,d) (*(u32*)(d) = be32_to_cpu((u32)(s)))
+
+#endif				/* XIO_H */
include/asm-ppc/arch-ppc4xx/xuartlite_l.h new file +256 -0
new file mode 100644
index 0000000..b381a0d
@@ -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.
+*
+*****************************************************************************/
+/****************************************************************************/
+/**
+*
+* @file xuartlite_l.h
+*
+* This header file contains identifiers and low-level driver functions (or
+* macros) that can be used to access the device.  High-level driver functions
+* are defined in xuartlite.h.
+*
+* <pre>
+* MODIFICATION HISTORY:
+*
+* Ver	Who  Date     Changes
+* ----- ---- -------- -----------------------------------------------
+* 1.00b rpm  04/25/02 First release
+* </pre>
+*
+*****************************************************************************/
+
+#ifndef XUARTLITE_L_H /* prevent circular inclusions */
+#define XUARTLITE_L_H /* by using protection macros */
+
+/***************************** Include Files ********************************/
+
+#include "xbasic_types.h"
+#include "xio.h"
+
+/************************** Constant Definitions ****************************/
+
+/* UART Lite register offsets */
+
+#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 */
+
+/* control register bit positions */
+
+#define XUL_CR_ENABLE_INTR		0x10	/* enable interrupt */
+#define XUL_CR_FIFO_RX_RESET		0x02	/* reset receive FIFO */
+#define XUL_CR_FIFO_TX_RESET		0x01	/* reset transmit FIFO */
+
+/* status register bit positions */
+
+#define XUL_SR_PARITY_ERROR		0x80
+#define XUL_SR_FRAMING_ERROR		0x40
+#define XUL_SR_OVERRUN_ERROR		0x20
+#define XUL_SR_INTR_ENABLED		0x10	/* interrupt enabled */
+#define XUL_SR_TX_FIFO_FULL		0x08	/* transmit FIFO full */
+#define XUL_SR_TX_FIFO_EMPTY		0x04	/* transmit FIFO empty */
+#define XUL_SR_RX_FIFO_FULL		0x02	/* receive FIFO full */
+#define XUL_SR_RX_FIFO_VALID_DATA	0x01	/* data in receive FIFO */
+
+/* the following constant specifies the size of the FIFOs, the size of the
+ * FIFOs includes the transmitter and receiver such that it is the total number
+ * of bytes that the UART can buffer
+ */
+#define XUL_FIFO_SIZE		    16
+
+/* Stop bits are fixed at 1. Baud, parity, and data bits are fixed on a
+ * per instance basis
+ */
+#define XUL_STOP_BITS		    1
+
+/* Parity definitions
+ */
+#define XUL_PARITY_NONE		    0
+#define XUL_PARITY_ODD		    1
+#define XUL_PARITY_EVEN		    2
+
+/**************************** Type Definitions ******************************/
+
+/***************** Macros (Inline Functions) Definitions ********************/
+
+/*****************************************************************************
+*
+* Low-level driver macros and functions. The list below provides signatures
+* to help the user use the macros.
+*
+* void XUartLite_mSetControlReg(u32 BaseAddress, u32 Mask)
+* u32 XUartLite_mGetControlReg(u32 BaseAddress)
+* u32 XUartLite_mGetStatusReg(u32 BaseAddress)
+*
+* Xboolean XUartLite_mIsReceiveEmpty(u32 BaseAddress)
+* Xboolean XUartLite_mIsTransmitFull(u32 BaseAddress)
+* Xboolean XUartLite_mIsIntrEnabled(u32 BaseAddress)
+*
+* void XUartLite_mEnableIntr(u32 BaseAddress)
+* void XUartLite_mDisableIntr(u32 BaseAddress)
+*
+* void XUartLite_SendByte(u32 BaseAddress, u8 Data);
+* u8 XUartLite_RecvByte(u32 BaseAddress);
+*
+*****************************************************************************/
+
+/****************************************************************************/
+/**
+*
+* Set the contents of the control register. Use the XUL_CR_* constants defined
+* above to create the bit-mask to be written to the register.
+*
+* @param    BaseAddress is the base address of the device
+* @param    Mask is the 32-bit value to write to the control register
+*
+* @return   None.
+*
+* @note	    None.
+*
+*****************************************************************************/
+#define XUartLite_mSetControlReg(BaseAddress, Mask) \
+		    XIo_Out32((BaseAddress) + XUL_CONTROL_REG_OFFSET, (Mask))
+
+
+/****************************************************************************/
+/**
+*
+* Get the contents of the control register. Use the XUL_CR_* constants defined
+* above to interpret the bit-mask returned.
+*
+* @param    BaseAddress is the	base address of the device
+*
+* @return   A 32-bit value representing the contents of the control register.
+*
+* @note	    None.
+*
+*****************************************************************************/
+#define XUartLite_mGetControlReg(BaseAddress) \
+		    XIo_In32((BaseAddress) + XUL_CONTROL_REG_OFFSET)
+
+
+/****************************************************************************/
+/**
+*
+* Get the contents of the status register. Use the XUL_SR_* constants defined
+* above to interpret the bit-mask returned.
+*
+* @param    BaseAddress is the	base address of the device
+*
+* @return   A 32-bit value representing the contents of the status register.
+*
+* @note	    None.
+*
+*****************************************************************************/
+#define XUartLite_mGetStatusReg(BaseAddress) \
+		    XIo_In32((BaseAddress) + XUL_STATUS_REG_OFFSET)
+
+
+/****************************************************************************/
+/**
+*
+* Check to see if the receiver has data.
+*
+* @param    BaseAddress is the	base address of the device
+*
+* @return   XTRUE if the receiver is empty, XFALSE if there is data present.
+*
+* @note	    None.
+*
+*****************************************************************************/
+#define XUartLite_mIsReceiveEmpty(BaseAddress) \
+	  (!(XUartLite_mGetStatusReg((BaseAddress)) & XUL_SR_RX_FIFO_VALID_DATA))
+
+
+/****************************************************************************/
+/**
+*
+* Check to see if the transmitter is full.
+*
+* @param    BaseAddress is the	base address of the device
+*
+* @return   XTRUE if the transmitter is full, XFALSE otherwise.
+*
+* @note	    None.
+*
+*****************************************************************************/
+#define XUartLite_mIsTransmitFull(BaseAddress) \
+		(XUartLite_mGetStatusReg((BaseAddress)) & XUL_SR_TX_FIFO_FULL)
+
+
+/****************************************************************************/
+/**
+*
+* Check to see if the interrupt is enabled.
+*
+* @param    BaseAddress is the	base address of the device
+*
+* @return   XTRUE if the interrupt is enabled, XFALSE otherwise.
+*
+* @note	    None.
+*
+*****************************************************************************/
+#define XUartLite_mIsIntrEnabled(BaseAddress) \
+		(XUartLite_mGetStatusReg((BaseAddress)) & XUL_SR_INTR_ENABLED)
+
+
+/****************************************************************************/
+/**
+*
+* Enable the device interrupt. Preserve the contents of the control register.
+*
+* @param    BaseAddress is the	base address of the device
+*
+* @return   None.
+*
+* @note	    None.
+*
+*****************************************************************************/
+#define XUartLite_mEnableIntr(BaseAddress) \
+	       XUartLite_mSetControlReg((BaseAddress), \
+		   XUartLite_mGetControlReg((BaseAddress)) | XUL_CR_ENABLE_INTR)
+
+
+/****************************************************************************/
+/**
+*
+* Disable the device interrupt. Preserve the contents of the control register.
+*
+* @param    BaseAddress is the	base address of the device
+*
+* @return   None.
+*
+* @note	    None.
+*
+*****************************************************************************/
+#define XUartLite_mDisableIntr(BaseAddress) \
+	      XUartLite_mSetControlReg((BaseAddress), \
+		  XUartLite_mGetControlReg((BaseAddress)) & ~XUL_CR_ENABLE_INTR)
+
+
+/************************** Function Prototypes *****************************/
+
+void XUartLite_SendByte(u32 BaseAddress, u8 Data);
+u8 XUartLite_RecvByte(u32 BaseAddress);
+
+
+#endif		  /* end of protection macro */
include/asm-ppc/serial_xuartlite.h new file +25 -0
new file mode 100644
index 0000000..6cd1e83
@@ -0,0 +1,25 @@
+/*
+ * (C) Copyright 2004 Atmark Techno, Inc.
+ *
+ * Yasushi SHOJI <[email protected]>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * 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.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <asm/arch/xuartlite_l.h>
#13 lore raw

PATCH 1/1 Adds support for Xilinx Uart Lite on ppc4xx

Quoted 14 lines · In message <[email protected]> you wrote:

100% NACK.

Quoted 11 lines
---
 include/asm-ppc/arch-ppc4xx/xbasic_types.h |  301 ++++++++++++++++++++++++++++
 include/asm-ppc/arch-ppc4xx/xio.h          |   63 ++++++
 include/asm-ppc/arch-ppc4xx/xuartlite_l.h  |  256 +++++++++++++++++++++++
 include/asm-ppc/serial_xuartlite.h         |   25 +++
 4 files changed, 645 insertions(+), 0 deletions(-)
 create mode 100644 include/asm-ppc/arch-ppc4xx/xbasic_types.h
 create mode 100644 include/asm-ppc/arch-ppc4xx/xio.h
 create mode 100644 include/asm-ppc/arch-ppc4xx/xuartlite_l.h
 create mode 100644 include/asm-ppc/serial_xuartlite.h

...

There is no need for a full quote when you add just asingle line of message text.

Best regards,

Wolfgang Denk

Signature · 7 lines
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
IMPORTANT NOTICE TO PURCHASERS: The Entire Physical Universe,  Inclu-
ding  This Product, May One Day Collapse Back into an Infinitesimally
Small Space. Should  Another  Universe  Subsequently  Re-emerge,  the
Existence of This Product in That Universe Cannot Be Guaranteed.
#14 lore raw

PATCH 1/1 Adds support for the PPC440x5 Processor on Virtex5 FX

In reply to Ricardo Ribalda Delgado

cpu/ppc4xx/4xx_enet.c line 100

Quoted 11 lines · In message <[email protected]> you wrote:
cpu/ppc4xx/4xx_enet.c +1 -1
index 4e863dc..d55ce56 100644
@@ -97,7 +97,7 @@
  * network support enabled.
  * Remark: CONFIG_405 describes Xilinx PPC405 FPGA without EMAC controller!
  */
-#if defined(CONFIG_CMD_NET) && !defined(CONFIG_405) && !defined(CONFIG_IOP480)
+#if defined(CONFIG_CMD_NET) && !defined(CONFIG_405) && !defined(CONFIG_IOP480) && !defined(CONFIG_440_VIRTEX5)

Line too long.

Quoted 15 lines
cpu/ppc4xx/4xx_enet.c +0 -0
 #if !(defined(CONFIG_MII) || defined(CONFIG_CMD_MII))
 #error "CONFIG_MII has to be defined!"
cpu/ppc4xx/4xx_uart.c +1 -0
index a7587d4..e79c48c 100644
@@ -48,6 +48,7 @@
 #include <watchdog.h>
 #include <asm/ppc4xx-intvec.h>
 
+#if !defined(CONFIG_440_VIRTEX5)
 #ifdef CONFIG_SERIAL_MULTI
 #include <serial.h>
 #endif

cpu/ppc4xx/4xx_uart.c line 62

Quoted 4 lines
cpu/ppc4xx/4xx_uart.c +1 -0
@@ -58,6 +59,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
+

Too many empty lines.

cpu/ppc4xx/4xx_uart.c int serial_tstc(void) · line 878

Quoted 8 lines
cpu/ppc4xx/4xx_uart.c +1 -0
 #if defined(CONFIG_405GP) || defined(CONFIG_405CR) || \
     defined(CONFIG_405EP) || defined(CONFIG_405EZ) || \
     defined(CONFIG_405EX) || defined(CONFIG_440)
@@ -873,3 +875,5 @@ int serial_tstc(void)
 #endif /* CONFIG_SERIAL_MULTI */
 
 #endif	/* CONFIG_405GP || CONFIG_405CR */
+

Unnecessary empty line.

Quoted 6 lines
cpu/ppc4xx/4xx_uart.c +1 -0
+#endif
cpu/ppc4xx/cpu.c +0 -0
index 39f439d..defbbba 100644

cpu/ppc4xx/cpu.c int checkcpu (void) · line 516

Quoted 9 lines
cpu/ppc4xx/cpu.c +5 -0
@@ -508,6 +508,11 @@ int checkcpu (void)
 		puts("GT Rev. A");
 		strcpy(addstr, "Security/Kasumi support");
 		break;
+	
+	case PVR_VIRTEX5:
+		printf(" VIRTEX5");
+		break;
+
 

Too many empty lines.

cpu/ppc4xx/speed.c ulong get_PCI_freq (void) · line 418

Quoted 8 lines
cpu/ppc4xx/speed.c +1 -1
@@ -415,7 +415,7 @@ ulong get_PCI_freq (void)
 	return sys_info.freqPCI;
 }
 
-#elif !defined(CONFIG_440GX) && !defined(CONFIG_440SP) && !defined(CONFIG_440SPE)
+#elif !defined(CONFIG_440GX) && !defined(CONFIG_440SP) && !defined(CONFIG_440SPE) &&!defined(CONFIG_440_VIRTEX5)

Line too long.

cpu/ppc4xx/start.S skip_debug_init: · line 370

Quoted 7 lines
cpu/ppc4xx/start.S +1 -0
@@ -367,6 +367,7 @@ skip_debug_init:
 	/*----------------------------------------------------------------*/
 	/* Setup interrupt vectors */
 	/*----------------------------------------------------------------*/
+	li	r0,0

Why do you think this was necessary?

net/eth.c int eth_initialize(bd_t *bis) · line 294

Quoted 7 lines
net/eth.c +1 -0
@@ -291,6 +291,7 @@ int eth_initialize(bd_t *bis)
 	at91sam9_eth_initialize(bis);
 #endif
 
+

Too many empoty lines.

net/eth.c int eth_initialize(bd_t *bis) · line 625

Quoted 9 lines
net/eth.c +1 -1
 	if (!eth_devices) {
 		puts ("No ethernet found.\n");
 		show_boot_progress (-64);
@@ -621,7 +622,7 @@ int eth_initialize(bd_t *bis)
 	at91rm9200_miiphy_initialize(bis);
 #endif
 #if defined(CONFIG_4xx) && !defined(CONFIG_IOP480) \
-	&& !defined(CONFIG_AP1000) && !defined(CONFIG_405)
+	&& !defined(CONFIG_AP1000) && !defined(CONFIG_405) && !defined(CONFIG_440_VIRTEX5)

Line too long.

Best regards,

Wolfgang Denk

Signature · 5 lines
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
Some people march to the beat of a different drummer. And some people
tango!
#15 lore raw

PATCH 1/1 Adds support for the PPC440x5 Processor on Virtex5 FX

Hi again

You are right on all your comments, I am correcting them on my
local copy. Once I receive more comments I will resubmit.

Thanks and best regards

Quoted 121 lines · Wolfgang Denk

cpu/ppc4xx/4xx_enet.c line 100

Quoted 11 lines · In message <[email protected]> you wrote:
cpu/ppc4xx/4xx_enet.c +1 -1
index 4e863dc..d55ce56 100644
@@ -97,7 +97,7 @@
  * network support enabled.
  * Remark: CONFIG_405 describes Xilinx PPC405 FPGA without EMAC controller!
  */
-#if defined(CONFIG_CMD_NET) && !defined(CONFIG_405) && !defined(CONFIG_IOP480)
+#if defined(CONFIG_CMD_NET) && !defined(CONFIG_405) && !defined(CONFIG_IOP480) && !defined(CONFIG_440_VIRTEX5)

Line too long.

Quoted 15 lines
cpu/ppc4xx/4xx_enet.c +0 -0
 #if !(defined(CONFIG_MII) || defined(CONFIG_CMD_MII))
 #error "CONFIG_MII has to be defined!"
cpu/ppc4xx/4xx_uart.c +1 -0
index a7587d4..e79c48c 100644
@@ -48,6 +48,7 @@
 #include <watchdog.h>
 #include <asm/ppc4xx-intvec.h>
 
+#if !defined(CONFIG_440_VIRTEX5)
 #ifdef CONFIG_SERIAL_MULTI
 #include <serial.h>
 #endif

cpu/ppc4xx/4xx_uart.c line 62

Quoted 4 lines
cpu/ppc4xx/4xx_uart.c +1 -0
@@ -58,6 +59,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
+

Too many empty lines.

cpu/ppc4xx/4xx_uart.c int serial_tstc(void) · line 878

Quoted 8 lines
cpu/ppc4xx/4xx_uart.c +1 -0
 #if defined(CONFIG_405GP) || defined(CONFIG_405CR) || \
     defined(CONFIG_405EP) || defined(CONFIG_405EZ) || \
     defined(CONFIG_405EX) || defined(CONFIG_440)
@@ -873,3 +875,5 @@ int serial_tstc(void)
 #endif /* CONFIG_SERIAL_MULTI */
 
 #endif       /* CONFIG_405GP || CONFIG_405CR */
+

Unnecessary empty line.

Quoted 6 lines
cpu/ppc4xx/4xx_uart.c +1 -0
+#endif
cpu/ppc4xx/cpu.c +0 -0
index 39f439d..defbbba 100644

cpu/ppc4xx/cpu.c int checkcpu (void) · line 516

Quoted 9 lines
cpu/ppc4xx/cpu.c +5 -0
@@ -508,6 +508,11 @@ int checkcpu (void)
              puts("GT Rev. A");
              strcpy(addstr, "Security/Kasumi support");
              break;
+
+     case PVR_VIRTEX5:
+             printf(" VIRTEX5");
+             break;
+
 

Too many empty lines.

cpu/ppc4xx/speed.c ulong get_PCI_freq (void) · line 418

Quoted 8 lines
cpu/ppc4xx/speed.c +1 -1
@@ -415,7 +415,7 @@ ulong get_PCI_freq (void)
      return sys_info.freqPCI;
 }
 
-#elif !defined(CONFIG_440GX) && !defined(CONFIG_440SP) && !defined(CONFIG_440SPE)
+#elif !defined(CONFIG_440GX) && !defined(CONFIG_440SP) && !defined(CONFIG_440SPE) &&!defined(CONFIG_440_VIRTEX5)

Line too long.

cpu/ppc4xx/start.S skip_debug_init: · line 370

Quoted 7 lines
cpu/ppc4xx/start.S +1 -0
@@ -367,6 +367,7 @@ skip_debug_init:
      /*----------------------------------------------------------------*/
      /* Setup interrupt vectors */
      /*----------------------------------------------------------------*/
+     li      r0,0

Why do you think this was necessary?

net/eth.c int eth_initialize(bd_t *bis) · line 294

Quoted 7 lines
net/eth.c +1 -0
@@ -291,6 +291,7 @@ int eth_initialize(bd_t *bis)
      at91sam9_eth_initialize(bis);
 #endif
 
+

Too many empoty lines.

net/eth.c int eth_initialize(bd_t *bis) · line 625

Quoted 9 lines
net/eth.c +1 -1
      if (!eth_devices) {
              puts ("No ethernet found.\n");
              show_boot_progress (-64);
@@ -621,7 +622,7 @@ int eth_initialize(bd_t *bis)
      at91rm9200_miiphy_initialize(bis);
 #endif
 #if defined(CONFIG_4xx) && !defined(CONFIG_IOP480) \
-     && !defined(CONFIG_AP1000) && !defined(CONFIG_405)
+     && !defined(CONFIG_AP1000) && !defined(CONFIG_405) && !defined(CONFIG_440_VIRTEX5)

Line too long.

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 Some people march to the beat of a different drummer. And some people tango!

Signature · 2 lines
Ricardo Ribalda
http://www.eps.uam.es/~rribalda/
#16 lore raw

PATCH 1/1 I2C Dummy Driver

In reply to Ricardo Ribalda Delgado
Quoted 25 lines · Ricardo Ribalda Delgado
---
 drivers/i2c/Makefile    |    1 +
 drivers/i2c/dummy_i2c.c |   84 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 85 insertions(+), 0 deletions(-)
 create mode 100644 drivers/i2c/dummy_i2c.c
drivers/i2c/Makefile +1 -0
index 534c015..322c822 100644
@@ -30,6 +30,7 @@ COBJS-y += omap1510_i2c.o
 COBJS-y += omap24xx_i2c.o
 COBJS-y += tsi108_i2c.o
 COBJS-y += mxc_i2c.o
+COBJS-y += dummy_i2c.o
 
 COBJS	:= $(COBJS-y)
 SRCS	:= $(COBJS:.o=.c)
drivers/i2c/dummy_i2c.c new file +0 -0
new file mode 100644
index 0000000..04f6edb

drivers/i2c/dummy_i2c.c line 8

Quoted 8 lines
drivers/i2c/dummy_i2c.c new file +8 -0
@@ -0,0 +1,84 @@
+/*   
+    (C) Copyright 2008
+    Ricado Ribalda, Universidad Autonoma de Madrid, ricardo.ribalda<at>uam.es , ricardo.ribalda<at>gmail.com
+    This work has been supported by: Q-Technology  http://qtec.com/
+
+    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 3 of the License, or

Ditto: GPLv3 is a problem because most of u-boot is licensed at GPLv2 (possibly with an upgrade clause). The problem is, GPLv3 is not backward compatible with GPLv2 because it adds restrictions.
<http://www.fsf.org/licensing/licenses/>

If you wish to have this added to u-boot, you will need to change the licensing to GPLv2 (note that you can still keep the "any later" upgrade clause).

Best regards,
gvb

#17 lore raw

PATCH 1/1 I2C Dummy Driver

In reply to Ricardo Ribalda Delgado
Quoted 2 lines · In message <[email protected]> you wrote:

What is the intention or practical use of this dummy driver?

Quoted 3 lines
drivers/i2c/Makefile +0 -0
@@ -30,6 +30,7 @@ COBJS-y += omap1510_i2c.o

...

Quoted 1 line

+COBJS-y += dummy_i2c.o

Please make "COBJS-$(CONFIG_DUMMY_I2C) += dummy_i2c.o" and ...

Quoted 6 lines
drivers/i2c/dummy_i2c.c new file +0 -0
new file mode 100644
index 0000000..04f6edb
@@ -0,0 +1,84 @@

...

drivers/i2c/dummy_i2c.c line 3

Quoted 2 lines
drivers/i2c/dummy_i2c.c new file +2 -0
+    (C) Copyright 2008
+    Ricado Ribalda, Universidad Autonoma de Madrid, ricardo.ribalda<at>uam.es , ricardo.ribalda<at>gmail.com

[Line too long]

drivers/i2c/dummy_i2c.c line 9

Quoted 4 lines
drivers/i2c/dummy_i2c.c new file +4 -0
+    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 3 of the License, or
+    (at your option) any later version.

[ GPLv2 needed]

Quoted 1 line

+#if defined(CONFIG_DUMMY_I2C)

... drop this #ifdef / #endif

Quoted 4 lines
drivers/i2c/dummy_i2c.c new file +3 -0
+
+#include <i2c.h>
+u8 i2c_dummy_buffer[256]={0x80,0x8,0x8,0x0D,0x0A,0x60,0x40,0x0,0x5,0x3D,0x50,0x0,0x82,0x10,0x0,0x0,0x0C,0x4,0x18,0x1,0x4,0x0,0x1,0x50,0x50,0x0,0x0,0x3C,0x28,0x3C,0x2D,0x40,0x25,0x37,0x10,0x22,0x3C,0x1E,0x1E,0x0,0x0,0x3C,0x69,0x80,0x1E,0x28,0x0,0x0,0x0,

0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x12,0xC9,0x2C,'0','0','0','0','0','0','0',0x0,'4','H','T','F','3','2','6','4','H','Y','-','5','3','E','D','3',0x3,0x0,0x0,0x0,0x0};

Line way too long.

Maybe you also want to explain where these magic data is coming from or what it means?

drivers/i2c/dummy_i2c.c

Quoted 1 line
drivers/i2c/dummy_i2c.c new file +1 -0
+	if (alen!=1)
	if (alen != 1)

drivers/i2c/dummy_i2c.c line 43

Quoted 3 lines
drivers/i2c/dummy_i2c.c new file +3 -0
+		return -1;
+
+	if (addr+len>0xff)
	if (addr+len > 0xff)

drivers/i2c/dummy_i2c.c line 46

Quoted 3 lines
drivers/i2c/dummy_i2c.c new file +3 -0
+		return -1;
+
+	for(i=0;i<len;i++){
	for (i=0; i<len; i++) {

drivers/i2c/dummy_i2c.c line 47

Quoted 1 line
drivers/i2c/dummy_i2c.c new file +1 -0
+		buffer[i]=i2c_dummy_buffer[i+addr];
		buffer[i] = i2c_dummy_buffer[i+addr];

etc., please.

Best regards,

Wolfgang Denk

Signature · 5 lines
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
"Plan to throw one away.  You will anyway."
                              - Fred Brooks, "The Mythical Man Month"
#18 lore raw

PATCH 1/1 I2C Dummy Driver

Hi Wolfgang

Quoted 1 line

What is the intention or practical use of this dummy driver?

I developed this driver for two reasons,

I wanted a dummy driver to test the i2c subsystem
I wanted a way of use the ddr2 autoconfiguration for ppc440 without i2c.

Quoted 9 lines
Quoted 4 lines
(quoted diff) +2 -0
+#if defined(CONFIG_DUMMY_I2C)
+u8 i2c_dummy_buffer[256]={0x80,0x8,0x8,0x0D,0x0A,0x60,0x40,0x0,0x5,0x3D,0x50,0x0,0x82,0x10,0x0,0x0,0x0C,0x4,0x18,0x1,0x4,0x0,0x1,0x50,0x50,0x0,0x0,0x3C,0x28,0x3C,0x2D,0x40,0x25,0x37,0x10,0x22,0x3C,0x1E,0x1E,0x0,0x0,0x3C,0x69,0x80,0x1E,0x28,0x0,0x0,0x0,

0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x12,0xC9,0x2C,'0','0','0','0','0','0','0',0x0,'4','H','T','F','3','2','6','4','H','Y','-','5','3','E','D','3',0x3,0x0,0x0,0x0,0x0};

Line way too long.

Maybe you also want to explain where these magic data is coming from or what it means?

It is the identification data of my ddr2 memory.

I will redo this patch and sent it again if you consider it useful for the mainline.

Best Regards and thanks for your comments

Quoted 7 lines

--
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 "Plan to throw one away. You will anyway."
- Fred Brooks, "The Mythical Man Month"

Signature · 2 lines
Ricardo Ribalda
http://www.eps.uam.es/~rribalda/
#19 lore raw

PATCH 1/1 I2C Dummy Driver

Hi Ricardo,

Quoted 16 lines

Hi Wolfgang

Quoted 1 line

What is the intention or practical use of this dummy driver?

I developed this driver for two reasons,

I wanted a dummy driver to test the i2c subsystem
I wanted a way of use the ddr2 autoconfiguration for ppc440 without i2c.

Quoted 5 lines
Quoted 3 lines
(quoted diff) +2 -0
+#if defined(CONFIG_DUMMY_I2C)
+u8 i2c_dummy_buffer[256]={0x80,0x8,0x8,0x0D,0x0A,0x60,0x40,0x0,0x5,0x3D,0x50,0x0,0x82,0x10,0x0,0x0,0x0C,0x4,0x18,0x1,0x4,0x0,0x1,0x50,0x50,0x0,0x0,0x3C,0x28,0x3C,0x2D,0x40,0x25,0x37,0x10,0x22,0x3C,0x1E,0x1E,0x0,0x0,0x3C,0x69,0x80,0x1E,0x28,0x0,0x0,0x0,

0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x12,0xC9,0x2C,'0','0','0','0','0','0','0',0x0,'4','H','T','F','3','2','6','4','H','Y','-','5','3','E','D','3',0x3,0x0,0x0,0x0,0x0};

Line way too long.

Quoted 4 lines
Quoted 2 lines

Maybe you also want to explain where these magic data is coming from or what it means?

It is the identification data of my ddr2 memory.

I think you will have to recoded it for better understanding.

M

Quoted 17 lines

I will redo this patch and sent it again if you consider it useful for the mainline.

Best Regards and thanks for your comments

Quoted 7 lines

--
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 "Plan to throw one away. You will anyway."
- Fred Brooks, "The Mythical Man Month"

#20 lore raw

PATCH 1/1 I2C Dummy Driver

In reply to Wolfgang Denk
Quoted 9 lines · Wolfgang Denk
Quoted 2 lines · In message <[email protected]> you wrote:

What is the intention or practical use of this dummy driver?

I think we could use it well for mounting different memory configurations on the same base board.
This happens frequently due to different size requests from customers or chip-replacement.
Actually I'll have to compile u-boot for each memory config ... very bad.

Getting the data out of flash (environment or small dedicated sector) would be fine.

Creating valid eeprom entries for use as SPD is another thing of ocurse.

Quoted 83 lines
Quoted 4 lines
drivers/i2c/Makefile +0 -0
@@ -30,6 +30,7 @@ COBJS-y += omap1510_i2c.o
 

...

Quoted 2 lines

+COBJS-y += dummy_i2c.o

Please make "COBJS-$(CONFIG_DUMMY_I2C) += dummy_i2c.o" and ...

Quoted 7 lines
drivers/i2c/dummy_i2c.c new file +0 -0
new file mode 100644
index 0000000..04f6edb
@@ -0,0 +1,84 @@

...

drivers/i2c/dummy_i2c.c line 3

Quoted 3 lines
drivers/i2c/dummy_i2c.c new file +2 -0
+    (C) Copyright 2008
+    Ricado Ribalda, Universidad Autonoma de Madrid, ricardo.ribalda<at>uam.es , ricardo.ribalda<at>gmail.com

[Line too long]

drivers/i2c/dummy_i2c.c line 9

Quoted 5 lines
drivers/i2c/dummy_i2c.c new file +4 -0
+    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 3 of the License, or
+    (at your option) any later version.

[ GPLv2 needed]

Quoted 2 lines

+#if defined(CONFIG_DUMMY_I2C)

... drop this #ifdef / #endif

Quoted 5 lines
drivers/i2c/dummy_i2c.c new file +3 -0
+
+#include <i2c.h>
+u8 i2c_dummy_buffer[256]={0x80,0x8,0x8,0x0D,0x0A,0x60,0x40,0x0,0x5,0x3D,0x50,0x0,0x82,0x10,0x0,0x0,0x0C,0x4,0x18,0x1,0x4,0x0,0x1,0x50,0x50,0x0,0x0,0x3C,0x28,0x3C,0x2D,0x40,0x25,0x37,0x10,0x22,0x3C,0x1E,0x1E,0x0,0x0,0x3C,0x69,0x80,0x1E,0x28,0x0,0x0,0x0,

0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x12,0xC9,0x2C,'0','0','0','0','0','0','0',0x0,'4','H','T','F','3','2','6','4','H','Y','-','5','3','E','D','3',0x3,0x0,0x0,0x0,0x0};

Line way too long.

Maybe you also want to explain where these magic data is coming from or what it means?

drivers/i2c/dummy_i2c.c

Quoted 2 lines
drivers/i2c/dummy_i2c.c new file +1 -0
+	if (alen!=1)
	if (alen != 1)

drivers/i2c/dummy_i2c.c line 43

Quoted 4 lines
drivers/i2c/dummy_i2c.c new file +3 -0
+		return -1;
+
+	if (addr+len>0xff)
	if (addr+len > 0xff)

drivers/i2c/dummy_i2c.c line 46

Quoted 4 lines
drivers/i2c/dummy_i2c.c new file +3 -0
+		return -1;
+
+	for(i=0;i<len;i++){
	for (i=0; i<len; i++) {

drivers/i2c/dummy_i2c.c line 47

Quoted 2 lines
drivers/i2c/dummy_i2c.c new file +1 -0
+		buffer[i]=i2c_dummy_buffer[i+addr];
		buffer[i] = i2c_dummy_buffer[i+addr];
Quoted 8 lines

etc., please.

Best regards,

Wolfgang Denk

MATRIX VISION GmbH, Talstra?e 16, DE-71570 Oppenweiler - Registergericht: Amtsgericht Stuttgart, HRB 271090 Gesch?ftsf?hrer: Gerhard Thullner, Werner Armingeon, Uwe Furtner

#21 lore raw

PATCH 1/1 I2C Dummy Driver

In reply to Ricardo Ribalda Delgado

Clean coding style. http://www.denx.de/wiki/UBoot/CodingStyle

Quoted 109 lines
---
 drivers/i2c/Makefile    |    1 +
 drivers/i2c/dummy_i2c.c |   84 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 85 insertions(+), 0 deletions(-)
 create mode 100644 drivers/i2c/dummy_i2c.c
drivers/i2c/Makefile +1 -0
index 534c015..322c822 100644
@@ -30,6 +30,7 @@ COBJS-y += omap1510_i2c.o
 COBJS-y += omap24xx_i2c.o
 COBJS-y += tsi108_i2c.o
 COBJS-y += mxc_i2c.o
+COBJS-y += dummy_i2c.o
 
 COBJS	:= $(COBJS-y)
 SRCS	:= $(COBJS:.o=.c)
drivers/i2c/dummy_i2c.c new file +84 -0
new file mode 100644
index 0000000..04f6edb
@@ -0,0 +1,84 @@
+/*   
+    (C) Copyright 2008
+    Ricado Ribalda, Universidad Autonoma de Madrid, ricardo.ribalda<at>uam.es , ricardo.ribalda<at>gmail.com
+    This work has been supported by: Q-Technology  http://qtec.com/
+
+    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 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <common.h>
+
+#if defined(CONFIG_DUMMY_I2C)
+
+
+#include <i2c.h>
+u8 i2c_dummy_buffer[256]={0x80,0x8,0x8,0x0D,0x0A,0x60,0x40,0x0,0x5,0x3D,0x50,0x0,0x82,0x10,0x0,0x0,0x0C,0x4,0x18,0x1,0x4,0x0,0x1,0x50,0x50,0x0,0x0,0x3C,0x28,0x3C,0x2D,0x40,0x25,0x37,0x10,0x22,0x3C,0x1E,0x1E,0x0,0x0,0x3C,0x69,0x80,0x1E,0x28,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x12,0xC9,0x2C,'0','0','0','0','0','0','0',0x0,'4','H','T','F','3','2','6','4','H','Y','-','5','3','E','D','3',0x3,0x0,0x0,0x0,0x0};
+	
+
+
+void i2c_init(int speed, int slaveaddr){
+	return ;
+}
+
+
+
+int
+i2c_read(uchar chip, uint addr, int alen, uchar * buffer, int len)
+{
+	int i;
+	if (alen!=1)
+		return -1;
+
+	if (addr+len>0xff)
+		return -1;
+
+	for(i=0;i<len;i++){
+		buffer[i]=i2c_dummy_buffer[i+addr];
+	}
+
+	return 0;
+
+
+}
+
+
+int
+i2c_write(uchar chip, uint addr, int alen, uchar * buffer, int len)
+{
+	int i;
+	if (alen!=1)
+		return -1;
+	if (addr+len>0xff)
+		return -1;
+
+	for(i=0;i<len;i++){
+		i2c_dummy_buffer[i+addr]=buffer[i];
+	}
+
+	return 0;
+}
+
+
+int
+i2c_probe(uchar chip)
+{
+	return 0;
+}
+
+
+
+
+
+#endif
+
#22 lore raw

PATCH 1/1 -Support fot the ADT7640 Monitor chip

In reply to Ricardo Ribalda Delgado
Quoted 9 lines · Ricardo Ribalda Delgado
---
 drivers/hwmon/Makefile  |    1 +
 drivers/hwmon/adt7460.c |   89 +++++++++++++++++++++++++++++++++++++++++++++++
 drivers/hwmon/adt7460.h |   49 ++++++++++++++++++++++++++
 include/dtt.h           |    2 +-
 4 files changed, 140 insertions(+), 1 deletions(-)
 create mode 100644 drivers/hwmon/adt7460.c
 create mode 100644 drivers/hwmon/adt7460.h

[snip]

drivers/hwmon/adt7460.c line 8

Quoted 10 lines

+++ b/drivers/hwmon/adt7460.c

drivers/hwmon/adt7460.c new file +8 -0
@@ -0,0 +1,89 @@
+/*   
+    (C) Copyright 2008
+    Ricado Ribalda, Universidad Autonoma de Madrid, ricardo.ribalda<at>uam.es , ricardo.ribalda<at>gmail.com
+    This work has been supported by: Q-Technology  http://qtec.com/
+
+    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 3 of the License, or

Hi Ricardo,

GPLv3 is a problem because most of u-boot is licensed at GPLv2 (possibly with an upgrade clause). The problem is, GPLv3 is not backward compatible with GPLv2 because it adds restrictions.
<http://www.fsf.org/licensing/licenses/>

If you wish to have this added to u-boot, you will need to change the licensing to GPLv2 (note that you can still keep the "any later" upgrade clause).

[snip]

Quoted 6 lines
drivers/hwmon/adt7460.h new file +0 -0
new file mode 100644
index 0000000..48666f7

drivers/hwmon/adt7460.h line 8

Quoted 8 lines
drivers/hwmon/adt7460.h new file +8 -0
@@ -0,0 +1,49 @@
+/*   
+    (C) Copyright 2008
+    Ricado Ribalda, Universidad Autonoma de Madrid, ricardo.ribalda<at>uam.es , ricardo.ribalda<at>gmail.com
+    This work has been supported by: Q-Technology  http://qtec.com/    
+
+    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 3 of the License, or

Ditto.

Best regards,
gvb

#23 lore raw

PATCH 1/1 -Support fot the ADT7640 Monitor chip

Hello Jerry

I didn't know that.... I will change the license and resend the patches as soon as I get more feedback to keep the mailing list as silent as possible.

Again: Thanks

Quoted 58 lines · Jerry Van Baren
Quoted 11 lines · Ricardo Ribalda Delgado
---
 drivers/hwmon/Makefile  |    1 +
 drivers/hwmon/adt7460.c |   89
+++++++++++++++++++++++++++++++++++++++++++++++
 drivers/hwmon/adt7460.h |   49 ++++++++++++++++++++++++++
 include/dtt.h           |    2 +-
 4 files changed, 140 insertions(+), 1 deletions(-)
 create mode 100644 drivers/hwmon/adt7460.c
 create mode 100644 drivers/hwmon/adt7460.h

[snip]

drivers/hwmon/adt7460.c line 8

Quoted 10 lines

+++ b/drivers/hwmon/adt7460.c

(quoted diff) +2 -0
@@ -0,0 +1,89 @@
+/*   +    (C) Copyright 2008
+    Ricado Ribalda, Universidad Autonoma de Madrid,

ricardo.ribalda<at>uam.es , ricardo.ribalda<at>gmail.com

drivers/hwmon/adt7460.c new file +5 -0
+    This work has been supported by: Q-Technology  http://qtec.com/
+
+    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 3 of the License, or

Hi Ricardo,

GPLv3 is a problem because most of u-boot is licensed at GPLv2 (possibly with an upgrade clause). The problem is, GPLv3 is not backward compatible with GPLv2 because it adds restrictions.
<http://www.fsf.org/licensing/licenses/>

If you wish to have this added to u-boot, you will need to change the licensing to GPLv2 (note that you can still keep the "any later" upgrade clause).

[snip]

drivers/hwmon/adt7460.h

Quoted 13 lines
drivers/hwmon/adt7460.h new file +2 -0
new file mode 100644
index 0000000..48666f7
@@ -0,0 +1,49 @@
+/*   +    (C) Copyright 2008
+    Ricado Ribalda, Universidad Autonoma de Madrid,

ricardo.ribalda<at>uam.es , ricardo.ribalda<at>gmail.com

drivers/hwmon/adt7460.h new file +4 -0
+    This work has been supported by: Q-Technology  http://qtec.com/    +
+    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 3 of the License, or

Ditto.

Best regards,
gvb

Signature · 2 lines
Ricardo Ribalda
http://www.eps.uam.es/~rribalda/
#24 lore raw

PATCH 1/1 -Support fot the ADT7640 Monitor chip

Hello again

I have modified the license of all the patches, and they are now located at:

     http://www.ii.uam.es/~rribalda/ml507.tgz

Waiting for more comments

Thanks for your time and comments

Quoted 74 lines · Ricardo Ribalda Delgado

Hello Jerry

I didn't know that.... I will change the license and resend the patches as soon as I get more feedback to keep the mailing list as silent as possible.

Again: Thanks

Quoted 55 lines · Jerry Van Baren
Quoted 11 lines · Ricardo Ribalda Delgado
---
 drivers/hwmon/Makefile  |    1 +
 drivers/hwmon/adt7460.c |   89
+++++++++++++++++++++++++++++++++++++++++++++++
 drivers/hwmon/adt7460.h |   49 ++++++++++++++++++++++++++
 include/dtt.h           |    2 +-
 4 files changed, 140 insertions(+), 1 deletions(-)
 create mode 100644 drivers/hwmon/adt7460.c
 create mode 100644 drivers/hwmon/adt7460.h

[snip]

drivers/hwmon/adt7460.c line 8

Quoted 10 lines

+++ b/drivers/hwmon/adt7460.c

(quoted diff) +2 -0
@@ -0,0 +1,89 @@
+/*   +    (C) Copyright 2008
+    Ricado Ribalda, Universidad Autonoma de Madrid,

ricardo.ribalda<at>uam.es , ricardo.ribalda<at>gmail.com

drivers/hwmon/adt7460.c new file +5 -0
+    This work has been supported by: Q-Technology  http://qtec.com/
+
+    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 3 of the License, or

Hi Ricardo,

GPLv3 is a problem because most of u-boot is licensed at GPLv2 (possibly with an upgrade clause). The problem is, GPLv3 is not backward compatible with GPLv2 because it adds restrictions.
<http://www.fsf.org/licensing/licenses/>

If you wish to have this added to u-boot, you will need to change the licensing to GPLv2 (note that you can still keep the "any later" upgrade clause).

[snip]

drivers/hwmon/adt7460.h

Quoted 13 lines
drivers/hwmon/adt7460.h new file +2 -0
new file mode 100644
index 0000000..48666f7
@@ -0,0 +1,49 @@
+/*   +    (C) Copyright 2008
+    Ricado Ribalda, Universidad Autonoma de Madrid,

ricardo.ribalda<at>uam.es , ricardo.ribalda<at>gmail.com

drivers/hwmon/adt7460.h new file +4 -0
+    This work has been supported by: Q-Technology  http://qtec.com/    +
+    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 3 of the License, or

Ditto.

Quoted 3 lines

Best regards,
gvb

--
Ricardo Ribalda
http://www.eps.uam.es/~rribalda/

Signature · 2 lines
Ricardo Ribalda
http://www.eps.uam.es/~rribalda/
#25 lore raw

PATCH 1/1 -Support fot the ADT7640 Monitor chip

Quoted 4 lines · In message <[email protected]> you…

I have modified the license of all the patches, and they are now located at:

     http://www.ii.uam.es/~rribalda/ml507.tgz

Waiting for more comments

There will not be any comments from me this way. Please post the pathces on the list.

Best regards,

Wolfgang Denk

Signature · 5 lines
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
"Now here's something you're really going to like!"
- Rocket J. Squirrel
#26 lore raw

PATCH 1/1 -Support fot the ADT7640 Monitor chip

In reply to Ricardo Ribalda Delgado
Quoted 16 lines · In message <[email protected]> you wrote:
---
 drivers/hwmon/Makefile  |    1 +
 drivers/hwmon/adt7460.c |   89 +++++++++++++++++++++++++++++++++++++++++++++++
 drivers/hwmon/adt7460.h |   49 ++++++++++++++++++++++++++
 include/dtt.h           |    2 +-
 4 files changed, 140 insertions(+), 1 deletions(-)
 create mode 100644 drivers/hwmon/adt7460.c
 create mode 100644 drivers/hwmon/adt7460.h
drivers/hwmon/Makefile +0 -0
index 065433a..83aa297 100644

drivers/hwmon/Makefile COBJS-y += adm1021.o · line 37

Quoted 4 lines
drivers/hwmon/Makefile +1 -0
@@ -34,6 +34,7 @@ COBJS-y += adm1021.o
 COBJS-y += ds1621.o
 COBJS-y += ds1722.o
 COBJS-y += ds1775.o
+COBJS-y += adt7460.o

Please make this

   COBJS-$(CONFIG_DTT_ADT7460) += adt7460.o

instead,

Quoted 9 lines
drivers/hwmon/Makefile +0 -0
 COBJS-$(CONFIG_DTT_LM73) += lm73.o
 COBJS-y += lm75.o
 COBJS-y += lm81.o
drivers/hwmon/adt7460.c new file +0 -0
new file mode 100644
index 0000000..255d6ed
@@ -0,0 +1,89 @@

...

Quoted 1 line

+#ifdef CONFIG_DTT_ADT7460

...and then drop this #ifdef / #endif

drivers/hwmon/adt7460.c line 36

Quoted 13 lines
drivers/hwmon/adt7460.c new file +13 -0
+#include <i2c.h>
+#include <dtt.h>
+#include "adt7460.h"
+
+#define ADT7460_ADDRESS 0x2c
+
+
+int dtt_read(int sensor, int reg)
+{
+	u8 dir=reg;
+	u8 data;
+
+	if (-1==i2c_read(ADT7460_ADDRESS,dir,1,&data,1))

Please write

	if (i2c_read(ADT7460_ADDRESS,dir,1,&data,1) == -1)

here and everywhere else.

drivers/hwmon/adt7460.c line 55

Quoted 9 lines
drivers/hwmon/adt7460.c new file +9 -0
+int dtt_write(int sensor, int reg, int val)
+{
+	u8 dir=reg;
+	u8 data=val;
+	
+	if (-1==i2c_write(ADT7460_ADDRESS,dir,1,&data,1))
+		return -1;
+
+	return 0;

Maybe this could be simplyfied as

	return i2c_write(ADT7460_ADDRESS,dir,1,&data,1);

?

drivers/hwmon/adt7460.c line 9

Quoted 4 lines
drivers/hwmon/adt7460.c new file +4 -0
+    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 3 of the License, or
+    (at your option) any later version.

Please make GPLv2 (or later).

...

include/dtt.h line 35

Quoted 8 lines
include/dtt.h +1 -1
@@ -32,7 +32,7 @@
     defined(CONFIG_DTT_DS1775) || \
     defined(CONFIG_DTT_LM81) || \
     defined(CONFIG_DTT_ADM1021) || \
-    defined(CONFIG_DTT_LM73)
+    defined(CONFIG_DTT_LM73)||defined(CONFIG_DTT_ADT7460)

Please split on separate line.

Best regards,

Wolfgang Denk

Signature · 5 lines
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
Earth -- mother of the most beautiful women in the universe.
	-- Apollo, "Who Mourns for Adonais?" stardate 3468.1
#27 lore raw

PATCH 1/1 -Support fot the ADT7640 Monitor chip

Hello

All the comments are right, I will resend it tomorrow.

Best regards and thanks

Quoted 8 lines

--
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 Earth -- mother of the most beautiful women in the universe.
-- Apollo, "Who Mourns for Adonais?" stardate 3468.1

Signature · 2 lines
Ricardo Ribalda
http://www.eps.uam.es/~rribalda/
#28 lore raw

PATCH 1/1 -Support fot the ADT7640 Monitor chip

In reply to Ricardo Ribalda Delgado

Clean coding style especially long lines, free lines and please choose only one email address.

Michal

Quoted 15 lines
---
 drivers/hwmon/Makefile  |    1 +
 drivers/hwmon/adt7460.c |   89 +++++++++++++++++++++++++++++++++++++++++++++++
 drivers/hwmon/adt7460.h |   49 ++++++++++++++++++++++++++
 include/dtt.h           |    2 +-
 4 files changed, 140 insertions(+), 1 deletions(-)
 create mode 100644 drivers/hwmon/adt7460.c
 create mode 100644 drivers/hwmon/adt7460.h
drivers/hwmon/Makefile +0 -0
index 065433a..83aa297 100644

drivers/hwmon/Makefile COBJS-y += adm1021.o · line 37

Quoted 4 lines
drivers/hwmon/Makefile +1 -0
@@ -34,6 +34,7 @@ COBJS-y += adm1021.o
 COBJS-y += ds1621.o
 COBJS-y += ds1722.o
 COBJS-y += ds1775.o
+COBJS-y += adt7460.o

look at line below to proper style.

Quoted 11 lines
drivers/hwmon/Makefile +0 -0
 COBJS-$(CONFIG_DTT_LM73) += lm73.o
 
 

COBJS-y += lm75.o
COBJS-y += lm81.o

drivers/hwmon/adt7460.c new file +0 -0
new file mode 100644
index 0000000..255d6ed

drivers/hwmon/adt7460.c line 3

Quoted 3 lines
drivers/hwmon/adt7460.c new file +3 -0
@@ -0,0 +1,89 @@
+/*   
+    (C) Copyright 2008
+    Ricado Ribalda, Universidad Autonoma de Madrid, ricardo.ribalda<at>uam.es , ricardo.ribalda<at>gmail.com

long line

Quoted 9 lines
drivers/hwmon/adt7460.c new file +9 -0
+    This work has been supported by: Q-Technology  http://qtec.com/
+
+    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 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of

drivers/hwmon/adt7460.c line 22

Quoted 10 lines
drivers/hwmon/adt7460.c new file +10 -0
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <common.h>
+
+#ifdef CONFIG_DTT_ADT7460

why is this ifdef here?

Quoted 127 lines
drivers/hwmon/adt7460.c new file +67 -0
+
+#include <i2c.h>
+#include <dtt.h>
+#include "adt7460.h"
+
+#define ADT7460_ADDRESS 0x2c
+
+
+int dtt_read(int sensor, int reg)
+{
+	u8 dir=reg;
+	u8 data;
+
+	if (-1==i2c_read(ADT7460_ADDRESS,dir,1,&data,1))
+		return -1;
+	
+	if (data==ADT7460_INVALID)
+		return -1;
+
+	return data;
+
+} 
+
+
+int dtt_write(int sensor, int reg, int val)
+{
+	u8 dir=reg;
+	u8 data=val;
+	
+	if (-1==i2c_write(ADT7460_ADDRESS,dir,1,&data,1))
+		return -1;
+
+	return 0;
+} 
+
+
+
+int dtt_init (void)
+{
+	printf("ADT7460 at I2C address 0x%2x\n",ADT7460_ADDRESS);
+	if (-1==dtt_write(0,ADT7460_CONFIG,1)){
+		printf("Error initialiting ADT7460\n");
+		return -1;
+	}
+	return 0;
+} 
+
+
+int dtt_get_temp(int sensor)
+{
+	int aux;
+	u8 table[]={ADT7460_REM1_TEMP,ADT7460_LOCAL_TEMP,ADT7460_REM2_TEMP};
+	if (sensor>2){
+		printf("DTT sensor does not exist\n");
+		return -1;
+	}
+	
+	aux=dtt_read(0,table[sensor]);
+
+	if (-1==aux){
+		printf("DTT temperature read failed\n");
+		return -1;
+
+	}
+	return aux;
+}
+#endif 
drivers/hwmon/adt7460.h new file +49 -0
new file mode 100644
index 0000000..48666f7
@@ -0,0 +1,49 @@
+/*   
+    (C) Copyright 2008
+    Ricado Ribalda, Universidad Autonoma de Madrid, ricardo.ribalda<at>uam.es , ricardo.ribalda<at>gmail.com
+    This work has been supported by: Q-Technology  http://qtec.com/    
+
+    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 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+#ifndef ADT7460
+#define ADT7460
+
+
+#define ADT7460_INVALID 128
+
+#define ADT7460_2_5V		0x20
+#define ADT7460_VCCP		0x21
+#define ADT7460_VCC		0x22
+#define ADT7460_V5		0x23
+#define ADT7460_V12		0x24
+#define ADT7460_REM1_TEMP	0x25
+#define ADT7460_LOCAL_TEMP	0x26
+#define ADT7460_REM2_TEMP	0x27
+#define ADT7460_TACH1L		0x28
+#define ADT7460_TACH1H		0x29
+#define ADT7460_TACH2L		0x2a
+#define ADT7460_TACH2H		0x2b
+#define ADT7460_TACH3L		0x2c
+#define ADT7460_TACH3H		0x2d
+#define ADT7460_TACH4L		0x2e
+#define ADT7460_TACH4H		0x2f
+#define ADT7460_TACH5L		0xa9
+#define ADT7460_TACH5H		0xaa
+#define ADT7460_TACH6L		0xab
+#define ADT7460_TACH6H		0xac
+#define ADT7460_REVISION	0x3f
+#define ADT7460_CONFIG		0x40
+
+
+#endif
include/dtt.h +0 -0
index 4e8aaad..73d7547 100644

include/dtt.h line 35

Quoted 5 lines
include/dtt.h +1 -1
@@ -32,7 +32,7 @@
     defined(CONFIG_DTT_DS1775) || \
     defined(CONFIG_DTT_LM81) || \
     defined(CONFIG_DTT_ADM1021) || \
-    defined(CONFIG_DTT_LM73)
+    defined(CONFIG_DTT_LM73)||defined(CONFIG_DTT_ADT7460)

follow the same style

Quoted 3 lines
include/dtt.h +0 -0
 #define CONFIG_DTT				/* We have a DTT */