Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit3be4bc0

Browse files
committed
Update libmetal to version v2023.10.0 - 1.5.0.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
1 parentc2ad368 commit3be4bc0

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+2630
-2287
lines changed

‎libraries/openamp_arduino/src/device.c‎

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
*/
66

77
#include<string.h>
8-
#include<metal/errno.h>
98
#include<metal/assert.h>
109
#include<metal/device.h>
10+
#include<metal/errno.h>
1111
#include<metal/list.h>
1212
#include<metal/log.h>
1313
#include<metal/sys.h>
@@ -43,11 +43,10 @@ int metal_bus_find(const char *name, struct metal_bus **result)
4343

4444
metal_list_for_each(&_metal.common.bus_list,node) {
4545
bus=metal_container_of(node,structmetal_bus,node);
46-
if (strcmp(bus->name,name)!=0)
47-
continue;
48-
if (result)
46+
if (strcmp(bus->name,name)==0&&result) {
4947
*result=bus;
50-
return0;
48+
return0;
49+
}
5150
}
5251
return-ENOENT;
5352
}
@@ -106,10 +105,10 @@ int metal_generic_dev_open(struct metal_bus *bus, const char *dev_name,
106105

107106
metal_list_for_each(&_metal.common.generic_device_list,node) {
108107
dev=metal_container_of(node,structmetal_device,node);
109-
if (strcmp(dev->name,dev_name)!=0)
110-
continue;
111-
*device=dev;
112-
returnmetal_generic_dev_sys_open(dev);
108+
if (strcmp(dev->name,dev_name)==0) {
109+
*device=dev;
110+
returnmetal_generic_dev_sys_open(dev);
111+
}
113112
}
114113

115114
return-ENODEV;
@@ -122,9 +121,9 @@ int metal_generic_dev_dma_map(struct metal_bus *bus,
122121
intnents_in,
123122
structmetal_sg*sg_out)
124123
{
124+
inti;
125125
(void)bus;
126126
(void)device;
127-
inti;
128127

129128
if (sg_out!=sg_in)
130129
memcpy(sg_out,sg_in,nents_in*(sizeof(structmetal_sg)));
@@ -144,10 +143,10 @@ void metal_generic_dev_dma_unmap(struct metal_bus *bus,
144143
structmetal_sg*sg,
145144
intnents)
146145
{
146+
inti;
147147
(void)bus;
148148
(void)device;
149149
(void)dir;
150-
inti;
151150

152151
for (i=0;i<nents;i++) {
153152
metal_cache_invalidate(sg[i].virt,sg[i].len);
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/*
2+
* Copyright (c) 2015, Xilinx Inc. and Contributors. All rights reserved.
3+
*
4+
* SPDX-License-Identifier: BSD-3-Clause
5+
*/
6+
7+
#include<metal/errno.h>
8+
#include<string.h>
9+
#include<metal/device.h>
10+
#include<metal/log.h>
11+
#include<metal/dma.h>
12+
#include<metal/atomic.h>
13+
14+
intmetal_dma_map(structmetal_device*dev,
15+
uint32_tdir,
16+
structmetal_sg*sg_in,
17+
intnents_in,
18+
structmetal_sg*sg_out)
19+
{
20+
intnents_out;
21+
22+
if (!dev|| !sg_in|| !sg_out)
23+
return-EINVAL;
24+
if (!dev->bus->ops.dev_dma_map)
25+
return-ENODEV;
26+
27+
/* memory barrier */
28+
if (dir==METAL_DMA_DEV_R)
29+
/* If it is device read, apply memory write fence. */
30+
atomic_thread_fence(memory_order_release);
31+
else
32+
/* If it is device write or r/w, apply memory r/w fence. */
33+
atomic_thread_fence(memory_order_acq_rel);
34+
nents_out=dev->bus->ops.dev_dma_map(dev->bus,
35+
dev,dir,sg_in,nents_in,sg_out);
36+
returnnents_out;
37+
}
38+
39+
voidmetal_dma_unmap(structmetal_device*dev,
40+
uint32_tdir,
41+
structmetal_sg*sg,
42+
intnents)
43+
{
44+
/* memory barrier */
45+
if (dir==METAL_DMA_DEV_R)
46+
/* If it is device read, apply memory write fence. */
47+
atomic_thread_fence(memory_order_release);
48+
else
49+
/*If it is device write or r/w, apply memory r/w fence */
50+
atomic_thread_fence(memory_order_acq_rel);
51+
52+
if (!dev|| !dev->bus->ops.dev_dma_unmap|| !sg)
53+
return;
54+
dev->bus->ops.dev_dma_unmap(dev->bus,
55+
dev,dir,sg,nents);
56+
}

‎libraries/openamp_arduino/src/generic_device.c‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
intmetal_generic_dev_sys_open(structmetal_device*dev)
1818
{
1919
structmetal_io_region*io;
20-
unsignedi;
20+
unsignedinti;
2121

2222
/* map I/O memory regions */
2323
for (i=0;i<dev->num_regions;i++) {

‎libraries/openamp_arduino/src/generic_io.c‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ void metal_sys_io_mem_map(struct metal_io_region *io)
1717
size_tpsize;
1818
size_t*va;
1919

20-
va=(size_t*)io->virt;
21-
psize=io->size;
20+
va=io->virt;
21+
psize=(size_t)io->size;
2222
if (psize) {
2323
if (psize >>io->page_shift)
2424
psize= (size_t)1 <<io->page_shift;

‎libraries/openamp_arduino/src/init.c‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ int metal_init(const struct metal_init_params *params)
1111
{
1212
interror=0;
1313

14+
if (_metal.common.ref_count++!=0)
15+
return0;
16+
1417
memset(&_metal,0,sizeof(_metal));
1518

1619
_metal.common.log_handler=params->log_handler;
@@ -24,11 +27,15 @@ int metal_init(const struct metal_init_params *params)
2427
if (error)
2528
returnerror;
2629

30+
++_metal.common.ref_count;
2731
returnerror;
2832
}
2933

3034
voidmetal_finish(void)
3135
{
36+
if (--_metal.common.ref_count!=0)
37+
return;
38+
3239
metal_sys_finish();
3340
memset(&_metal,0,sizeof(_metal));
3441
}

‎libraries/openamp_arduino/src/io.c‎

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,19 @@
44
* SPDX-License-Identifier: BSD-3-Clause
55
*/
66

7-
#include<metal/errno.h>
87
#include<limits.h>
8+
#include<metal/errno.h>
99
#include<metal/io.h>
1010
#include<metal/sys.h>
1111

1212
voidmetal_io_init(structmetal_io_region*io,void*virt,
1313
constmetal_phys_addr_t*physmap,size_tsize,
14-
unsignedpage_shift,unsignedintmem_flags,
14+
unsignedintpage_shift,unsignedintmem_flags,
1515
conststructmetal_io_ops*ops)
1616
{
17-
conststructmetal_io_opsnops= {NULL,NULL,NULL,NULL,NULL,NULL};
17+
conststructmetal_io_opsnops= {
18+
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
19+
};
1820

1921
io->virt=virt;
2022
io->physmap=physmap;
@@ -37,7 +39,7 @@ int metal_io_block_read(struct metal_io_region *io, unsigned long offset,
3739
unsignedchar*dest=dst;
3840
intretlen;
3941

40-
if (offset>io->size)
42+
if (!ptr)
4143
return-ERANGE;
4244
if ((offset+len)>io->size)
4345
len=io->size-offset;
@@ -74,7 +76,7 @@ int metal_io_block_write(struct metal_io_region *io, unsigned long offset,
7476
constunsignedchar*source=src;
7577
intretlen;
7678

77-
if (offset>io->size)
79+
if (!ptr)
7880
return-ERANGE;
7981
if ((offset+len)>io->size)
8082
len=io->size-offset;
@@ -110,7 +112,7 @@ int metal_io_block_set(struct metal_io_region *io, unsigned long offset,
110112
unsignedchar*ptr=metal_io_virt(io,offset);
111113
intretlen=len;
112114

113-
if (offset>io->size)
115+
if (!ptr)
114116
return-ERANGE;
115117
if ((offset+len)>io->size)
116118
len=io->size-offset;
@@ -123,7 +125,7 @@ int metal_io_block_set(struct metal_io_region *io, unsigned long offset,
123125
unsignedinti;
124126

125127
for (i=1;i<sizeof(int);i++)
126-
cint |= ((unsignedint)value << (8*i));
128+
cint |= ((unsignedint)value << (CHAR_BIT*i));
127129

128130
for (;len&& ((uintptr_t)ptr %sizeof(int));ptr++,len--)
129131
*(unsignedchar*)ptr= (unsignedchar)value;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp