Function report

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:lib\logic_pio.c Create Date:2022-07-28 06:16:31
Last Modify:2020-03-12 14:18:49 Copyright©Brick
home page Tree
Annotation kernel can get tool activityDownload SCCTChinese

Name:logic_pio_register_range - register logical PIO range for a host*@new_range: pointer to the IO range to be registered.* Returns 0 on success, the error code in case of failure.* Register a new IO range node in the IO range list.

Proto:int logic_pio_register_range(struct logic_pio_hwaddr *new_range)

Type:int

Parameter:

TypeParameterName
struct logic_pio_hwaddr *new_range
39  mmio_end = 0
40  iio_sz = MMIO_UPPER_LIMIT
41  ret = 0
43  If Not new_range || Not fwnode || Not range size populated || flags == LOGIC_PIO_INDIRECT && Not ops Then Return -EINVAL
47  start = hw_start
48  end = hw_start + range size populated
50  mutex_lock( & io_range_mutex)
52  If fwnode == fwnode Then
54  Go to end_register
56  If flags == LOGIC_PIO_CPU_MMIO && flags == LOGIC_PIO_CPU_MMIO Then
62  Else
63  ret = -EFAULT
64  Go to end_register
66  Else if flags == LOGIC_PIO_INDIRECT && flags == LOGIC_PIO_INDIRECT Then
68  iio_sz += range size populated
73  If flags == LOGIC_PIO_CPU_MMIO Then
76  If mmio_end + SZ_64K - 1 > MMIO_UPPER_LIMIT Then
77  ret = -E2BIG
78  Go to end_register
81  pr_warn("Requested IO range too big, new size set to 64K\n")
83  io_start = mmio_end
84  Else if flags == LOGIC_PIO_INDIRECT Then
86  ret = -E2BIG
87  Go to end_register
89  io_start = iio_sz
90  Else
92  ret = -EINVAL
93  Go to end_register
96  list_add_tail_rcu - add a new entry to rcu-protected list*@new: new entry to be added*@head: list head to add it before* Insert a new entry before the specified head
98  end_register :
99  mutex_unlock( & io_range_mutex)
100  Return ret