12 Jul, 2017

10 commits

  • Split out the code that scans a single SCSI bus into a separate function.
    This will allow it to be used from driver model.

    Signed-off-by: Simon Glass
    Reviewed-by: Bin Meng

    Simon Glass
     
  • The SCSI uclass currently has no operations. It just uses the global SCSI
    functions. Fix this by adding operations to the only two drivers that use
    the uclass, and replacing the global functions with those defined locally
    in the SCSI code.

    Signed-off-by: Simon Glass
    Reviewed-by: Bin Meng

    Simon Glass
     
  • The 'mode' parameter is actually a flag to determine whether to display
    a list of devices found during the scan. Rename it to reflect this, add a
    function comment and adjust callers to use a boolean.

    Signed-off-by: Simon Glass
    Reviewed-by: Bin Meng

    Simon Glass
     
  • With driver model these functions need a device pointer. Add one even
    when CONFIG_DM_SCSI is not defined. This avoids having ugly conditional
    function prototypes, When CONFIG_DM_SCSI is not defined we can just ignore
    the pointer.

    Signed-off-by: Simon Glass
    Reviewed-by: Bin Meng

    Simon Glass
     
  • Add operations for SCSI. These are not yet implemented, but we have the
    struct.

    Signed-off-by: Simon Glass
    Reviewed-by: Bin Meng

    Simon Glass
     
  • Two AHCI drivers use SCSI with CONFIG_DM_SCSI. The SCSI uclass calls
    scsi_low_level_init() which is implemented by ahci.c. If
    CONFIG_SCSI_AHCI_PLAT is defined it does one thing and if it is not
    it does something else.

    We don't need to call through scsi_low_level_init() to get the init
    completed. Instead, adjust the two drivers to call into AHCI directly.
    Drop the post-probe init in the SCSI uclass. This means that driver model
    doesn't need to use scsi_low_level_init(). It is a legacy function and
    driver model should use a driver's probe() method instead.

    While we are here, add a comment to the top of the file explaining what
    ahci.c does.

    Signed-off-by: Simon Glass
    Reviewed-by: Bin Meng

    Simon Glass
     
  • We should not be using typedefs in U-Boot and 'ccb' is a pretty short
    name. It is also used with variables. Drop the typedef and use 'struct'
    instead.

    Signed-off-by: Simon Glass
    Reviewed-by: Bin Meng

    Simon Glass
     
  • This name should be lower case. Also the _block suffix is superfluous.
    Rename it.

    Signed-off-by: Simon Glass
    Reviewed-by: Bin Meng

    Simon Glass
     
  • Put the driver-model declarations first since we are migrating to that.
    Also drop scsi_init() when driver model is used.

    Signed-off-by: Simon Glass
    Reviewed-by: Bin Meng

    Simon Glass
     
  • This function is only defined by one driver and is empty. Move it into
    the SCSI implementation itself. We could remove it, but it should be
    useful for debugging.

    Signed-off-by: Simon Glass
    Reviewed-by: Bin Meng

    Simon Glass
     

20 Dec, 2016

1 commit

  • All sata based drivers are bind and corresponding block
    device is created. Based on this find_scsi_device() is able
    to get back block device based on scsi_curr_dev pointer.

    intr_scsi() is commented now but it can be replaced by calling
    find_scsi_device() and scsi_scan().

    scsi_dev_desc[] is commented out but common/scsi.c heavily depends on
    it. That's why CONFIG_SYS_SCSI_MAX_DEVICE is hardcoded to 1 and symbol
    is reassigned to a block description allocated by uclass.
    There is only one block description by device now but it doesn't need to
    be correct when more devices are present.

    scsi_bind() ensures corresponding block device creation.
    uclass post_probe (scsi_post_probe()) is doing low level init.

    SCSI/SATA DM based drivers requires to have 64bit base address as
    the first entry in platform data structure to setup mmio_base.

    Signed-off-by: Michal Simek
    Reviewed-by: Simon Glass

    Michal Simek
     

09 Dec, 2016

1 commit


08 Dec, 2016

