Skip to content

Commit 7e13e84

Browse files
Nick EatonCQ Bot
authored andcommitted
[aml-rawnand] Use SDK pdev library
Make the aml-rawnand driver use the //sdk/lib/driver/platform-device/cpp SDK library in order to interact with the platform device. Bug: 366517646 Change-Id: I8ff98904acea4a57b0530d3534274390ff3d5275 Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1236244 Commit-Queue: Nick Eaton <[email protected]> Reviewed-by: Martin Lindsay <[email protected]>
1 parent 790a2f1 commit 7e13e84

File tree

2 files changed

+28
-23
lines changed

2 files changed

+28
-23
lines changed

src/devices/nand/drivers/aml-rawnand/BUILD.gn

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,14 @@ source_set("common") {
4242
configs += [ "//build/config:all_source" ]
4343
sources = [
4444
"aml-rawnand.cc",
45+
"aml-rawnand.h",
4546
"onfi.cc",
47+
"onfi.h",
4648
]
4749
public_deps = [
4850
":aml-rawnand-bind",
4951
"//sdk/banjo/fuchsia.hardware.rawnand:fuchsia.hardware.rawnand_banjo_cpp",
50-
"//src/devices/bus/lib/device-protocol-pdev",
52+
"//sdk/lib/driver/platform-device/cpp",
5153
"//src/devices/lib/amlogic",
5254
"//src/devices/lib/mmio",
5355
"//src/lib/ddk",

src/devices/nand/drivers/aml-rawnand/aml-rawnand.cc

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
#include <lib/ddk/driver.h>
1212
#include <lib/ddk/io-buffer.h>
1313
#include <lib/ddk/metadata.h>
14-
#include <lib/device-protocol/pdev-fidl.h>
14+
#include <lib/driver/platform-device/cpp/pdev.h>
1515
#include <lib/mmio/mmio-buffer.h>
1616
#include <lib/zx/bti.h>
1717
#include <lib/zx/time.h>
@@ -1040,36 +1040,39 @@ zx_status_t AmlRawNand::Bind() {
10401040
}
10411041

10421042
zx_status_t AmlRawNand::Create(void* ctx, zx_device_t* parent) {
1043-
ddk::PDevFidl pdev(parent);
1044-
if (!pdev.is_valid()) {
1045-
zxlogf(ERROR, "%s: ZX_PROTOCOL_PDEV not available", __FILE__);
1046-
return ZX_ERR_NO_RESOURCES;
1043+
zx::result pdev_client_end =
1044+
DdkConnectFragmentFidlProtocol<fuchsia_hardware_platform_device::Service::Device>(parent,
1045+
"pdev");
1046+
if (pdev_client_end.is_error()) {
1047+
zxlogf(ERROR, "Failed to connect to platform device: %s", pdev_client_end.status_string());
1048+
return pdev_client_end.status_value();
10471049
}
1050+
fdf::PDev pdev{std::move(pdev_client_end.value())};
10481051

1049-
zx::bti bti;
1050-
if (zx_status_t status = pdev.GetBti(0, &bti); status != ZX_OK) {
1051-
zxlogf(ERROR, "%s: pdev_get_bti failed", __FILE__);
1052-
return status;
1052+
zx::result bti = pdev.GetBti(0);
1053+
if (bti.is_error()) {
1054+
zxlogf(ERROR, "Failed to get bti: %s", bti.status_string());
1055+
return bti.status_value();
10531056
}
10541057

1055-
static constexpr uint32_t NandRegWindow = 0;
1056-
static constexpr uint32_t ClockRegWindow = 1;
1057-
std::optional<fdf::MmioBuffer> mmio_nandreg;
1058-
if (zx_status_t status = pdev.MapMmio(NandRegWindow, &mmio_nandreg); status != ZX_OK) {
1059-
zxlogf(ERROR, "%s: pdev.MapMmio nandreg failed", __FILE__);
1060-
return status;
1058+
static constexpr uint32_t kNandRegWindow = 0;
1059+
zx::result mmio_nandreg = pdev.MapMmio(kNandRegWindow);
1060+
if (mmio_nandreg.is_error()) {
1061+
zxlogf(ERROR, "Failed to map nand reg window mmio: %s", mmio_nandreg.status_string());
1062+
return mmio_nandreg.status_value();
10611063
}
10621064

1063-
std::optional<fdf::MmioBuffer> mmio_clockreg;
1064-
if (zx_status_t status = pdev.MapMmio(ClockRegWindow, &mmio_clockreg); status != ZX_OK) {
1065-
zxlogf(ERROR, "%s: pdev.MapMmio clockreg failed", __FILE__);
1066-
return status;
1065+
static constexpr uint32_t kClockRegWindow = 1;
1066+
zx::result mmio_clockreg = pdev.MapMmio(kClockRegWindow);
1067+
if (mmio_clockreg.is_error()) {
1068+
zxlogf(ERROR, "Failed to map clock reg window mmio: %s", mmio_clockreg.status_string());
1069+
return mmio_clockreg.status_value();
10671070
}
10681071

10691072
fbl::AllocChecker ac;
1070-
std::unique_ptr<AmlRawNand> device(new (&ac) AmlRawNand(parent, *std::move(mmio_nandreg),
1071-
*std::move(mmio_clockreg), std::move(bti),
1072-
std::make_unique<Onfi>()));
1073+
std::unique_ptr<AmlRawNand> device(new (&ac) AmlRawNand(
1074+
parent, std::move(mmio_nandreg.value()), std::move(mmio_clockreg.value()),
1075+
std::move(bti.value()), std::make_unique<Onfi>()));
10731076

10741077
if (!ac.check()) {
10751078
zxlogf(ERROR, "%s: AmlRawNand alloc failed", __FILE__);

0 commit comments

Comments
 (0)