summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-01-18 15:50:55 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2016-01-18 15:50:55 -0500
commitd90f351a9bec6af3e8e7cefbbff94072461c3c9a (patch)
tree71db07e8820b63a60fefcd7e3d1f044450a4b55d /arch
parentc1a198d9235b9e7d6942027374e44f78ebdcb455 (diff)
parent238d1c6041ebcb5ce7c075b696f6cc9962991e94 (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/egtvedt/linux-avr32
Pull AVR32 updates from Hans-Christian Noren Egtvedt. * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/egtvedt/linux-avr32: mmc: atmel: get rid of struct mci_dma_data mmc: atmel-mci: restore dma on AVR32 avr32: wire up missing syscalls avr32: wire up accept4 syscall
Diffstat (limited to 'arch')
-rw-r--r--arch/avr32/include/uapi/asm/unistd.h4
-rw-r--r--arch/avr32/kernel/syscall_table.S4
-rw-r--r--arch/avr32/mach-at32ap/at32ap700x.c31
3 files changed, 31 insertions, 8 deletions
diff --git a/arch/avr32/include/uapi/asm/unistd.h b/arch/avr32/include/uapi/asm/unistd.h
index bbe2fba565cd..b60132bb27ea 100644
--- a/arch/avr32/include/uapi/asm/unistd.h
+++ b/arch/avr32/include/uapi/asm/unistd.h
@@ -333,5 +333,9 @@
333#define __NR_memfd_create 318 333#define __NR_memfd_create 318
334#define __NR_bpf 319 334#define __NR_bpf 319
335#define __NR_execveat 320 335#define __NR_execveat 320
336#define __NR_accept4 321
337#define __NR_userfaultfd 322
338#define __NR_membarrier 323
339#define __NR_mlock2 324
336 340
337#endif /* _UAPI__ASM_AVR32_UNISTD_H */ 341#endif /* _UAPI__ASM_AVR32_UNISTD_H */
diff --git a/arch/avr32/kernel/syscall_table.S b/arch/avr32/kernel/syscall_table.S
index c3b593bfc3b3..1915a443b491 100644
--- a/arch/avr32/kernel/syscall_table.S
+++ b/arch/avr32/kernel/syscall_table.S
@@ -334,4 +334,8 @@ sys_call_table:
334 .long sys_memfd_create 334 .long sys_memfd_create
335 .long sys_bpf 335 .long sys_bpf
336 .long sys_execveat /* 320 */ 336 .long sys_execveat /* 320 */
337 .long sys_accept4
338 .long sys_userfaultfd
339 .long sys_membarrier
340 .long sys_mlock2
337 .long sys_ni_syscall /* r8 is saturated at nr_syscalls */ 341 .long sys_ni_syscall /* r8 is saturated at nr_syscalls */
diff --git a/arch/avr32/mach-at32ap/at32ap700x.c b/arch/avr32/mach-at32ap/at32ap700x.c
index b4cb3bd89d8a..bf445aa48282 100644
--- a/arch/avr32/mach-at32ap/at32ap700x.c
+++ b/arch/avr32/mach-at32ap/at32ap700x.c
@@ -17,7 +17,6 @@
17#include <linux/spi/spi.h> 17#include <linux/spi/spi.h>
18#include <linux/usb/atmel_usba_udc.h> 18#include <linux/usb/atmel_usba_udc.h>
19 19
20#include <linux/platform_data/mmc-atmel-mci.h>
21#include <linux/atmel-mci.h> 20#include <linux/atmel-mci.h>
22 21
23#include <asm/io.h> 22#include <asm/io.h>
@@ -1321,11 +1320,26 @@ static struct clk atmel_mci0_pclk = {
1321 .index = 9, 1320 .index = 9,
1322}; 1321};
1323 1322
1323static bool at32_mci_dma_filter(struct dma_chan *chan, void *pdata)
1324{
1325 struct dw_dma_slave *sl = pdata;
1326
1327 if (!sl)
1328 return false;
1329
1330 if (sl->dma_dev == chan->device->dev) {
1331 chan->private = sl;
1332 return true;
1333 }
1334
1335 return false;
1336}
1337
1324struct platform_device *__init 1338struct platform_device *__init
1325at32_add_device_mci(unsigned int id, struct mci_platform_data *data) 1339at32_add_device_mci(unsigned int id, struct mci_platform_data *data)
1326{ 1340{
1327 struct platform_device *pdev; 1341 struct platform_device *pdev;
1328 struct mci_dma_data *slave; 1342 struct dw_dma_slave *slave;
1329 u32 pioa_mask; 1343 u32 pioa_mask;
1330 u32 piob_mask; 1344 u32 piob_mask;
1331 1345
@@ -1344,17 +1358,18 @@ at32_add_device_mci(unsigned int id, struct mci_platform_data *data)
1344 ARRAY_SIZE(atmel_mci0_resource))) 1358 ARRAY_SIZE(atmel_mci0_resource)))
1345 goto fail; 1359 goto fail;
1346 1360
1347 slave = kzalloc(sizeof(struct mci_dma_data), GFP_KERNEL); 1361 slave = kzalloc(sizeof(*slave), GFP_KERNEL);
1348 if (!slave) 1362 if (!slave)
1349 goto fail; 1363 goto fail;
1350 1364
1351 slave->sdata.dma_dev = &dw_dmac0_device.dev; 1365 slave->dma_dev = &dw_dmac0_device.dev;
1352 slave->sdata.src_id = 0; 1366 slave->src_id = 0;
1353 slave->sdata.dst_id = 1; 1367 slave->dst_id = 1;
1354 slave->sdata.src_master = 1; 1368 slave->src_master = 1;
1355 slave->sdata.dst_master = 0; 1369 slave->dst_master = 0;
1356 1370
1357 data->dma_slave = slave; 1371 data->dma_slave = slave;
1372 data->dma_filter = at32_mci_dma_filter;
1358 1373
1359 if (platform_device_add_data(pdev, data, 1374 if (platform_device_add_data(pdev, data,
1360 sizeof(struct mci_platform_data))) 1375 sizeof(struct mci_platform_data)))