mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-11-03 21:48:15 +00:00 
			
		
		
		
	-----BEGIN PGP SIGNATURE----- iQGzBAABCgAdFiEEGjx/cOCPqxcHgJu/FHw5/5Y0tywFAmVbZ4QACgkQFHw5/5Y0 tyzlggwAowkAYxSOUkwhWSbEYctVObZUPF1kDEbWlbskx52ZrQ56nWbfojZPKYdT OYe7fNrOJaYpbpU31lJ6U7Jm/iLCHw7vqMBmTJCNNr/BBW5jQ/exEVMa+/ZG640T 6pTWqAHp3CfqNjBK9bnFmIqWTwrqUCZKNllPfEWNs1Pl00ypJsY9ZYaAw+4I9t0p 2cG/BrSUyCDkgLYHi0YVUHXWQKYU4LVfz6EASGIOwTrrJGEUJ9EAGJmzgUSC0Zuw 7qQBwHPXHBkpfP4bOFZ6xSKLp79rHXNSdjx21XW/4yerp4GC16xB+pZWZOSuz2J9 0anoiSGPh1N81B6aciTOWeCdKPJeXEp1AxqyCcvmwLZrOOs+MSGjbKCUFnjyNtAJ hTXzlJQM6tQ3BhGQLY85sNe8/dOF3WNt4RiRM3K87mU8e0pahrYKSj5oUSbcrOBx 4Hk6rQc33MvyLAYEhSJ3naktA0dPQseleOrXuOGdSWOlFf2sweVEjip4VKBlbUNb t3kEfQ9F =YBkC -----END PGP SIGNATURE----- Merge tag 'v2024.01-rc3' into next Prepare v2024.01-rc3
		
			
				
	
	
		
			109 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
// SPDX-License-Identifier: GPL-2.0+
 | 
						|
/*
 | 
						|
 * Copyright (C) 2000-2005, DENX Software Engineering
 | 
						|
 *		Wolfgang Denk <wd@denx.de>
 | 
						|
 * Copyright (C) Procsys. All rights reserved.
 | 
						|
 *		Mushtaq Khan <mushtaq_k@procsys.com>
 | 
						|
 *			<mushtaqk_921@yahoo.co.in>
 | 
						|
 * Copyright (C) 2008 Freescale Semiconductor, Inc.
 | 
						|
 *		Dave Liu <daveliu@freescale.com>
 | 
						|
 */
 | 
						|
 | 
						|
#include <common.h>
 | 
						|
#include <ahci.h>
 | 
						|
#include <blk.h>
 | 
						|
#include <dm.h>
 | 
						|
#include <part.h>
 | 
						|
#include <sata.h>
 | 
						|
#include <dm/device-internal.h>
 | 
						|
#include <dm/uclass-internal.h>
 | 
						|
 | 
						|
int sata_reset(struct udevice *dev)
 | 
						|
{
 | 
						|
	struct ahci_ops *ops = ahci_get_ops(dev);
 | 
						|
 | 
						|
	if (!ops->reset)
 | 
						|
		return -ENOSYS;
 | 
						|
 | 
						|
	return ops->reset(dev);
 | 
						|
}
 | 
						|
 | 
						|
int sata_dm_port_status(struct udevice *dev, int port)
 | 
						|
{
 | 
						|
	struct ahci_ops *ops = ahci_get_ops(dev);
 | 
						|
 | 
						|
	if (!ops->port_status)
 | 
						|
		return -ENOSYS;
 | 
						|
 | 
						|
	return ops->port_status(dev, port);
 | 
						|
}
 | 
						|
 | 
						|
int sata_scan(struct udevice *dev)
 | 
						|
{
 | 
						|
	struct ahci_ops *ops = ahci_get_ops(dev);
 | 
						|
 | 
						|
	if (!ops->scan)
 | 
						|
		return -ENOSYS;
 | 
						|
 | 
						|
	return ops->scan(dev);
 | 
						|
}
 | 
						|
 | 
						|
int sata_rescan(bool verbose)
 | 
						|
{
 | 
						|
	int ret;
 | 
						|
	struct udevice *dev;
 | 
						|
 | 
						|
	if (verbose)
 | 
						|
		printf("Removing devices on SATA bus...\n");
 | 
						|
 | 
						|
	blk_unbind_all(UCLASS_AHCI);
 | 
						|
 | 
						|
	ret = uclass_find_first_device(UCLASS_AHCI, &dev);
 | 
						|
	if (ret || !dev) {
 | 
						|
		printf("Cannot find SATA device (err=%d)\n", ret);
 | 
						|
		return -ENOENT;
 | 
						|
	}
 | 
						|
 | 
						|
	ret = device_remove(dev, DM_REMOVE_NORMAL);
 | 
						|
	if (ret) {
 | 
						|
		printf("Cannot remove SATA device '%s' (err=%d)\n", dev->name, ret);
 | 
						|
		return -ENOSYS;
 | 
						|
	}
 | 
						|
 | 
						|
	if (verbose)
 | 
						|
		printf("Rescanning SATA bus for devices...\n");
 | 
						|
 | 
						|
	ret = uclass_probe_all(UCLASS_AHCI);
 | 
						|
 | 
						|
	if (ret == -ENODEV) {
 | 
						|
		if (verbose)
 | 
						|
			printf("No SATA block device found\n");
 | 
						|
		return 0;
 | 
						|
	}
 | 
						|
 | 
						|
	return ret;
 | 
						|
}
 | 
						|
 | 
						|
static unsigned long sata_bread(struct udevice *dev, lbaint_t start,
 | 
						|
				lbaint_t blkcnt, void *dst)
 | 
						|
{
 | 
						|
	return -ENOSYS;
 | 
						|
}
 | 
						|
 | 
						|
static unsigned long sata_bwrite(struct udevice *dev, lbaint_t start,
 | 
						|
				 lbaint_t blkcnt, const void *buffer)
 | 
						|
{
 | 
						|
	return -ENOSYS;
 | 
						|
}
 | 
						|
 | 
						|
static const struct blk_ops sata_blk_ops = {
 | 
						|
	.read	= sata_bread,
 | 
						|
	.write	= sata_bwrite,
 | 
						|
};
 | 
						|
 | 
						|
U_BOOT_DRIVER(sata_blk) = {
 | 
						|
	.name		= "sata_blk",
 | 
						|
	.id		= UCLASS_BLK,
 | 
						|
	.ops		= &sata_blk_ops,
 | 
						|
};
 |