live
  *   Kˆl–Ü4ý( ©³( 	Å€fàB¦-ÿÍ874_†I|¥�+ÁÐ j    K/* SPDX-License-Identifier: GPL-2.0 */
/*
 *  Author: Nicolas Pitre
 *
 * Moved and changed lots, Russell King
 *
 * Low level machine dependent UART functions.
 */
#ifndef SA11X0_SERIAL_H
#define SA11X0_SERIAL_H

struct uart_port;
struct uart_info;

/*
 * This is a temporary structure for registering these
 * functions; it is intended to be discarded after boot.
 */
struct sa1100_port_fns {
	void	(*set_mctrl)(struct uart_port *, u_int);
	u_int	(*get_mctrl)(struct uart_port *);
	void	(*pm)(struct uart_port *, u_int, u_int);
	int	(*set_wake)(struct uart_port *, u_int);
};

#ifdef CONFIG_SERIAL_SA1100
void sa1100_register_uart_fns(struct sa1100_port_fns *fns);
void sa1100_register_uart(int idx, int port);
#else
static inline void sa1100_register_uart_fns(struct sa1100_port_fns *fns)
{
}
static inline void sa1100_register_uart(int idx, int port)
{
}
#endif

#endif
     MˆÀÎƒh¹ÁÐ      M0002
  0   Oˆl–Ãa¾”jhŠq@à�q·TÅ£Ï„]Ÿ_‹uÐb&=LV[(ÃÒ -º    Ouse strict;
use warnings;
package Data::OptList;
# ABSTRACT: parse and validate simple name/value option pairs
$Data::OptList::VERSION = '0.110';
use List::Util ();
use Params::Util ();
use Sub::Install 0.921 ();

#pod =head1 SYNOPSIS
#pod
#pod   use Data::OptList;
#pod
#pod   my $options = Data::OptList::mkopt([
#pod     qw(key1 key2 key3 key4),
#pod     key5 => { ... },
#pod     key6 => [ ... ],
#pod     key7 => sub { ... },
#pod     key8 => { ... },
#pod     key8 => [ ... ],
#pod   ]);
#pod
#pod ...is the same thing, more or less, as:
#pod
#pod   my $options = [
#pod     [ key1 => undef,        ],
#pod     [ key2 => undef,        ],
#pod     [ key3 => undef,        ],
#pod     [ key4 => undef,        ],
#pod     [ key5 => { ... },      ],
#pod     [ key6 => [ ... ],      ],
#pod     [ key7 => sub { ... },  ],
#pod     [ key8 => { ... },      ],
#pod     [ key8 => [ ... ],      ],
#pod   ]);
#pod
#pod =head1 DESCRIPTION
#pod
#pod Hashes are great for storing named data, but if you want more than one entry
#pod for a name, you have to use a list of pairs.  Even then, this is really boring
#pod to write:
#pod
#pod   $values = [
#pod     foo => undef,
#pod     bar => undef,
#pod     baz => undef,
#pod     xyz => { ... },
#pod   ];
#pod
#pod Just look at all those undefs!  Don't worry, we can get rid of those:
#pod
#pod   $values = [
#pod     map { $_ => undef } qw(foo bar baz),
#pod     xyz => { ... },
#pod   ];
#pod
#pod Aaaauuugh!  We've saved a little typing, but now it requires thought to read,
#pod and thinking is even worse than typing... and it's got a bug!  It looked right,
#pod didn't it?  Well, the C<< xyz => { ... } >> gets consumed by the map, and we
#pod don't get the data we wanted.
#pod
#pod With Data::OptList, you can do this instead:
#pod
#pod   $values = Data::OptList::mkopt([
#pod     qw(foo bar baz),
#pod     xyz => { ... },
#pod   ]);
#pod
#pod This works by assuming that any defined scalar is a name and any reference
#pod following a name is its value.
#pod
#pod =func mkopt
#pod
#pod   my $opt_list = Data::OptList::mkopt($input, \%arg);
#pod
#pod Valid arguments are:
#pod
#pod   moniker        - a word used in errors to describe the opt list; encouraged
#pod   require_unique - if true, no name may appear more than once
#pod   must_be        - types to which opt list values are limited (described below)
#pod   name_test      - a coderef used to test whether a value can be a name
#pod                    (described below, but you probably don't want this)
#pod
#pod This produces an array of arrays; the inner arrays are name/value pairs.
#pod Values will be either "undef" or a reference.
#pod
#pod Positional parameters may be used for compatibility with the old C<mkopt>
#pod interface:
#pod
#pod   my $opt_list = Data::OptList::mkopt($input, $moniker, $req_uni, $must_be);
#pod
#pod Valid values for C<$input>:
#pod
#pod  undef    -> []
#pod  hashref  -> [ [ key1 => value1 ] ... ] # non-ref values become undef
#pod  arrayref -> every name followed by a non-name becomes a pair: [ name => r