mirror of
https://github.com/smaeul/u-boot.git
synced 2025-10-13 20:36:02 +01:00
sata: sata_sil: Only support BLK
No boards use this driver without CONFIG_BLK, so clean up the dead code. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Stefan Roese <sr@denx.de>
This commit is contained in:
parent
6edb5dd388
commit
e7b02781f5
@ -6,7 +6,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
|
#include <blk.h>
|
||||||
#include <cpu_func.h>
|
#include <cpu_func.h>
|
||||||
|
#include <dm.h>
|
||||||
#include <log.h>
|
#include <log.h>
|
||||||
#include <pci.h>
|
#include <pci.h>
|
||||||
#include <command.h>
|
#include <command.h>
|
||||||
@ -17,13 +19,8 @@
|
|||||||
#include <sata.h>
|
#include <sata.h>
|
||||||
#include <libata.h>
|
#include <libata.h>
|
||||||
#include <sata.h>
|
#include <sata.h>
|
||||||
#include <linux/delay.h>
|
|
||||||
|
|
||||||
#if CONFIG_IS_ENABLED(BLK)
|
|
||||||
#include <dm.h>
|
|
||||||
#include <blk.h>
|
|
||||||
#include <dm/device-internal.h>
|
#include <dm/device-internal.h>
|
||||||
#endif
|
#include <linux/delay.h>
|
||||||
|
|
||||||
#include "sata_sil.h"
|
#include "sata_sil.h"
|
||||||
|
|
||||||
@ -480,18 +477,12 @@ static void sil_sata_cmd_flush_cache_ext(struct sil_sata *sata)
|
|||||||
/*
|
/*
|
||||||
* SATA interface between low level driver and command layer
|
* SATA interface between low level driver and command layer
|
||||||
*/
|
*/
|
||||||
#if !CONFIG_IS_ENABLED(BLK)
|
|
||||||
ulong sata_read(int dev, ulong blknr, lbaint_t blkcnt, void *buffer)
|
|
||||||
{
|
|
||||||
struct sil_sata *sata = (struct sil_sata *)sata_dev_desc[dev].priv;
|
|
||||||
#else
|
|
||||||
static ulong sata_read(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt,
|
static ulong sata_read(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt,
|
||||||
void *buffer)
|
void *buffer)
|
||||||
{
|
{
|
||||||
struct sil_sata_priv *priv = dev_get_plat(dev);
|
struct sil_sata_priv *priv = dev_get_plat(dev);
|
||||||
int port_number = priv->port_num;
|
int port_number = priv->port_num;
|
||||||
struct sil_sata *sata = priv->sil_sata_desc[port_number];
|
struct sil_sata *sata = priv->sil_sata_desc[port_number];
|
||||||
#endif
|
|
||||||
ulong rc;
|
ulong rc;
|
||||||
|
|
||||||
if (sata->lba48)
|
if (sata->lba48)
|
||||||
@ -505,18 +496,12 @@ static ulong sata_read(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt,
|
|||||||
/*
|
/*
|
||||||
* SATA interface between low level driver and command layer
|
* SATA interface between low level driver and command layer
|
||||||
*/
|
*/
|
||||||
#if !CONFIG_IS_ENABLED(BLK)
|
|
||||||
ulong sata_write(int dev, ulong blknr, lbaint_t blkcnt, const void *buffer)
|
|
||||||
{
|
|
||||||
struct sil_sata *sata = (struct sil_sata *)sata_dev_desc[dev].priv;
|
|
||||||
#else
|
|
||||||
ulong sata_write(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt,
|
ulong sata_write(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt,
|
||||||
const void *buffer)
|
const void *buffer)
|
||||||
{
|
{
|
||||||
struct sil_sata_priv *priv = dev_get_plat(dev);
|
struct sil_sata_priv *priv = dev_get_plat(dev);
|
||||||
int port_number = priv->port_num;
|
int port_number = priv->port_num;
|
||||||
struct sil_sata *sata = priv->sil_sata_desc[port_number];
|
struct sil_sata *sata = priv->sil_sata_desc[port_number];
|
||||||
#endif
|
|
||||||
ulong rc;
|
ulong rc;
|
||||||
|
|
||||||
if (sata->lba48) {
|
if (sata->lba48) {
|
||||||
@ -532,14 +517,9 @@ ulong sata_write(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt,
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !CONFIG_IS_ENABLED(BLK)
|
|
||||||
static int sil_init_sata(int dev)
|
|
||||||
{
|
|
||||||
#else
|
|
||||||
static int sil_init_sata(struct udevice *uc_dev, int dev)
|
static int sil_init_sata(struct udevice *uc_dev, int dev)
|
||||||
{
|
{
|
||||||
struct sil_sata_priv *priv = dev_get_plat(uc_dev);
|
struct sil_sata_priv *priv = dev_get_plat(uc_dev);
|
||||||
#endif
|
|
||||||
struct sil_sata *sata;
|
struct sil_sata *sata;
|
||||||
void *port;
|
void *port;
|
||||||
u32 tmp;
|
u32 tmp;
|
||||||
@ -606,14 +586,9 @@ static int sil_init_sata(struct udevice *uc_dev, int dev)
|
|||||||
memset((void *)sata, 0, sizeof(struct sil_sata));
|
memset((void *)sata, 0, sizeof(struct sil_sata));
|
||||||
|
|
||||||
/* Save the private struct to block device struct */
|
/* Save the private struct to block device struct */
|
||||||
#if !CONFIG_IS_ENABLED(BLK)
|
|
||||||
sata_dev_desc[dev].priv = (void *)sata;
|
|
||||||
sata->devno = sata_info.devno;
|
|
||||||
#else
|
|
||||||
priv->sil_sata_desc[dev] = sata;
|
priv->sil_sata_desc[dev] = sata;
|
||||||
priv->port_num = dev;
|
priv->port_num = dev;
|
||||||
sata->devno = uc_dev->parent;
|
sata->devno = uc_dev->parent;
|
||||||
#endif
|
|
||||||
sata->id = dev;
|
sata->id = dev;
|
||||||
sata->port = port;
|
sata->port = port;
|
||||||
sprintf(sata->name, "SATA#%d", dev);
|
sprintf(sata->name, "SATA#%d", dev);
|
||||||
@ -625,85 +600,11 @@ static int sil_init_sata(struct udevice *uc_dev, int dev)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !CONFIG_IS_ENABLED(BLK)
|
|
||||||
/*
|
|
||||||
* SATA interface between low level driver and command layer
|
|
||||||
*/
|
|
||||||
int init_sata(int dev)
|
|
||||||
{
|
|
||||||
static int init_done, idx;
|
|
||||||
pci_dev_t devno;
|
|
||||||
u16 word;
|
|
||||||
|
|
||||||
if (init_done == 1 && dev < sata_info.maxport)
|
|
||||||
goto init_start;
|
|
||||||
|
|
||||||
init_done = 1;
|
|
||||||
|
|
||||||
/* Find PCI device(s) */
|
|
||||||
devno = pci_find_devices(supported, idx++);
|
|
||||||
if (devno == -1)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
pci_read_config_word(devno, PCI_DEVICE_ID, &word);
|
|
||||||
|
|
||||||
/* get the port count */
|
|
||||||
word &= 0xf;
|
|
||||||
|
|
||||||
sata_info.portbase = 0;
|
|
||||||
sata_info.maxport = sata_info.portbase + word;
|
|
||||||
sata_info.devno = devno;
|
|
||||||
|
|
||||||
/* Read out all BARs */
|
|
||||||
sata_info.iobase[0] = (ulong)pci_map_bar(devno,
|
|
||||||
PCI_BASE_ADDRESS_0, PCI_REGION_MEM);
|
|
||||||
sata_info.iobase[1] = (ulong)pci_map_bar(devno,
|
|
||||||
PCI_BASE_ADDRESS_2, PCI_REGION_MEM);
|
|
||||||
|
|
||||||
/* mask out the unused bits */
|
|
||||||
sata_info.iobase[0] &= 0xffffff80;
|
|
||||||
sata_info.iobase[1] &= 0xfffffc00;
|
|
||||||
|
|
||||||
/* Enable Bus Mastering and memory region */
|
|
||||||
pci_write_config_word(devno, PCI_COMMAND,
|
|
||||||
PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER);
|
|
||||||
|
|
||||||
/* Check if mem accesses and Bus Mastering are enabled. */
|
|
||||||
pci_read_config_word(devno, PCI_COMMAND, &word);
|
|
||||||
if (!(word & PCI_COMMAND_MEMORY) ||
|
|
||||||
(!(word & PCI_COMMAND_MASTER))) {
|
|
||||||
printf("Error: Can not enable MEM access or Bus Mastering.\n");
|
|
||||||
debug("PCI command: %04x\n", word);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* GPIO off */
|
|
||||||
writel(0, (void *)(sata_info.iobase[0] + HOST_FLASH_CMD));
|
|
||||||
/* clear global reset & mask interrupts during initialization */
|
|
||||||
writel(0, (void *)(sata_info.iobase[0] + HOST_CTRL));
|
|
||||||
|
|
||||||
init_start:
|
|
||||||
return sil_init_sata(dev);
|
|
||||||
}
|
|
||||||
|
|
||||||
int reset_sata(int dev)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* SATA interface between low level driver and command layer
|
|
||||||
*/
|
|
||||||
int scan_sata(int dev)
|
|
||||||
{
|
|
||||||
struct sil_sata *sata = (struct sil_sata *)sata_dev_desc[dev].priv;
|
|
||||||
#else
|
|
||||||
static int scan_sata(struct udevice *blk_dev, int dev)
|
static int scan_sata(struct udevice *blk_dev, int dev)
|
||||||
{
|
{
|
||||||
struct blk_desc *desc = dev_get_uclass_plat(blk_dev);
|
struct blk_desc *desc = dev_get_uclass_plat(blk_dev);
|
||||||
struct sil_sata_priv *priv = dev_get_plat(blk_dev);
|
struct sil_sata_priv *priv = dev_get_plat(blk_dev);
|
||||||
struct sil_sata *sata = priv->sil_sata_desc[dev];
|
struct sil_sata *sata = priv->sil_sata_desc[dev];
|
||||||
#endif
|
|
||||||
unsigned char serial[ATA_ID_SERNO_LEN + 1];
|
unsigned char serial[ATA_ID_SERNO_LEN + 1];
|
||||||
unsigned char firmware[ATA_ID_FW_REV_LEN + 1];
|
unsigned char firmware[ATA_ID_FW_REV_LEN + 1];
|
||||||
unsigned char product[ATA_ID_PROD_LEN + 1];
|
unsigned char product[ATA_ID_PROD_LEN + 1];
|
||||||
@ -727,16 +628,6 @@ static int scan_sata(struct udevice *blk_dev, int dev)
|
|||||||
/* Product model */
|
/* Product model */
|
||||||
ata_id_c_string(id, product, ATA_ID_PROD, sizeof(product));
|
ata_id_c_string(id, product, ATA_ID_PROD, sizeof(product));
|
||||||
|
|
||||||
#if !CONFIG_IS_ENABLED(BLK)
|
|
||||||
memcpy(sata_dev_desc[dev].product, serial, sizeof(serial));
|
|
||||||
memcpy(sata_dev_desc[dev].revision, firmware, sizeof(firmware));
|
|
||||||
memcpy(sata_dev_desc[dev].vendor, product, sizeof(product));
|
|
||||||
/* Totoal sectors */
|
|
||||||
sata_dev_desc[dev].lba = ata_id_n_sectors(id);
|
|
||||||
#ifdef CONFIG_LBA48
|
|
||||||
sata_dev_desc[dev].lba48 = sata->lba48;
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
memcpy(desc->product, serial, sizeof(serial));
|
memcpy(desc->product, serial, sizeof(serial));
|
||||||
memcpy(desc->revision, firmware, sizeof(firmware));
|
memcpy(desc->revision, firmware, sizeof(firmware));
|
||||||
memcpy(desc->vendor, product, sizeof(product));
|
memcpy(desc->vendor, product, sizeof(product));
|
||||||
@ -744,7 +635,6 @@ static int scan_sata(struct udevice *blk_dev, int dev)
|
|||||||
#ifdef CONFIG_LBA48
|
#ifdef CONFIG_LBA48
|
||||||
desc->lba48 = sata->lba48;
|
desc->lba48 = sata->lba48;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
ata_dump_id(id);
|
ata_dump_id(id);
|
||||||
@ -754,7 +644,6 @@ static int scan_sata(struct udevice *blk_dev, int dev)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if CONFIG_IS_ENABLED(BLK)
|
|
||||||
static const struct blk_ops sata_sil_blk_ops = {
|
static const struct blk_ops sata_sil_blk_ops = {
|
||||||
.read = sata_read,
|
.read = sata_read,
|
||||||
.write = sata_write,
|
.write = sata_write,
|
||||||
@ -916,4 +805,3 @@ U_BOOT_DRIVER(sil_ahci_pci) = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
U_BOOT_PCI_DEVICE(sil_ahci_pci, supported);
|
U_BOOT_PCI_DEVICE(sil_ahci_pci, supported);
|
||||||
#endif
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user