xref: /openbmc/u-boot/drivers/demo/demo-simple.c (revision e8f80a5a)
1*83d290c5STom Rini // SPDX-License-Identifier: GPL-2.0+
239f7611fSSimon Glass /*
339f7611fSSimon Glass  * Copyright (c) 2013 Google, Inc
439f7611fSSimon Glass  *
539f7611fSSimon Glass  * (C) Copyright 2012
639f7611fSSimon Glass  * Pavel Herrmann <morpheus.ibis@gmail.com>
739f7611fSSimon Glass  */
839f7611fSSimon Glass 
939f7611fSSimon Glass #include <common.h>
1039f7611fSSimon Glass #include <dm.h>
1139f7611fSSimon Glass #include <dm-demo.h>
120eb25b61SJoe Hershberger #include <mapmem.h>
1339f7611fSSimon Glass #include <asm/io.h>
1439f7611fSSimon Glass 
simple_hello(struct udevice * dev,int ch)1554c5d08aSHeiko Schocher static int simple_hello(struct udevice *dev, int ch)
1639f7611fSSimon Glass {
1739f7611fSSimon Glass 	const struct dm_demo_pdata *pdata = dev_get_platdata(dev);
1839f7611fSSimon Glass 
19c6b89f31SMario Six 	printf("Hello from %08x: %s %d\n", (uint)map_to_sysmem(dev), pdata->colour,
2039f7611fSSimon Glass 	       pdata->sides);
2139f7611fSSimon Glass 
2239f7611fSSimon Glass 	return 0;
2339f7611fSSimon Glass }
2439f7611fSSimon Glass 
2539f7611fSSimon Glass static const struct demo_ops simple_ops = {
2639f7611fSSimon Glass 	.hello = simple_hello,
2739f7611fSSimon Glass };
2839f7611fSSimon Glass 
demo_shape_ofdata_to_platdata(struct udevice * dev)2954c5d08aSHeiko Schocher static int demo_shape_ofdata_to_platdata(struct udevice *dev)
3039f7611fSSimon Glass {
3139f7611fSSimon Glass 	/* Parse the data that is common with all demo devices */
3239f7611fSSimon Glass 	return demo_parse_dt(dev);
3339f7611fSSimon Glass }
3439f7611fSSimon Glass 
35ae7f4513SSimon Glass static const struct udevice_id demo_shape_id[] = {
3639f7611fSSimon Glass 	{ "demo-simple", 0 },
3739f7611fSSimon Glass 	{ },
3839f7611fSSimon Glass };
3939f7611fSSimon Glass 
4039f7611fSSimon Glass U_BOOT_DRIVER(demo_simple_drv) = {
4139f7611fSSimon Glass 	.name	= "demo_simple_drv",
4239f7611fSSimon Glass 	.of_match = demo_shape_id,
4339f7611fSSimon Glass 	.id	= UCLASS_DEMO,
4439f7611fSSimon Glass 	.ofdata_to_platdata = demo_shape_ofdata_to_platdata,
4539f7611fSSimon Glass 	.ops	= &simple_ops,
4639f7611fSSimon Glass 	.platdata_auto_alloc_size = sizeof(struct dm_demo_pdata),
4739f7611fSSimon Glass };
48