77#include <linux/clk-provider.h>
88#include <linux/dma-mapping.h>
99#include <linux/dmaengine.h>
10+ #include <linux/gpio-pxa.h>
1011#include <linux/platform_data/i2c-pxa.h>
1112#include <linux/soc/pxa/cpu.h>
1213
1718#include <linux/platform_data/usb-ohci-pxa27x.h>
1819#include <linux/platform_data/mmp_dma.h>
1920
21+ #include "mfp-pxa2xx.h"
2022#include "regs-ost.h"
2123#include "reset.h"
2224#include "devices.h"
@@ -46,7 +48,7 @@ struct platform_device pxa_device_pmu = {
4648 .num_resources = 1 ,
4749};
4850
49- static struct resource pxamci_resources [] = {
51+ static const struct resource pxamci_resources [] = {
5052 [0 ] = {
5153 .start = 0x41100000 ,
5254 .end = 0x41100fff ,
@@ -59,22 +61,26 @@ static struct resource pxamci_resources[] = {
5961 },
6062};
6163
62- static u64 pxamci_dmamask = 0xffffffffUL ;
63-
64- struct platform_device pxa_device_mci = {
65- .name = "pxa2xx-mci" ,
66- .id = 0 ,
67- .dev = {
68- .dma_mask = & pxamci_dmamask ,
69- .coherent_dma_mask = 0xffffffff ,
70- },
71- .num_resources = ARRAY_SIZE (pxamci_resources ),
72- .resource = pxamci_resources ,
73- };
74-
75- void __init pxa_set_mci_info (struct pxamci_platform_data * info )
64+ void __init pxa_set_mci_info (const struct pxamci_platform_data * info ,
65+ const struct property_entry * props )
7666{
77- pxa_register_device (& pxa_device_mci , info );
67+ const struct platform_device_info mci_info = {
68+ .name = "pxa2xx-mci" ,
69+ .id = 0 ,
70+ .res = pxamci_resources ,
71+ .num_res = ARRAY_SIZE (pxamci_resources ),
72+ .data = info ,
73+ .size_data = sizeof (* info ),
74+ .dma_mask = 0xffffffffUL ,
75+ .properties = props ,
76+ };
77+ struct platform_device * mci_dev ;
78+ int err ;
79+
80+ mci_dev = platform_device_register_full (& mci_info );
81+ err = PTR_ERR_OR_ZERO (mci_dev );
82+ if (err )
83+ pr_err ("Unable to create mci device: %d\n" , err );
7884}
7985
8086static struct pxa2xx_udc_mach_info pxa_udc_info = {
@@ -627,6 +633,11 @@ struct platform_device pxa27x_device_pwm1 = {
627633};
628634#endif /* CONFIG_PXA27x || CONFIG_PXA3xx */
629635
636+ #if defined(CONFIG_PXA25x ) || defined(CONFIG_PXA27x )
637+ const struct software_node pxa2xx_gpiochip_node = {
638+ .name = "gpio-pxa" ,
639+ };
640+
630641struct resource pxa_resource_gpio [] = {
631642 {
632643 .start = 0x40e00000 ,
@@ -650,19 +661,31 @@ struct resource pxa_resource_gpio[] = {
650661 },
651662};
652663
664+ static struct pxa_gpio_platform_data pxa2xx_gpio_info = {
665+ .irq_base = PXA_GPIO_TO_IRQ (0 ),
666+ .gpio_set_wake = gpio_set_wake ,
667+ };
668+
653669struct platform_device pxa25x_device_gpio = {
654670 .name = "pxa25x-gpio" ,
655671 .id = -1 ,
656672 .num_resources = ARRAY_SIZE (pxa_resource_gpio ),
657673 .resource = pxa_resource_gpio ,
674+ .dev = {
675+ .platform_data = & pxa2xx_gpio_info ,
676+ },
658677};
659678
660679struct platform_device pxa27x_device_gpio = {
661680 .name = "pxa27x-gpio" ,
662681 .id = -1 ,
663682 .num_resources = ARRAY_SIZE (pxa_resource_gpio ),
664683 .resource = pxa_resource_gpio ,
684+ .dev = {
685+ .platform_data = & pxa2xx_gpio_info ,
686+ },
665687};
688+ #endif /* CONFIG_PXA25x || CONFIG_PXA27x */
666689
667690static struct resource pxa_dma_resource [] = {
668691 [0 ] = {
0 commit comments