summaryrefslogtreecommitdiff
path: root/common
Commit message (Collapse)AuthorAgeLines
* usb_storage: constify us_direction lookup tableMike Frysinger2010-10-22-1/+1
| | | | Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* always relocate fdt into an lmb-allocated memory blockTimur Tabi2010-10-20-55/+28
| | | | | | | | | | | | | | | | | | | | | The device tree (fdt) must always exist in within the bootmap (usually the first 16MB of RAM). If it doesn't, then boot_relocate_fdt() will allocate an LMB region in the bootmap and copy the fdt into that region. It will also increase the size of the fdt. If the fdt is already in the bootmap, then previously the memory was just reserved. There was no contingency if the reservation failed, however. By always allocating an lmb region and copying/resizing the fdt into that region, the code is simplified and the memory region is always allocated properly. Also change the types of some variables to avoid some typecasts. Signed-off-by: Timur Tabi <timur@freescale.com> Tested-by: Ira Snyder <iws@ovro.caltech.edu> Acked-by: Gerald Van Baren <vanbaren@cideas.com> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
* common/fdt_support.c: Fix compile warningsWolfgang Denk2010-10-20-1/+0
| | | | | | | | | | | | | | Commit a6bd9e8 "FDT: Add fixup support for multiple banks of memory" removed code but forgot to remove the variables used by it, resulting in warnings: fdt_support.c: In function 'fdt_fixup_memory_banks': fdt_support.c:399: warning: unused variable 'sizecell' fdt_support.c:399: warning: unused variable 'addrcell' Remove the declarations, too. Signed-off-by: Wolfgang Denk <wd@denx.de>
* Merge branch 'master' of git://git.denx.de/u-boot-armWolfgang Denk2010-10-20-52/+58
|\
| * common: Enable serial for PXA250Marek Vasut2010-10-19-1/+1
| | | | | | | | Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
| * boot: change some arch ifdefs to feature ifdefsJohn Rigby2010-10-18-6/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The routines boot_ramdisk_high, boot_get_cmdline and boot_get_kbd are currently enabled by various combinations of CONFIG_M68K, CONFIG_POWERPC and CONFIG_SPARC. Use CONFIG_SYS_BOOT_<FEATURE> defines instead. CONFIG_SYS_BOOT_RAMDISK_HIGH CONFIG_SYS_BOOT_GET_CMDLINE CONFIG_SYS_BOOT_GET_KBD Define these as appropriate in arch/include/asm/config.h files. Signed-off-by: John Rigby <john.rigby@linaro.org> Acked-by: Wolfgang Denk <wd@denx.de>
| * FDT: only call boot_get_fdt from generic codeJohn Rigby2010-10-18-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | All arches except nios2 and microblaze call boot_get_fdt from bootm_start in common/cmd_bootm.c. Having nios2 and microblaze do so as well removes code from their respective do_bootm_linux routines and allows removal of a nasty ifdef from bootm_start. In the case where boot_get_fdt returns an error bootm_start returns and the platform specific do_bootm_linux routines will never get called. Also only check argv[3] for an fdt addr if argc > 3 first. This is already the case for nios2. Signed-off-by: John Rigby <john.rigby@linaro.org> CC: Scott McNutt <smcnutt@psyent.com> CC: Michal Simek <monstr@monstr.eu> CC: Thomas Chou <thomas@wytron.com.tw> Acked-by: Wolfgang Denk <wd@denx.de> Acked-by: Michal Simek <monstr@monstr.eu> Tested-by: Thomas Chou <thomas@wytron.com.tw>
| * FDT: Add fixup support for multiple banks of memoryJohn Rigby2010-10-18-40/+46
| | | | | | | | | | | | | | | | | | | | Add fdt_fixup_memory_banks and reimplement fdt_fixup_memory using it. Tested on OMAP3 beagle board with two banks of memory. Signed-off-by: John Rigby <john.rigby@linaro.org> CC: Jerry Van Baren <vanbaren@cideas.com> Acked-by: Gerald Van Baren <vanbaren@cideas.com>
| * common/image.c remove extra calls to be32_to_cpu in boot_get_fdtJohn Rigby2010-10-18-2/+2
| | | | | | | | | | | | | | | | fdt_totalsize returns size in cpu endian so don't call be32_to_cpu on the result. This was harmless on big endian platforms but not on little endian ARMs. Signed-off-by: John Rigby <john.rigby@linaro.org>
| * common/image.c fix length calculation in boot_relocate_fdtJohn Rigby2010-10-18-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | boot_relocate_fdt is called on platforms with CONFIG_SYS_BOOTMAPSZ defined to relocate the device tree blob to be inside the boot map area between bootmap_base and bootmap_base+CONFIG_SYS_BOOTMAPSZ. For the case where the blob needs to be relocated, space is allocated inside the bootmap by calling lmb_alloc_base with size passed in plus some padding: of_len = *of_size + CONFIG_SYS_FDT_PAD; For the case where the blob is already inside the bounds of the boot map area, lmb_reserve is called to reserve the the space where the blob is already residing. The calculation for this case is currently: of_len = (CONFIG_SYS_BOOTMAPSZ + bootmap_base) - (ulong)fdt_blob; This is wrong because it reserves all the space in the boot map area from the blob to the end ignoring completely the actual size. The worst case is where the blob is at the beginning and the entire boot map area get reserved. Fix this by changing the length calculation to this: of_len = *of_size + CONFIG_SYS_FDT_PAD; This bug has likely never manifested itself because bootm has never been called with the fdt blob already in the bootmap area. In my testing on an OMAP3 beagle board I initially worked around the bug by simply moving the initial location of the fdt blob. I have tested with the new calculation with the fdt blob both inside and outside the boot map area. Signed-off-by: John Rigby <john.rigby@linaro.org>
* | cmd_fpga: cleanup help and check parametersStefano Babic2010-10-19-11/+39
|/ | | | | | | | The usage and help for the fpga command is wrong and incomplete, and the parameters are not checked before to be passed to the underlying subfunction. Signed-off-by: Stefano Babic <sbabic@denx.de>
* dlmalloc.c: Fix gcc alias warningJoakim Tjernlund2010-10-18-1/+1
| | | | | | | | | | | | | | Fix these warnings: dlmalloc.c: In function 'free': dlmalloc.c:2507: warning: dereferencing pointer '({anonymous})' does break strict-aliasing rules dlmalloc.c:2507: warning: dereferencing pointer '({anonymous})' does break strict-aliasing rules dlmalloc.c:2507: warning: dereferencing pointer '({anonymous})' does break strict-aliasing rules Some page(http://blog.worldofcoding.com/2010/02/solving-gcc-44-strict-aliasing-problems.html) suggests adding __attribute__((__may_alias__)). Doing so makes the warnings go away. Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se> Acked-by: Mike Frysinger <vapier@gentoo.org>
* Fix warning in nand unlock commandScott Wood2010-10-18-1/+1
| | | | | | | | | Commit ea533c260a801c4e51f92f75165cebe6d7b01e35 changed arg_off_size to take a pointer to a device index, rather than to the device itself. When updating callers, the nand unlock code was missed. Signed-off-by: Scott Wood <scottwood@freescale.com>
* Merge branch 'master' of git://git.denx.de/u-boot-armWolfgang Denk2010-10-17-7/+10
|\
| * env_mmc: Fix crashing bug encountered after enabling ARM relocationSteve Sakoman2010-10-13-7/+10
| | | | | | | | | | | | | | | | | | | | | | The crash was occuring in env_relocate because it was being called prior to mmc_initialize. This patch moves the MMC initialization earlier in the init process. This patch also cleans up the env_relocate_spec code in env_mmc.c Signed-off-by: Steve Sakoman <steve.sakoman@linaro.org> Acked-by: Stefano Babic <sbabic@denx.de>
* | env_mmc: fix cannot save env issueLei Wen2010-10-13-1/+12
|/ | | | | | | | | | | | | | The env change its implementation after this log, while env mmc didn't change it immediately, which cause issue. Follow to the new style to fix it. commit ea882baf9c17cd142c99e3ff640d3ab01daa5cec Author: Wolfgang Denk <wd@denx.de> Date: Sun Jun 20 23:33:59 2010 +0200 New implementation for internal handling of environment variables. Signed-off-by: Lei Wen <leiwen@marvell.com>
* Merge branch 'master' of git://git.denx.de/u-boot-usbWolfgang Denk2010-10-13-4/+35
|\
| * usb: Add support for multiple-LUN mass storage devicesLudovic Courtès2010-10-13-4/+35
| | | | | | | | | | | | | | | | | | | | | | | | This patch changes `usb_stor_scan' to scan all the LUNs of each mass storage device. It also fixes the various commands to correctly set the LUN field. Notably, it allows each LUN of GuruPlug's microSD card reader to be accessed. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Acked-by: Prafulla Wadaskar <prafulla@marvell.com>
* | common/fdt_support.c: fix compile errorMatthew McClintock2010-10-13-10/+10
|/ | | | | | | | | | | Fix build error introduced in beca5a5f5bf0d88125580e5e9c1730469cd50ab8 common/libcommon.a(fdt_support.o): In function `fdt_add_edid': /local/hudson/jobs/mirrors-u-boot.git/workspace/common/fdt_support.c:1205: undefined reference to `fdt_increase_size' make: *** [u-boot] Error 1 Signed-off-by: Matthew McClintock <msm@freescale.com> Signed-off-by: Anatolij Gustschin <agust@denx.de>
* TSI148: Fix argument parsingBrent Darley2010-10-12-2/+2
| | | | | | | | | | | | | | This patch does 2 things: - Fix the argument number assigned to the vdw (VME data width) value. Previously, a nonexistent 7th arument was read as the vdw variable. - Reduce the size of the argument array for the tsi148 command from 8 to 7. The tsi148 command itself is argument index 0, and the maximum number arguments passed to the command is 6, making a total of 7 for the array. Signed-off-by: Brent Darley <bdarley@xes-inc.com> Signed-off-by: Peter Tyser <ptyser@xes-inc.com>
* cp/cmp: Add WATCHDOG_RESET in copy and compare loopStefan Roese2010-10-12-0/+8
| | | | | | | | | | | On some boards with a very short watchdog timeout, the "cp" and "cmp" commands may reset the board. This patch adds some watchdog resets inside the loops. Otherwise for example the lwmon5 board will reset while doing something like this: => cp.b fc000000 1000000 100000 Signed-off-by: Stefan Roese <sr@denx.de>
* led_display: split led display support into generic and hw-dependent partsIlya Yanok2010-10-12-17/+9
| | | | | | | | | | | Split the display command into generic interface and hardware-specific realization for PDSP188x LED display found on hmi1001 and manroland boards. Simple interface for LED displays is defined in include/led-display.h and described in doc/README.LED_display. Driver-specific implementation was moved into drivers/misc/pdsp188x.c file (enabled with CONFIG_PDSP188x set). Signed-off-by: Ilya Yanok <yanok@emcraft.com>
* env: don't set to default env twice when use CONFIG_ENV_IS_NOWHERELei Wen2010-10-12-1/+1
| | | | | | | | | | | When use the CONFIG_ENV_IS_NOWHERE, I met such issue: DRAM: 256 MiB Using default environment *** Warning - bad CRC, using default environment Signed-off-by: Lei Wen <leiwen@marvell.com>
* fdt_support: support adding EDID property to FDT display nodesAnatolij Gustschin2010-10-12-0/+29
| | | | | | | | | | | | | | | | | Boards can pass display timing info for drivers using EDID block. Provide common function to add board specific EDID data to the device tree. Subsequent patch makes use of this functionality. Detailed timing descriptor data from EDID is used for programming the display controller. This is currently implemented on the Linux side by the fsl-diu-fb frame buffer driver and it is documented there in Documentation/powerpc/dts-bindings/fsl/diu.txt. Signed-off-by: Anatolij Gustschin <agust@denx.de> Acked-by: Detlev Zundel <dzu@denx.de> Cc: Gerald Van Baren <vanbaren@cideas.com>
* CONFIG_CMD_JFFS2 is not necessary to use mtdparts on erase & protect on/offAlexander Stein2010-10-12-6/+6
| | | | | | | The include <jffs2/jffs2.h> is still necessary though. Signed-off-by: Alexander Stein <alexander.stein@systec-electronic.com> Acked-by: Stefan Roese <sr@denx.de>
* Merge branch 'master' of git://git.denx.de/u-boot-netWolfgang Denk2010-10-12-0/+2
|\
| * rarp: Condtionally compile rarp supportPeter Tyser2010-10-11-0/+2
| | | | | | | | | | | | | | | | Most people don't use the 'rarpboot' command, so only enable it when CONFIG_CMD_RARP is defined. Signed-off-by: Peter Tyser <ptyser@xes-inc.com> Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
* | Followup fixes on the mtdparts spread patchsetScott Wood2010-10-11-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | Consolidate some code in mtd_get_len_incl_bad(), and fix a condition where a valid partition could be reported as truncated if it has a good block at the end of the device (unlikely, since the BBT is usually there). Fix mid-block declarations in net_part_size(). Signed-off-by: Scott Wood <scottwood@freescale.com> Reviewed-by: Ben Gardiner <bengardiner@nanometrics.ca>
* | mtdparts: new add.spread: add part skipping bad blocksBen Gardiner2010-10-11-8/+26
| | | | | | | | | | | | | | | | | | | | | | This patch adds a new 'mtdparts add' variant: add.spread. This command variant adds a new partition to the mtdparts variable but also increases the partitions size by skipping bad blocks and aggregating any additional bad blocks found at the end of the partition. Signed-off-by: Ben Gardiner <bengardiner@nanometrics.ca> CC: Wolfgang Denk <wd@denx.de> CC: Scott Wood <scottwood@freescale.com>
* | mtdparts: add new sub-command "spread"Ben Gardiner2010-10-11-1/+112
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch introduces the 'spread' sub-command of the mtdparts command. This command will modify the existing mtdparts variable by increasing the size of the partitions such that 1) each partition's net size is at least as large as the size specified in the mtdparts variable and 2) each partition starts on a good block. The new subcommand is implemented by iterating over the mtd device partitions and collecting a bad blocks count in each -- including any trailing bad blocks -- and then modifying that partitions's part_info structure and checking if the modification affects the next partition. This patch is based on a port of the 'dynnamic partitions' feature by Harald Welte <laforge@gnumonks.org>; ported from commit e05835df019027391f58f9d8ce5e1257d6924798 of git://git.openmoko.org/u-boot.git. Whereas Harald's feature used a compile-time array to specify partitions, the feature introduced by this patch uses the mtdparts environment variable. Signed-off-by: Ben Gardiner <bengardiner@nanometrics.ca> Signed-off-by: Harald Welte <laforge@gnumonks.org> CC: Wolfgang Denk <wd@denx.de> CC: Scott Wood <scottwood@freescale.com>
* | mtdparts: show net size in mtdparts listBen Gardiner2010-10-11-7/+61
| | | | | | | | | | | | | | | | | | | | This patch adds an additional column to the output of list_partitions. The additional column will contain the net size and a '(!)' beside it if the net size is not equal to the partition size. Signed-off-by: Ben Gardiner <bengardiner@nanometrics.ca> CC: Wolfgang Denk <wd@denx.de> CC: Scott Wood <scottwood@freescale.com>
* | mtdparts: regroup calls to get_mtd_device_nmBen Gardiner2010-10-11-15/+30
| | | | | | | | | | | | | | | | | | | | | | | | The get_mtd_device_nm function is called in a couple places and the string that is passed to it is not really used after the calls. This patch regroups the calls to this function into a new function, get_mtd_info. Signed-off-by: Ben Gardiner <bengardiner@nanometrics.ca> Acked-by: Stefan Roese <sr@denx.de> CC: Wolfgang Denk <wd@denx.de>
* | nand commands: make only "dump" repeatable.Scott Wood2010-10-11-8/+13
| | | | | | | | | | | | | | | | | | The dump command is made to increment its address on repeat, as md does. Other commands do not make sense to issue repeatedly, and can be irritating when it happens accidentally, so don't. Signed-off-by: Scott Wood <scottwood@freescale.com> Tested-by: Ben Gardiner <bengardiner@nanometrics.ca>
* | nand erase: .spread, .part, .chip subcommandsScott Wood2010-10-11-6/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A while back, in http://lists.denx.de/pipermail/u-boot/2009-June/054428.html, Michele De Candia posted a patch to not count bad blocks toward the requested size to be erased. This is desireable when you're passing in something like $filesize, but not when you're trying to erase a partition. Thus, a .spread subcommand (named for consistency with http://lists.denx.de/pipermail/u-boot/2010-August/075163.html) is introduced to make explicit the user's desire to erase for a given amount of data, rather than to erase a specific region of the chip. While passing $filesize to "nand erase" is useful, accidentally passing something like $fliesize currently produces quite unpleasant results, as the variable evaluates to nothing and U-Boot assumes that you want to erase the entire rest of the chip/partition. To improve the safety of the erase command, require the user to make explicit their intentions by using a .part or .chip subcommand. This is an incompatible user interface change, but keeping compatibility would eliminate the safety gain, and IMHO it's worth it. While touching nand_erase_opts(), make it accept 64-bit offsets and sizes, fix the percentage display when erase length is rounded up, eliminate an inconsistent warning about rounding up the erase length which only happened when the length was less than one block (rounding up for $filesize is normal operation), and add a diagnostic if there's an attempt to erase beginning at a non-block boundary. Signed-off-by: Scott Wood <scottwood@freescale.com> Tested-by: Ben Gardiner <bengardiner@nanometrics.ca>
* | cmd_nand: some infrastructure fixes and refactoringScott Wood2010-10-11-107/+167
|/ | | | | | | | | | | | | | | | - If the current device is overridden by a named partition, - update the caller's pointer/index, rather than copy over the nand_info struct, and - be sure to call board_nand_select_device even when the device is overridden by a named partition. - Support 64-bit offsets/sizes in a few more places. - Refactor arg_off_size for added readability and flexibility, and some added checks such as partition size. - Remove redundant check for bad subcommands -- if there's no match it'll print usage when it gets to the end anyway. Signed-off-by: Scott Wood <scottwood@freescale.com> Tested-by: Ben Gardiner <bengardiner@nanometrics.ca>
* Merge branch 'master' of git://git.denx.de/u-boot-x86Wolfgang Denk2010-10-11-1/+0
|\
| * x86: Remove bi_env from do_bdinfoGraeme Russ2010-10-07-1/+0
| | | | | | | | | | Commit 55e97429d1e6cf0976711e4e0f29ea924b7e5917 removed the definition from /arch/i386/include/asm/u-boot.h but not its usage in do_bdinfo()
* | Merge branch 'sf' of git://git.denx.de/u-boot-blackfinWolfgang Denk2010-10-11-15/+25
|\ \
| * | sspi: add options to specify bus and modeReinhard Meyer2010-10-06-15/+25
| |/ | | | | | | | | | | | | | | and clean up error messages and help, removed pointless debug() call. Signed-off-by: Reinhard Meyer <u-boot@emk-elektronik.de> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* | Replace MAX_CMDBUF_SIZE references with CONFIG_SYS_CBSIZEPeter Tyser2010-10-06-5/+2
| | | | | | | | | | | | | | The MAX_CMDBUF_SIZE define is unneeded as it should always equal CONFIG_SYS_CBSIZE. Signed-off-by: Peter Tyser <ptyser@xes-inc.com>
* | cmd_elf: add an option for loading ELFs according to PHDRsMike Frysinger2010-10-06-9/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The current ELF loading function does a lot of work above and beyond a simple "loading". It ignores the real load addresses and loads things into their virtual (runtime) address. This is undesirable when we just want it to load an ELF and let the ELF do the actual C runtime init. So add a command line option to let people choose to load via either the program or section headers. I'd prefer to have program header loading be the default, but this would break historical behavior, so I'll leave section header loading as the norm. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* | serial.c: Fix build breakage introduced with commit e3c78c9bStefan Roese2010-10-06-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch fixes the compilation problem introduced with commit e3c78c9b [ppc4xx: Remove now unused CONFIG_UART1_CONSOLE]: -> ./MAKEALL TB5200 Configuring for TB5200 board... serial.c: In function '__default_serial_console': serial.c:94: warning: no return statement in function returning non-void I accidentally removed an "#else" line. This patch adds it back. Signed-off-by: Stefan Roese <sr@denx.de>
* | env: fix cmd_env_sub fct pointers if CONFIG_RELOC_FIXUP_WORKS is not definedHeiko Schocher2010-10-06-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | commit ea882baf9c17cd142c99e3ff640d3ab01daa5cec introduces a command_sub_table for the "env" command. On arm, avr32, m68k, mips and sparc architectures, relocation needs manual fixups, so add these fixups for this sub command table too. Tested on arm/qong board. mips board (Ben NanoNote) from Xiangfu Liu arm/AT91 board from Reinhard Meyer Signed-off-by: Heiko Schocher <hs@denx.de> cc: Wolfgang Denk <wd@denx.de> cc: Shinya Kuribayashi <skuribay@ruby.dti.ne.jp> cc: Xiangfu Liu <xiangfu@openmobilefree.net> cc: Reinhard Meyer <u-boot@emk-elektronik.de> cc: sshtylyov@mvista.com
* | env_mmc: Fix broken build due to set_default_env() changeSteve Sakoman2010-10-06-2/+1
|/ | | | | | | | Previously the function was set_default_env(void), it is now set_default_env(const char *s). This patch adds the required parameter. This fixes a broken build on OMAP4430 SDP. Signed-off-by: Steve Sakoman <steve.sakoman@linaro.org>
* Merge branch 'master' of git://git.denx.de/u-boot-blackfinWolfgang Denk2010-10-05-6/+7
|\
| * Blackfin: otp: fix build after constification of args[]Mike Frysinger2010-10-02-6/+7
| | | | | | | | | | | | | | | | The OTP code does a little shuffling of arguments that aren't really necessary, so use a local variable instead to fix build errors now that the args[] parameter is const. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* | ppc4xx/fdt/flash: Fix bug in fdt_fixup_nor_flash_node()Stefan Roese2010-10-04-7/+10
|/ | | | | | | | | | | | This patch fixes a bug in fdt_fixup_nor_flash_node() when the reg property has multiple reg tuples, like: reg = <0 0x00000000 0x04000000 0 0x04000000 0x04000000>; In this case this function did not update the reg property correctly. Signed-off-by: Stefan Roese <sr@denx.de>
* Merge branch 'next' of /home/wd/git/u-boot/nextWolfgang Denk2010-09-28-725/+1181
|\ | | | | | | | | | | | | Conflicts: include/ppc4xx.h Signed-off-by: Wolfgang Denk <wd@denx.de>
| * Add support for operating system OSETorkel Lundgren2010-09-28-0/+40
| | | | | | | | | | | | Add OSE as operating system for mkimage and bootm. Signed-off-by: Torkel Lundgren <torkel.lundgren@enea.com>
| * Remove unused CONFIG_SERIAL_SOFTWARE_FIFO featureStefan Roese2010-09-23-8/+0
| | | | | | | | | | | | | | | | | | This patch removes the completely unused CONFIG_SERIAL_SOFTWARE_FIFO feature from U-Boot. It has only been implemented for PPC4xx and was not used at all. So let's remove it and make the code smaller and cleaner. Signed-off-by: Stefan Roese <sr@denx.de> Acked-by: Detlev Zundel <dzu@denx.de>