Support for the ML507 Xilinx Board
Subsystems (3)
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.
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
@@ -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
@@ -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
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
@@ -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]
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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
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
@@ -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
@@ -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
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 LeibovitchPATCH 1/1 Adds support for Xilinx Uart Lite on ppc4xx
Hello again
This files already exist on the u-boot tree. They are located ininclude/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/
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-microblazeandinclude/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.
PATCH 1/1 Adds support for Xilinx Uart Lite on ppc4xx
In reply to Ricardo Ribalda DelgadoHi Wolfgang and Ricardo,
Quoted 6 lines
Hello again
This files already exist on the u-boot tree. They are located in
include/asm-microblazeandinclude/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
PATCH 1/1 Adds support for Xilinx Uart Lite on ppc4xx
In reply to Ricardo Ribalda Delgado100% NACK.
Quoted 681 lines
Signed-off-by Ricardo Ribalda Delgado <[email protected]>--- 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.hinclude/asm-ppc/arch-ppc4xx/xbasic_types.h new file +301
-0@@ -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@@ -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@@ -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@@ -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>
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
Signed-off-by Ricardo Ribalda Delgado <[email protected]>--- 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.
PATCH 1/1 Adds support for the PPC440x5 Processor on Virtex5 FX
In reply to Ricardo Ribalda Delgadocpu/ppc4xx/4xx_enet.c line 100
Quoted 11 lines · In message <[email protected]> you wrote:
cpu/ppc4xx/4xx_enet.c +1
-1@@ -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@@ -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
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
-1if (!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!
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@@ -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@@ -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
-0cpu/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,0Why 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
-1if (!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/
PATCH 1/1 I2C Dummy Driver
In reply to Ricardo Ribalda DelgadoQuoted 25 lines · Ricardo Ribalda Delgado
Signed-off-by Ricardo Ribalda Delgado <[email protected]>--- drivers/i2c/Makefile | 1 + drivers/i2c/dummy_i2c.c | 84 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+), 0 deletions(-) create mode 100644 drivers/i2c/dummy_i2c.cdrivers/i2c/Makefile +1
-0@@ -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
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
PATCH 1/1 I2C Dummy Driver
In reply to Ricardo Ribalda DelgadoQuoted 2 lines · In message <[email protected]> you wrote:
Signed-off-by Ricardo Ribalda Delgado <[email protected]>
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@@ -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"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/
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"
PATCH 1/1 I2C Dummy Driver
In reply to Wolfgang DenkQuoted 9 lines · Wolfgang Denk
Quoted 2 lines · In message <[email protected]> you wrote:
Signed-off-by Ricardo Ribalda Delgado <[email protected]>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@@ -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
PATCH 1/1 I2C Dummy Driver
In reply to Ricardo Ribalda DelgadoClean coding style. http://www.denx.de/wiki/UBoot/CodingStyle
Quoted 109 lines
Signed-off-by Ricardo Ribalda Delgado <[email protected]>--- drivers/i2c/Makefile | 1 + drivers/i2c/dummy_i2c.c | 84 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+), 0 deletions(-) create mode 100644 drivers/i2c/dummy_i2c.cdrivers/i2c/Makefile +1
-0@@ -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@@ -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 +
PATCH 1/1 -Support fot the ADT7640 Monitor chip
In reply to Ricardo Ribalda DelgadoQuoted 9 lines · Ricardo Ribalda Delgado
Signed-off-by Ricardo Ribalda Delgado <[email protected]>--- 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.cdrivers/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
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
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
Signed-off-by Ricardo Ribalda Delgado <[email protected]>--- 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, orHi 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@@ -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, orDitto.
Best regards,
gvb
Signature · 2 lines
Ricardo Ribalda http://www.eps.uam.es/~rribalda/
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
Signed-off-by Ricardo Ribalda Delgado <[email protected]>--- 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, orHi 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@@ -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, orDitto.
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/
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.tgzWaiting 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
PATCH 1/1 -Support fot the ADT7640 Monitor chip
In reply to Ricardo Ribalda DelgadoQuoted 16 lines · In message <[email protected]> you wrote:
Signed-off-by Ricardo Ribalda Delgado <[email protected]>--- 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.hdrivers/hwmon/Makefile +0
-0
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
-0COBJS-$(CONFIG_DTT_LM73) += lm73.o COBJS-y += lm75.o COBJS-y += lm81.odrivers/hwmon/adt7460.c new file +0
-0@@ -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
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/
PATCH 1/1 -Support fot the ADT7640 Monitor chip
In reply to Ricardo Ribalda DelgadoClean coding style especially long lines, free lines and please choose only one email address.
Michal
Quoted 15 lines
Signed-off-by Ricardo Ribalda Delgado <[email protected]>--- 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.hdrivers/hwmon/Makefile +0
-0
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
-0COBJS-$(CONFIG_DTT_LM73) += lm73.oCOBJS-y += lm75.o
COBJS-y += lm81.odrivers/hwmon/adt7460.c new file +0
-0
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@@ -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
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 */