summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeLines
...
* | FAT: Simplify get_contentsBenoît Thébaudeau2012-09-02-13/+1
| | | | | | | | | | | | | | | | One call to get_cluster can be factorized with another, so avoid duplicating code. Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com> Cc: Wolfgang Denk <wd@denx.de>
* | FAT: get_cluster: Add buffer bouncingBenoît Thébaudeau2012-09-02-12/+30
| | | | | | | | | | | | | | | | | | | | Add a buffer bouncing mechanism to get_cluster. This can be useful for misaligned applicative buffers passed through get_contents. This is required for the following patches in the case of data aligned differently relatively to buffers and clusters. Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com> Cc: Wolfgang Denk <wd@denx.de>
* | FAT: Fix redundant sector readBenoît Thébaudeau2012-09-02-26/+33
| | | | | | | | | | | | | | | | | | With the previous code, the remaining prefetched sectors were read again after each sector. With this patch, each sector is read only once, thus making the prefetch useful. Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com> Cc: Wolfgang Denk <wd@denx.de>
* | FAT: cosmetic: Remove useless assignmentBenoît Thébaudeau2012-09-02-1/+0
| | | | | | | | | | | | | | | | fatlength is not used after this assignment, so it is useless and can be removed. Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com> Cc: Wolfgang Denk <wd@denx.de>
* | FAT: get_fatent: Fix FAT boundary checkBenoît Thébaudeau2012-09-02-2/+2
| | | | | | | | | | | | | | | | startblock must be taken into account in order not to read past the end of the FAT. Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com> Cc: Wolfgang Denk <wd@denx.de>
* | FAT: cosmetic: Remove extra spacesBenoît Thébaudeau2012-09-02-23/+21
| | | | | | | | | | | | | | Remove spaces before opening parentheses in function calls. Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com> Cc: Wolfgang Denk <wd@denx.de>
* | ppc: Create a stack frame for wait_ticks()Joakim Tjernlund2012-09-02-2/+5
| | | | | | | | | | | | | | | | wait_ticks() calls get_ticks() without building a back chain which makes gdb unhappy when doing back trace. This can also cause improper memory accesses. Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
* | part_mac: dcache: allocate cacheline-aligned buffersBenoît Thébaudeau2012-09-02-34/+34
| | | | | | | | | | | | | | | | This patch forces the correct alignment for DMA operations of buffers used by part_mac.c. Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com> Cc: Wolfgang Denk <wd@denx.de>
* | mmc: Remove unused item flags in struct mmc_cmdKaspter Ju2012-09-02-29/+0
| | | | | | | | Signed-off-by: Kaspter Ju <nigh0st3018@gmail.com>
* | u-boot yaffs2: Fix compilation warningsCharles Manning2012-09-02-100/+6
| | | | | | | | | | | | Also remove yaffs_hweight and use the hweight in u-boot. Signed-off-by: Charles Manning <cdhmanning@gmail.com>
* | Merge branch 'master' of git://git.denx.de/u-boot-usbWolfgang Denk2012-09-02-168/+2236
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 'master' of git://git.denx.de/u-boot-usb: MUSB driver: Timeout is never detected as the while loop does not end usb: fix ulpi_set_vbus prototype pxa25x: Add UDC registers definitions USB: Fix strict aliasing in ohci-hcd usb: Optimize USB storage read/write ehci: Optimize qTD allocations usb_stor_BBB_transport: Do not delay when not required usb_storage: Remove EHCI constraints usb_storage: Restore non-EHCI support ehci-hcd: Boost transfer speed ehci: cosmetic: Define used constants ehci: Fail for multi-transaction interrupt transfers arm:trats: Enable g_dnl composite USB gadget with embedded DFU function on TRATS arm:trats: Support for USB UDC driver at TRATS board. dfu:cmd: Support for DFU u-boot command dfu: MMC specific routines for DFU operation dfu: DFU backend implementation dfu:usb: DFU USB function (f_dfu) support for g_dnl composite gadget dfu:usb: Support for g_dnl composite download gadget. ehci: cosmetic: Define the number of qt_buffers Signed-off-by: Wolfgang Denk <wd@denx.de>
| * | MUSB driver: Timeout is never detected as the while loop does not endMatej Frančeškin2012-09-01-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Timeout variable is decremented once more when while condition is not met. Following "if" does not detect correctly that timeout has occurred. Because of this bug the "usb start" command on AM335X-EVM board did not detect correctly that USB device was not attached. timeout = musb_cfg.timeout; while (timeout--) if (readb(&musbr->devctl) & MUSB_DEVCTL_HM) break; /* if musb core is not in host mode, then return */ if (!timeout) return -1; Signed-off-by: Matej Franceskin <Matej.Franceskin@comtrade.com> CC: Marek Vasut <matex@denx.de>?
| * | usb: fix ulpi_set_vbus prototypeLucas Stach2012-09-01-1/+1
| | | | | | | | | | | | | | | | | | | | | Match the name of the header prototype with the actual implementation. Signed-off-by: Lucas Stach <dev@lynxeye.de>
| * | pxa25x: Add UDC registers definitionsŁukasz Dałek2012-09-01-0/+159
| | | | | | | | | | | | Signed-off-by: Łukasz Dałek <luk0104@gmail.com>
| * | USB: Fix strict aliasing in ohci-hcdTroy Kisky2012-09-01-39/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | commit 5f6aa03fda2a0a79940765865c1e4266be8a75f8 USB: Fix complaints about strict aliasing in OHCI-HCD tried to fix this, but gcc4.4 still complains. So, this patch basically reverts the above and does a simpler fix. also, the above commit incorrectly changed /* corresponds to data_buf[4-7] */ datab [1] = 0; to /* corresponds to databuf.u8[4-7] */ databuf.u8[1] = 0; This patch also fixes that. Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
| * | usb: Optimize USB storage read/writeJim Shimer2012-09-01-12/+0
| | | | | | | | | | | | | | | | | | | | | Trim down the IO times by removing uneeded test unit reeady calls. Signed-off-by: Jim Shimer <mgi2475@motorola.com>
| * | ehci: Optimize qTD allocationsBenoît Thébaudeau2012-09-01-30/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Relax the qTD transfer alignment constraints in order to need less qTDs for buffers that are aligned to 512 bytes but not to pages. Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com> Cc: Marek Vasut <marex@denx.de> Cc: Ilya Yanok <ilya.yanok@cogentembedded.com> Cc: Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
| * | usb_stor_BBB_transport: Do not delay when not requiredBenoît Thébaudeau2012-09-01-2/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There is a 5-ms delay in usb_stor_BBB_transport, which occurs every 10 kiB of data for fragmented fatload usb, i.e. roughly 500 ms of delay per MiB. This adds up to quite a bit of delay if you're loading a large ramdisk. The purpose of this delay should be to debounce the 5-V/100-mA USB power up. This patch skips the delay if the device has already been queried as ready. Signed-off-by: Jim Shimer <mgi2475@motorola.com> Rework following the review: - Rebase against the latest u-boot-usb master. - Replace typedef with #define. - Use the existing flags struct field instead of adding a new field. - Remove the setter function. - Remove the typecasts. Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com> Cc: Marek Vasut <marex@denx.de> Cc: Ilya Yanok <ilya.yanok@cogentembedded.com> Cc: Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net> Cc: Jim Shimer <mgi2475@motorola.com>
| * | usb_storage: Remove EHCI constraintsBenoît Thébaudeau2012-09-01-18/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now that the EHCI driver allocates its qTDs from the heap, the MSC driver is only limited by the SCSI commands it uses. Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com> Cc: Marek Vasut <marex@denx.de> Cc: Ilya Yanok <ilya.yanok@cogentembedded.com> Cc: Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
| * | usb_storage: Restore non-EHCI supportBenoît Thébaudeau2012-09-01-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The commit 5dd95cf made the MSC driver EHCI-specific. This patch restores a basic support of non-EHCI HCDs, like before that commit. The fallback transfer size is certainly not optimal, but at least it should work like before. Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com> Cc: Marek Vasut <marex@denx.de> Cc: Ilya Yanok <ilya.yanok@cogentembedded.com> Cc: Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
| * | ehci-hcd: Boost transfer speedBenoît Thébaudeau2012-09-01-29/+138
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch takes advantage of the hardware EHCI qTD queuing mechanism to avoid software and transfer splitting overhead so as to make transfers as fast as possible. The only drawback is a call to memalign. However, this is fast compared to the transfer timings, and the heap size to allocate is small, e.g. 128 kiB in the worst case for a transfer length of 65535 packets of 512 bytes. Tested on i.MX25, i.MX35 and i.MX51. In my test conditions, the speed gain was very significant (several times faster), which is really appreciable when accessing large files. Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com> Cc: Marek Vasut <marex@denx.de> Cc: Ilya Yanok <ilya.yanok@cogentembedded.com> Cc: Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
| * | ehci: cosmetic: Define used constantsBenoît Thébaudeau2012-09-01-69/+118
| | | | | | | | | | | | | | | | | | | | | | | | | | | Make some light cosmetic code cleanup by the way. Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com> Cc: Marek Vasut <marex@denx.de> Cc: Ilya Yanok <ilya.yanok@cogentembedded.com> Cc: Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
| * | ehci: Fail for multi-transaction interrupt transfersBenoît Thébaudeau2012-09-01-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Interrupt transfers requiring several transactions are not supported by submit_int_msg() because bInterval is ignored. This patch returns a failure code and prints an error message in this case. Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com> Cc: Marek Vasut <marex@denx.de> Cc: Ilya Yanok <ilya.yanok@cogentembedded.com> Cc: Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
| * | arm:trats: Enable g_dnl composite USB gadget with embedded DFU function on TRATSLukasz Majewski2012-09-01-1/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Enable the g_dnl composite USB gadget driver with embedded DFU function on it. It now uses the composite gadget framework to support download specific USB functions (like enabled DFU or USB Mass Storage). Signed-off-by: Lukasz Majewski <l.majewski@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Cc: Marek Vasut <marex@denx.de> Cc: Minkyu Kang <mk7.kang@samsung.com>
| * | arm:trats: Support for USB UDC driver at TRATS board.Lukasz Majewski2012-09-01-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | Support for USB UDC driver at trats board. Signed-off-by: Lukasz Majewski <l.majewski@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Cc: Marek Vasut <marex@denx.de> Cc: Minkyu Kang <mk7.kang@samsung.com>
| * | dfu:cmd: Support for DFU u-boot commandLukasz Majewski2012-09-01-0/+82
| | | | | | | | | | | | | | | | | | | | | | | | Support for u-boot's command line command "dfu <interface> <dev> [list]". Signed-off-by: Lukasz Majewski <l.majewski@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Cc: Marek Vasut <marex@denx.de>
| * | dfu: MMC specific routines for DFU operationLukasz Majewski2012-09-01-0/+163
| | | | | | | | | | | | | | | | | | | | | | | | Support for MMC storage devices to work with DFU framework. Signed-off-by: Lukasz Majewski <l.majewski@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Cc: Marek Vasut <marex@denx.de>
| * | dfu: DFU backend implementationLukasz Majewski2012-09-01-0/+385
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | New, separate driver at ./drivers/dfu has been added. It allows platform and storage independent operation of DFU. It has been extended to use new MMC level of command abstraction. Signed-off-by: Lukasz Majewski <l.majewski@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Cc: Marek Vasut <marex@denx.de>
| * | dfu:usb: DFU USB function (f_dfu) support for g_dnl composite gadgetLukasz Majewski2012-09-01-0/+850
| | | | | | | | | | | | | | | | | | | | | | | | Support for f_dfu USB function. Signed-off-by: Lukasz Majewski <l.majewski@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Cc: Marek Vasut <marex@denx.de>
| * | dfu:usb: Support for g_dnl composite download gadget.Lukasz Majewski2012-09-01-0/+236
| | | | | | | | | | | | | | | | | | | | | | | | | | | Composite USB download gadget support (g_dnl) for download functions. This code works on top of composite gadget. Signed-off-by: Lukasz Majewski <l.majewski@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Cc: Marek Vasut <marex@denx.de>
| * | ehci: cosmetic: Define the number of qt_buffersBenoît Thébaudeau2012-09-01-7/+8
| |/ | | | | | | | | | | | | Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com> Cc: Marek Vasut <marex@denx.de> Cc: Ilya Yanok <ilya.yanok@cogentembedded.com> Cc: Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
* | patman: Do not Cc addresses included in To listOtavio Salvador2012-09-02-0/+7
| | | | | | | | | | | | | | | | | | | | In case an address is listed in the To list, those will be skipped on Cc list or user might end with a duplicated message. This fixes the case when a tag points to same address used as series destination thus avoiding duplicated sending. Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
* | patman: Allow for changelog use in first version of a seriesOtavio Salvador2012-09-02-3/+4
| | | | | | | | | | | | | | | | | | When a patchset had a RFC series, a v1 might have a changelog of changes done since the RFC. The patch changes the range checked for changelog and allow it to start for version 1. Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Acked-by: Simon Glass <sjg@chromium.org>
* | patman: don't mess with signoffsIlya Yanok2012-09-02-11/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently patman assumes that there should be only one Signoff line and this is obviously incorrect: we often have to work with patches containing other people signoffs. Moreover, it's really desirable to preserve the comments between signoffs. So until some sophisticated signoff processing will be developed I suggest just don't mess with signoffs at all and treat them like plain text lines. The only drawback I've found so far is the case where you have a patch with someones else signoff but not yours and also have to patman tags under signoff line. In this case you will get extra empty line between signoffs. Signed-off-by: Ilya Yanok <ilya.yanok@cogentembedded.com>
* | patman: don't mess with changelogIlya Yanok2012-09-02-3/+2
| | | | | | | | | | | | | | | | Don't try to sort and uniq changelog entries as this breaks multiline entries. It will be better to add some real multi-line support but for now just preserve the entries as is. Signed-off-by: Ilya Yanok <ilya.yanok@cogentembedded.com>
* | patman: don't pick changes while processing patchesIlya Yanok2012-09-02-1/+2
| | | | | | | | | | | | | | | | We already got all changes from git log output and the comment to the ProcessLine function clearly states that 'patch' mode is not for scanning tags. Signed-off-by: Ilya Yanok <ilya.yanok@cogentembedded.com>
* | patman: fix end of changes detectionIlya Yanok2012-09-02-0/+6
| | | | | | | | | | | | | | | | Changes may end in '---' line or Signoff line (generated by git format-patch) in case of Series-changes: lines being the last ones in commit message. So detect it properly. Signed-off-by: Ilya Yanok <ilya.yanok@cogentembedded.com>
* | pci: add CONFIG_PCI_ENUM_ONLY for platforms that don't need PCI setup doneAndrew Sharp2012-09-02-10/+32
| | | | | | | | | | | | | | | | | | | | | | Introduce CONFIG_PCI_ENUM_ONLY variable for platforms that just want a quick enumberation of the PCI devices, but don't need any setup work done. This is very beneficial on platforms that have u-boot loaded by another boot loader which does a more sophisticated job of setup of PCI devices than u-boot. That way, u-boot can just read what's there and get on with life. This is what SeaBIOS does. Signed-off-by: Andrew Sharp <andywyse6@gmail.com>
* | pci: update pci_ids.h with a few new entriesAndrew Sharp2012-09-02-0/+16
| | | | | | | | | | | | | | Add some recent entries to pci_ids.h for Intel and AMD/ATI devices that are somewhat relevant to u-boot. Signed-off-by: Andrew Sharp <andywyse6@gmail.com>
* | pci: minor cleanup of CONFIG_PCI_PNP usageAndrew Sharp2012-09-02-6/+6
| | | | | | | | | | | | | | | | | | Refactor the common PCI code just a tiny bit surrounding the PCI_PNP (pciauto) stuff. Makes the code a tiny bit easier to read, and also makes it more obvious that almost no platform needs to setup or use the pci_config_table stuff. Signed-off-by: Andrew Sharp <andywyse6@gmail.com>
* | pci: clean up some whitespace and formattingAndrew Sharp2012-09-02-70/+91
| | | | | | | | | | | | | | | | | | | | | | I tried to clean up the white space and formatting offenses and inconsistencies in the generic PCI code that obviously has been around for some time. Emphasis on large increases in readability and maintainability and consistency. I omitted the platform/processor specific files in the drivers/pci directory because I wanted to leave those file to those that care more about them. Signed-off-by: Andrew Sharp <andywyse6@gmail.com>
* | pci: fix errant data types and corresponding access functionsAndrew Sharp2012-09-02-10/+12
| | | | | | | | | | | | | | | | In a couple of places, unsigned int and pci_config_*_dword were being used when u16 and _word should be used. Unsigned int was also being used in a couple of places that should be pci_addr_t. Signed-off-by: Andrew Sharp <andywyse6@gmail.com>
* | Merge branch 'agust@denx.de' of git://git.denx.de/u-boot-stagingWolfgang Denk2012-09-02-6/+8
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 'agust@denx.de' of git://git.denx.de/u-boot-staging: tx25: Use generic gpio_* calls config: Always use GNU ld tools: add kwboot binary to .gitignore file fdt: Include arch specific gpio.h instead of asm-generic/gpio.h serial: CONSOLE macro is not used Conflicts: board/karo/tx25/tx25.c Signed-off-by: Wolfgang Denk <wd@denx.de>
| * | tx25: Use generic gpio_* callsVikram Narayanan2012-08-11-16/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of manipulating gpio registers directly, use the calls from the gpio library. Signed-off-by: Vikram Narayanan <vikram186@gmail.com> Acked-by: Stefano Babic <sbabic@denx.de> Cc: John Rigby <jcrigby@gmail.com> Cc: Fabio Estevam <fabio.estevam@freescale.com> Acked-by: Fabio Estevam <fabio.estevam@freescale.com> Acked-by: Stefano Babic <sbabic@denx.de>
| * | config: Always use GNU ldKhem Raj2012-08-10-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch makes sure that we always use the GNU ld. U-Boot uses certain construct e.g. OVERLAY which are not implemented in gold therefore it always needs GNU ld for linking. It works well if default linker in toolchain is GNU ld but in some cases we can have gold to be the default linker and also ship GNU ld but not as default in such cases its called $(PREFIX)ld.bfd, with this patch we make sure that if $(PREFIX)ld.bfd exists than we use that for our ld. This way it does not matter what the default ld is. Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Signed-off-by: Khem Raj <raj.khem@gmail.com> Acked-by: Mike Frysinger <vapier@gentoo.org>
| * | tools: add kwboot binary to .gitignore fileLuka Perkov2012-08-10-0/+1
| | | | | | | | | | | | | | | | | | Signed-off-by: Luka Perkov <uboot@lukaperkov.net> Acked-by: Prafulla Wadaskar <Prafulla@marvell.com> Acked-by: Mike Frysinger <vapier@gentoo.org>
| * | fdt: Include arch specific gpio.h instead of asm-generic/gpio.hMichal Simek2012-08-10-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Include arch specific gpio.h instead of asm-generic/gpio.h because several architectures (Microblaze, Blackfin, Nios2, OpenRISC) define gpio functions in header file. asm-generic/gpio.h can be included in arch specific gpio.h (For example: ARM) Signed-off-by: Michal Simek <monstr@monstr.eu> CC: Simon Glass <sjg@chromium.org> Acked-by: Mike Frysinger <vapier@gentoo.org> Acked-by: Simon Glass <sjg@chromium.org>
| * | serial: CONSOLE macro is not usedMichal Simek2012-08-10-3/+0
| | | | | | | | | | | | | | | Signed-off-by: Michal Simek <monstr@monstr.eu> Acked-by: Mike Frysinger <vapier@gentoo.org>
* | | at91: 9x5: Enable PMECC for 5series ek board.Wu, Josh2012-09-01-0/+7
| | | | | | | | | | | | | | | Signed-off-by: Josh Wu <josh.wu@atmel.com> Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com>
* | | at91: 9x5: change SMC config timing that both works for PMECC & non-PMECC.Wu, Josh2012-09-01-6/+6
| | | | | | | | | | | | | | | | | | Signed-off-by: Josh Wu <josh.wu@atmel.com> Tested-by: voice.shen@atmel.com Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com>