1 commit

  • All sata based drivers are bind and corresponding block
    device is created. Based on this find_scsi_device() is able
    to get back block device based on scsi_curr_dev pointer.

    intr_scsi() is commented now but it can be replaced by calling
    find_scsi_device() and scsi_scan().

    scsi_dev_desc[] is commented out but common/scsi.c heavily depends on
    it. That's why CONFIG_SYS_SCSI_MAX_DEVICE is hardcoded to 1 and symbol
    is reassigned to a block description allocated by uclass.
    There is only one block description by device now but it doesn't need to
    be correct when more devices are present.

    scsi_bind() ensures corresponding block device creation.
    uclass post_probe (scsi_post_probe()) is doing low level init.

    SCSI/SATA DM based drivers requires to have 64bit base address as
    the first entry in platform data structure to setup mmio_base.

    Signed-off-by: Michal Simek
    Reviewed-by: Simon Glass
    Series-changes: 2
    - Use CONFIG_DM_SCSI instead of mix of DM_SCSI and DM_SATA
    Ceva sata has never used sata commands that's why keep it in
    SCSI part only.
    - Separate scsi_scan() for DM_SCSI and do not change cmd/scsi.c
    - Extend platdata

    Series-changes: 3
    - Fix scsi_scan return path
    - Fix header location uclass-internal.h
    - Add scsi_max_devs under !DM_SCSI
    - Add new header device-internal because of device_probe()
    - Redesign block device creation algorithm
    - Use device_unbind in error path
    - Create block device with id and lun numbers (lun was there in v2)
    - Cleanup dev_num initialization in block device description
    with fixing parameters in blk_create_devicef
    - Create new Kconfig menu for SATA/SCSI drivers
    - Extend description for DM_SCSI
    - Fix Kconfig dependencies
    - Fix kernel doc format in scsi_platdata
    - Fix ahci_init_one - vendor variable

    Series-changes: 4
    - Fix Kconfig entry
    - Remove SPL ifdef around SCSI uclass
    - Clean ahci_print_info() ifdef logic

    Michal Simek
     

02 Dec, 2016

2 commits


13 Jun, 2015

1 commit

  • Enable full 48-bit LBA48 data reads by passing the upper word of the
    LBA block pointer in bytes 9 and 10 of the FIS.

    This allows uboot to load data from any arbitrary sector on a drive
    with 2 or more TB of available data connected to an AHCI controller.

    Signed-off-by: Mark Langsdorf
    Signed-off-by: Andre Przywara
    [trini: Make use of CONFIG_SYS_64BIT_LBA in a few places to drop
    warnings on platforms that don't enable that feature ]
    Signed-off-by: Tom Rini

    Mark Langsdorf
     

24 Jul, 2013

1 commit


02 Apr, 2013

1 commit

  • 'bool' is defined in random places. This patch consolidates them into a
    single header file include/linux/types.h, using stdbool.h introduced in C99.

    All other #define, typedef and enum are removed. They are all consistent with
    true = 1, false = 0.

    Replace FALSE, False with false. Replace TRUE, True with true.
    Skip *.py, *.php, lib/* files.

    Signed-off-by: York Sun

    York Sun
     

03 Nov, 2012

2 commits

  • In the structure returned by the ATA identify device command, there are two
    fields which describe the device capacity. One is a 32 bit data type which
    reports the number of sectors as a 28 bit LBA, and the other is a 64 bit data
    type which is for a 48 bit LBA. If the device doesn't support 48 bit LBAs,
    the small value is the only value with the correct size. If it supports more,
    if the number of sectors is small enough to fit into 28 bits, both fields
    reflect the correct value. If it's too large, the smaller field has 28 bits of
    1s, 0xfffffff, and the other field has the correct value.

    The AHCI driver is implemented by attaching to the generic SCSI code and
    translating on the fly between SCSI binary data structures and AHCI data
    structures. It responds to requests to execute specific SCSI commands by
    executing the equivalent AHCI commands and then crafting a response which
    matches what a SCSI disk would send.

    The AHCI driver now considers both fields and chooses the correct one when
    implementing both the SCSI READ CAPACITY (10) and READ CAPACITY (16) commands.

    Signed-off-by: Gabe Black
    Signed-off-by: Simon Glass

    Gabe Black
     
  • Add a new function to find out the number of available SCSI disks. Also
    set the 'scsidevs' environment variable after each scan.

    Signed-off-by: Stefan Reinauer
    Signed-off-by: Simon Glass

    Stefan Reinauer
     

20 May, 2012

1 commit

  • This avoids cache-alignment warnings shown in console
    when a usb command is entered.

    Whenever X bytes of unaligned buffer is invalidated, arm core
    invalidates X + Y bytes as per the cache line size and throws
    these warnings.

    Signed-off-by: Puneet Saxena
    Signed-off-by: Marek Vasut

    Puneet Saxena
     

26 Jul, 2011

1 commit


21 May, 2008

1 commit

  • This commit gets rid of a huge amount of silly white-space issues.
    Especially, all sequences of SPACEs followed by TAB characters get
    removed (unless they appear in print statements).

    Also remove all embedded "vim:" and "vi:" statements which hide
    indentation problems.

    Signed-off-by: Wolfgang Denk

    Wolfgang Denk
     

28 Jun, 2003

1 commit

  • - remove trailing white space, trailing empty lines, C++ comments, etc.
    - split cmd_boot.c (separate cmd_bdinfo.c and cmd_load.c)

    * Patches by Kenneth Johansson, 25 Jun 2003:
    - major rework of command structure
    (work done mostly by Michal Cendrowski and Joakim Kristiansen)

    wdenk
     

01 Apr, 2002

1 commit