summaryrefslogtreecommitdiff
path: root/drivers
Commit message (Collapse)AuthorAgeLines
* net: designware: Program MAC address to hardware after soft resetBin Meng2015-07-08-0/+6
| | | | | | | | | | commit f566c99 "net: Update hardware MAC address if it changes in env" removes writing MAC address to designware controller after soft reset. This makes designware ethernet port fail to work. Actually the MAC address should always be programmed after soft reset. Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Acked-by: Joe Hershberger <joe.hershberger@ni.com>
* Merge branch 'master' of git://git.denx.de/u-boot-armTom Rini2015-07-07-20/+35
|\
| * arm: dcc: Add uart dcc support for armv8Siva Durga Prasad Paladugu2015-07-07-0/+16
| | | | | | | | | | | | | | | | Added UART DCC support for armv8 Signed-off-by: Siva Durga Prasad Paladugu <sivadur@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com> Reviewed-by: Tom Rini <trini@konsulko.com>
| * Merge branch 'u-boot/master' into 'u-boot-arm/master'Albert ARIBAUD2015-07-07-797/+2019
| |\
| * | gpio: lpc32xx: Use priv_data instead of platdataAxel Lin2015-07-07-20/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | The LPC32XX GPIO driver platdata currently contains GPIO state information, which should go into priv_data. Thus rename lpc32xx_gpio_platdata to lpc32xx_gpio_priv and convert to use dev_get_priv() instead. Signed-off-by: Axel Lin <axel.lin@ingics.com> Tested-by: Albert ARIBAUD <albert.aribaud@3adev.fr>
* | | spi: cf_qspi: fix clamp macro type check compilation warningsAngelo Dureghello2015-07-01-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | Fix compilation warnings for redefined 'clamp' macro and non-uniform clamp macro types. Signed-off-by: Angelo Dureghello <angelo@sysam.it> Reviewed-by: Jagannadh Teki <jteki@openedev.com>
* | | sf: Kconfig: Add SPI_FLASH_BAR entryJagan Teki2015-07-01-0/+8
| | | | | | | | | | | | | | | | | | Added SPI_FLASH_BAR entry on Kconfig with help description Signed-off-by: Jagan Teki <jteki@openedev.com>
* | | spi: Kconfig: Add TEGRA20_SLINK entryJagan Teki2015-07-01-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | Added TEGRA20_SLINK entry on Kconfig with help description. Signed-off-by: Jagan Teki <jteki@openedev.com> Reviewed-by: Simon Glass <sjg@chromium.org> Cc: Tom Warren <twarren@nvidia.com> Cc: Stephen Warren <swarren@nvidia.com>
* | | spi: Kconfig: Add TEGRA20_SFLASH entryJagan Teki2015-07-01-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | Added TEGRA20_SFLASH entry on Kconfig with help description. Signed-off-by: Jagan Teki <jteki@openedev.com> Reviewed-by: Simon Glass <sjg@chromium.org> Cc: Tom Warren <twarren@nvidia.com> Cc: Stephen Warren <swarren@nvidia.com>
* | | spi: Kconfig: Add TEGRA114_SPI entryJagan Teki2015-07-01-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | Added TEGRA114_SPI entry on Kconfig with help description. Signed-off-by: Jagan Teki <jteki@openedev.com> Reviewed-by: Simon Glass <sjg@chromium.org> Cc: Tom Warren <twarren@nvidia.com> Cc: Stephen Warren <swarren@nvidia.com>
* | | spi: Kconfig: Add ICH_SPI entryJagan Teki2015-07-01-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | Added ICH_SPI entry on Kconfig with help description. Signed-off-by: Jagan Teki <jteki@openedev.com> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
* | | spi: Kconfig: Add EXYNOS_SPI entryJagan Teki2015-07-01-0/+7
| | | | | | | | | | | | | | | | | | | | | Added EXYNOS_SPI entry on Kconfig with help description. Signed-off-by: Jagan Teki <jteki@openedev.com> Reviewed-by: Simon Glass <sjg@chromium.org>
* | | spi: Kconfig: Add FSL_QSPI entryJagan Teki2015-07-01-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | Added FSL_QSPI entry on Kconfig with help description. Signed-off-by: Jagan Teki <jteki@openedev.com> Cc: Peng Fan <Peng.Fan@freescale.com> Cc: Haikun Wang <haikun.wang@freescale.com>
* | | spi: Kconfig: Add FSL_ESPI entryJagan Teki2015-07-01-0/+7
| | | | | | | | | | | | | | | | | | | | | Added FSL_ESPI entry on Kconfig with help description. Signed-off-by: Jagan Teki <jteki@openedev.com> Cc: Haikun Wang <haikun.wang@freescale.com>
* | | spi: Kconfig: Add FSL_DSPI entryJagan Teki2015-07-01-0/+8
| | | | | | | | | | | | | | | | | | | | | Added FSL_DSPI entry on Kconfig with help description. Signed-off-by: Jagan Teki <jteki@openedev.com> Cc: Haikun Wang <haikun.wang@freescale.com>
* | | spi: Kconfig: Show dm-spi drivers if DM_SPI setJagan Teki2015-07-01-25/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | DM supported spi drivers are enbled only when DM_SPI enabled, so added DM_SPI if condition in Kconfig to show thoese only when it enabled. Also re-order the config items as incresing alphabetic order. Signed-off-by: Jagan Teki <jteki@openedev.com>
* | | spi: Makefile: Use object file alphabetic orderJagan Teki2015-07-01-5/+5
| | | | | | | | | | | | | | | | | | | | | Use object files as incresing alphabetic order, so-that it's easy for readability. Signed-off-by: Jagan Teki <jteki@openedev.com>
* | | spi: Kconfig: Add TI_QSPI entryJagan Teki2015-07-01-0/+6
| | | | | | | | | | | | | | | | | | | | | Added TI_QSPI entry on Kconfig with help description. Signed-off-by: Jagan Teki <jteki@openedev.com> Reviewed-by: Tom Rini <trini@konsulko.com>
* | | spi: Kconfig: Add XILINX_SPI entryJagan Teki2015-07-01-0/+9
| | | | | | | | | | | | | | | | | | | | | Added XILINX_SPI entry on Kconfig with help description. Signed-off-by: Jagan Teki <jteki@openedev.com> Cc: Michal Simek <michal.simek@xilinx.com>
* | | spi: Add Kconfig menu entryJagan Teki2015-07-01-0/+4
| | | | | | | | | | | | | | | | | | Added Kconfig menu ... endmenu enties for spi support. Signed-off-by: Jagan Teki <jteki@openedev.com>
* | | sf: Kconfig: Add SPI_FLASH_DATAFLASH entryJagan Teki2015-07-01-10/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added SPI_FLASH_DATAFLASH entry on Kconfig with help description. data flash driver comes with good decription, hence moved the same on to kconfig help decription. Signed-off-by: Jagan Teki <jteki@openedev.com> Reviewed-by: Simon Glass <sjg@chromium.org> Cc: Haikun Wang <haikun.wang@freescale.com>
* | | sf: Kconfig: Add SPI_FLASH_MTD entryJagan Teki2015-07-01-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | Added SPI_FLASH_MTD entry on Kconfig with help description. Signed-off-by: Jagan Teki <jteki@openedev.com> Acked-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> Cc: Heiko Schocher <hs@denx.de>
* | | sf: Kconfig: Update SPI_FLASH entryJagan Teki2015-07-01-9/+9
| | | | | | | | | | | | | | | | | | | | | Updated SPI_FLASH entry on Kconfig with depends on and along with config help description. Signed-off-by: Jagan Teki <jteki@openedev.com>
* | | sf: Add Kconfig menu entryJagan Teki2015-07-01-0/+4
| | | | | | | | | | | | | | | | | | Added Kconfig menu ... endmenu enties for spi flash suppor Signed-off-by: Jagan Teki <jteki@openedev.com>
* | | sf: dataflash: Rename to CONFIG_SPI_FLASH_DATAFLASHJagan Teki2015-07-01-1/+1
| | | | | | | | | | | | | | | | | | | | | Rename CONFIG_SF_DATAFLASH into CONFIG_SPI_FLASH_DATAFLASH as it follows the naming convention same as remaining configs. Signed-off-by: Jagan Teki <jteki@openedev.com>
* | | spi: Kconfig: Add Zynq SPI controller entryJagan Teki2015-07-01-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add Zynq SPI controller Kconfig entry. Signed-off-by: Jagan Teki <jteki@openedev.com> Reviewed-by: Simon Glass <sjg@chromium.org> Cc: Marek Vasut <marex@denx.de> Cc: Michal Simek <michal.simek@xilinx.com> Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
* | | spi: xilinx_spi: Add asm/io.h include fileJagan Teki2015-07-01-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch includes asm/io.h for readl and writel calls. build errors: drivers/spi/xilinx_spi.c: In function 'xilinx_spi_probe': drivers/spi/xilinx_spi.c:119:2: warning: implicit declaration of function 'writel' [-Wimplicit-function-declaration] drivers/spi/xilinx_spi.c: In function 'xilinx_spi_xfer': drivers/spi/xilinx_spi.c:193:2: warning: implicit declaration of function 'readl' [-Wimplicit-function-declaration] Signed-off-by: Jagan Teki <jteki@openedev.com> Cc: Michal Simek <michal.simek@xilinx.com>
* | | dm: spi: xilinx_spi: Convert to driver modelJagan Teki2015-07-01-88/+112
| | | | | | | | | | | | | | | | | | | | | | | | This converts the xilinx spi driver to use the driver model. Signed-off-by: Jagan Teki <jteki@openedev.com> Acked-by: Simon Glass <sjg@chromium.org> Cc: Michal Simek <michal.simek@xilinx.com>
* | | spi: zynq_spi: Add fdt support in driverJagan Teki2015-07-01-10/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now zynq spi driver platform data is controlled by devicetree, enable the status by saying "okay" on respective board dts to use the devicetree generated platdata. Ex: &spi1 { status = "okay"; }; Signed-off-by: Jagan Teki <jteki@openedev.com> Acked-by: Simon Glass <sjg@chromium.org> Cc: Michal Simek <michal.simek@xilinx.com> Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com> Tested-by: Jagan Teki <jteki@openedev.com>
* | | dm: spi: zynq_spi: Convert to driver modelJagan Teki2015-07-01-124/+169
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This converts the zynq spi driver to use the driver model. Minimal functional changes like using meaningful name on structure members wrt mainlined dm spi drivers. - input_hz -> frequency - req_hz -> freq - base -> regs Signed-off-by: Jagan Teki <jteki@openedev.com> Acked-by: Simon Glass <sjg@chromium.org> Cc: Michal Simek <michal.simek@xilinx.com> Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com> Tested-by: Jagan Teki <jteki@openedev.com>
* | | spi/sf: Minor cleanupsJagan Teki2015-07-01-9/+9
| | | | | | | | | | | | | | | | | | | | | - Adjust tab spaces - Add comments Signed-off-by: Jagan Teki <jteki@openedev.com>
* | | spi: davinci_spi: Driver cleanupJagan Teki2015-07-01-170/+173
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Arrange driver code in more readable format[1] for easy accessing and readable. [1] http://patchwork.ozlabs.org/patch/265683/ Signed-off-by: Jagan Teki <jteki@openedev.com> Cc: Rex Chang <rchang@ti.com> Cc: Murali Karicheri <m-karicheri2@ti.com>
* | | spi: davinci_spi: Move header code to driverJagan Teki2015-07-01-122/+109
| | | | | | | | | | | | | | | | | | | | | | | | | | | Move the header code into driver for more readable and easy to access it. Signed-off-by: Jagan Teki <jteki@openedev.com> Cc: Rex Chang <rchang@ti.com> Cc: Murali Karicheri <m-karicheri2@ti.com>
* | | spi: xilinx_spi: Driver clean-upJagan Teki2015-07-01-107/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Zap unneeded macros - Re-arrange the code - Removed __attribute__((weak)) - Replace __func__ macro with func names to save macro transition. - Re-arranged comment lines. - Arrange driver code in more readable format[1] [1] http://patchwork.ozlabs.org/patch/265683/ Signed-off-by: Jagan Teki <jteki@openedev.com> Acked-by: Michal Simek <michal.simek@xilinx.com>
* | | spi: xilinx_spi: Move header code to driverJagan Teki2015-07-01-139/+112
| | | | | | | | | | | | | | | | | | | | | | | | Move the header code into driver for more readable and easy to access it. Signed-off-by: Jagan Teki <jteki@openedev.com> Acked-by: Michal Simek <michal.simek@xilinx.com>
* | | spi: Zap oc_tiny_spi driverJagan Teki2015-07-01-246/+0
| | | | | | | | | | | | | | | | | | | | | | | | Zap oc_tiny_spi driver since the boards used this driver is no longer been active. Signed-off-by: Jagan Teki <jteki@openedev.com> Cc: Thomas Chou <thomas@wytron.com.tw>
* | | spi: Zap ftssp010_spi driverJagan Teki2015-07-01-499/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | Zap ftssp010_spi driver since the boards used this driver is no longer been active. Signed-off-by: Jagan Teki <jteki@openedev.com> Cc: Kuo-Jung Su <dantesu@faraday-tech.com> Cc: Axel Lin <axel.lin@ingics.com>
* | | spi: Zap andes_spi driverJagan Teki2015-07-01-400/+0
| | | | | | | | | | | | | | | | | | | | | | | | Zap andes_spi driver since the boards used this driver is no longer been active. Signed-off-by: Jagan Teki <jteki@openedev.com> Cc: Macpaul Lin <macpaul@andestech.com>
* | | sf: update sst25wf040b flash paramsHaikun Wang2015-06-30-1/+1
| |/ |/| | | | | | | | | | | | | | | sst25wf040b doesn't support Auto Address Increment Programming command. Remove SST_WR flag. Signed-off-by: Haikun Wang <B53464@freescale.com> Tested-by: Haikun Wang <haikun.wang@freescale.com> Reviewed-by: Jagannadh Teki <jteki@openedev.com>
* | mtd, nand: Move common functions from cmd_nand.c to common placeHeiko Schocher2015-06-30-2/+101
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Move common functions from cmd_nand.c (for calculating offset and size from cmdline paramter) to common place, so they could used from other commands which use mtd partitions. For onenand the arg_off_size() is left in common/cmd_onenand.c. It should use now the common arg_off() function, but as I could not test onenand I let it there ... Signed-off-by: Heiko Schocher <hs@denx.de> Acked-by: Scott Wood <scottwood@freescale.com> Reviewed-by: Jagannadh Teki <jteki@openedev.com>
* | mtd, spi: Add MTD layer driverDaniel Schwierzeck2015-06-30-5/+116
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add MTD layer driver for spi, original patch from: http://git.denx.de/?p=u-boot/u-boot-mips.git;a=commitdiff;h=bb246819cdc90493dd7089eaa51b9e639765cced Changes from Heiko Schocher against this patch: - Remove compile error if not defining CONFIG_SPI_FLASH_MTD: LD drivers/mtd/spi/built-in.o drivers/mtd/spi/sf_probe.o: In function `spi_flash_mtd_unregister': /home/hs/abb/imx6/u-boot/drivers/mtd/spi/sf_internal.h:168: multiple definition of `spi_flash_mtd_unregister' drivers/mtd/spi/sf_params.o:/home/hs/abb/imx6/u-boot/drivers/mtd/spi/sf_internal.h:168: first defined here drivers/mtd/spi/sf_ops.o: In function `spi_flash_mtd_unregister': /home/hs/abb/imx6/u-boot/drivers/mtd/spi/sf_internal.h:168: multiple definition of `spi_flash_mtd_unregister' drivers/mtd/spi/sf_params.o:/home/hs/abb/imx6/u-boot/drivers/mtd/spi/sf_internal.h:168: first defined here make[1]: *** [drivers/mtd/spi/built-in.o] Fehler 1 make: *** [drivers/mtd/spi] Fehler 2 - Add a README entry. - Add correct writebufsize, to fit with Linux v3.14 MTD, UBI/UBIFS sync. Note (From Jagan): For testing raw mtd parition erase/read/write operations using cmd_sf, sf_mtd should be required to register the spi flash device to MTD layer but the sf_mtd_info ops were not required until and unless if we use any flash filesystem layer say for example UBI. Due to this the foot-print got increased ~290bytes in non-UBI case here that should be acceptible. Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> Signed-off-by: Heiko Schocher <hs@denx.de> Tested-by: Jagannadh Teki <jteki@openedev.com> Reviewed-by: Jagannadh Teki <jteki@openedev.com>
* | dm: sf: Add Atmel DataFlash spi flash driverHaikun Wang2015-06-30-0/+712
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Atmel DataFlash chips have commands different from common spi flash commands. Atmel DataFlash also have special page-size. This driver add support for accessing Atmel DataFlash. It is based on the Driver Model. Example: => sf probe 1:0 SPI DataFlash: Detected AT45DB021B with page size 264 Bytes, erase size 264 Bytes, total 264 KiB, revision d => sf erase 0 42000 SF: 270336 bytes @ 0x0 Erased: OK => mw.l 82000000 45444342 20000 => sf write 82000000 0 42000 SF: 270336 bytes @ 0x0 Written: OK => sf read 83000000 0 42000 SF: 270336 bytes @ 0x0 Read: OK => cmp.b 82000000 83000000 42000 Total of 270336 byte(s) were the same Signed-off-by: Haikun Wang <haikun.wang@freescale.com> Tested-by: Haikun Wang <haikun.wang@freescale.com> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Chakra Divi <cdivi@openedev.com> Reviewed-by: Jagan Teki <jteki@openedev.com>
* | Revert "sunxi/nand: Add support to the SPL for loading u-boot from internal ↵Ian Campbell2015-06-28-274/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | NAND memory" This reverts commit f76eba38b3eda905ff3bdc18dd1240d3dcbc6e5a. This patch did not have a full and proper copyright/S-o-b chain. Signed-off-by: Ian Campbell <ijc@hellion.org.uk> Conflicts: include/configs/sun6i.h include/configs/sun8i.h
* | Move defaults from config_cmd_default.h to KconfigJoe Hershberger2015-06-25-0/+1
| | | | | | | | | | | | | | | | | | | | This sets the default commands Kconfig to match include/config_cmd_default.h commands in the common/Kconfig and removes them from include/configs. Signed-off-by: Joe Hershberger <joe.hershberger@ni.com> [trini: rastaban, am43xx_evm_usbhost_boot, am43xx_evm_ethboot updates] Signed-off-by: Tom Rini <trini@konsulko.com>
* | Move default y configs out of arch/board KconfigJoe Hershberger2015-06-25-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some archs/boards specify their own default by pre-defining the config which causes the Kconfig system to mix up the order of the configs in the defconfigs... This will cause merge pain if allowed to proliferate. Remove the configs that behave this way from the archs. A few configs still remain, but that is because they only exist as defaults and do not have a proper Kconfig entry. Those appear to be: SPIFLASH DISPLAY_BOARDINFO Signed-off-by: Joe Hershberger <joe.hershberger@ni.com> [trini: rastaban, am43xx_evm_usbhost_boot, am43xx_evm_ethboot updates, drop DM_USB from MSI_Primo81 as USB_MUSB_SUNXI isn't converted yet to DM] Signed-off-by: Tom Rini <trini@konsulko.com>
* | mtd: spi: Add the SPI_FLASH config to KconfigJoe Hershberger2015-06-25-0/+9
| | | | | | | | | | | | | | This config needs to be available in the Kconfig to allow it to be removed from arch defaults. Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
* | mmc: bcm2835_sdhci: Restore original delay behaviorMarek Vasut2015-06-25-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Patch 33fe2fb8df01647f97a7bce96a1c7781a7f6d253 titled "mmc: bcm283x: Remove get_timer_us() from mmc driver" incorrectly replaced ad-hoc get_timer_us() function with a plain get_timer(). The get_timer() operates in mSec units instead of uSec though, which caused very slow operation of the driver. Restore the original behavior of the driver, but avoid get_timer_us() and use timer_get_us() instead. The later is part of the standard API. Signed-off-by: Marek Vasut <marex@denx.de> Cc: Jakub Kiciński <moorray3@wp.pl> Cc: Stephen Warren <swarren@wwwdotorg.org> Tested-by: Jakub Kicinski <kubakici@wp.pl>
* | usb: ehci: Properly deal with data toggle for interrupt endpointsHans de Goede2015-06-19-7/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | Without this we loose every other interrupt packet. We never noticed this because with keyboards the packets which we were loosing would normally be key release packets. But now that we do keyrepeat in software instead of relying on the hid idle functionality, missing a release will result in key repeat triggering. This commit fixes this. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* | mmc_write.c: Make mmc_berase do 32bit safe 64bit mathTom Rini2015-06-18-1/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | We want to see if the requested start or total block count are unaligned. We discard the whole numbers and only care about the remainder. Update the code to use div_u64_rem here and add a comment. Cc: Hans de Goede <hdegoede@redhat.com> Cc: Pantelis Antoniou <pantelis.antoniou@konsulko.com> Cc: Bernhard Nortmann <bernhard.nortmann@web.de> Reported-by: Simon Glass <sjg@chromium.org> Signed-off-by: Tom Rini <trini@konsulko.com> Tested-by: Bernhard Nortmann <bernhard.nortmann@web.de> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
* | mtd: OMAP: Enable GPMC prefetch mode for 16 bit accessJeroen Hofstee2015-06-18-10/+18
| | | | | | | | | | | | | | | | | | | | | | | | commit c316f57 "mtd: OMAP: Enable GPMC prefetch mode" only enabled prefetch mode for 8 bit nand access, this adds 16 bit as well. Cc: Scott Wood <scottwood@freescale.com> Cc: Tom Rini <trini@konsulko.com> Cc: Daniel Mack <zonque@gmail.com> Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl> Reviewed-by: Tom Rini <trini@konsulko.com>