text:
Bay & Burg
Life and politics from the Sunshine State's best city
Capitol preview: What to expect this week in Florida politics
Published on January 30, 2012 in Uncategorized by Peter Schorsch
Three major pieces of legislation arrive on the floor of one chamber or the other this week. The big legislative news this week won't come until Friday, when the House votes on the final maps in the once-in-a-decade redistricting process. That would leave only a final Senate vote between the maps and their respective destinations — the legislative plan heading to the Florida Supreme Court and the congressional map going to Gov. Rick Scott. The House is in Friday afternoon for the vote after bringing them to the floor Thursday.
In the Senate, two highly controversial bills come to the floor on Tuesday for discussion and questions before debate and likely votes on Wednesday. One is the Senate's prison privatization bill (SB 2038), the other is a bill that would allow school districts to approve inspirational messages at certain events (SB 98).
The House will give the budget its first full look this week in the Appropriations Committee.
Of course the politics of the week may overshadow everything, with Tuesday's presidential primary. Many Florida Republicans have already voted, but they have until close of polls Tuesday if they haven't. Voters in two north Florida counties, Gadsden and Washington, also will be deciding on whether to allow slots at two pari-mutuel facilities.
A round-up via The News Service of Florida.
CITRUS AND HORSES: The Senate Agriculture Committee starts its day off with orange juice. Actually, it's a bill that has significant changes to the Florida Citrus Code, though all the changes were essentially agreed to last summer by an advisory committee made up of industry organizations, individual growers, and other stakeholders. Some of the main changes are new qualification requirements for members of the Citrus Commission, and staggered 3-year terms, instead of terms that all run the same. The bill also requires the Department of Citrus to be staffed 40 hours a week, 5 days a week, rather than allowing some of the flex schedules the agency has used in the past. The bill (SB 1648) also gives the commission new powers to adopt rules establishing quality standards for citrus and citrus products that are "designed to increase the acceptance and consumption by the consuming public of such regulated citrus fruits and food products of citrus." The bill says the agency can set out color standards for oranges, for example, along with juice content requirements. The committee also hears a presentation on the impact of the equestrian industry in Florida. (Monday, 10 a.m., 37 Senate Office Building, The Capitol.)
CAP AND TRADE REPEAL: A bill (SB 1648) that would repeal a law that could lead to using a "cap and trade" system for limiting greenhouse gas emissions is the most controversial measure before Senate Communications, Energy and Public Utilities on Monday morning. The law, which was pushed by former Gov. Charlie Crist in 2008, hasn't actually been used to pursue a cap and trade incentive system for cutting emissions, but opponents of that approach say the law could be. That bill is SB 648. The panel also takes up a major piece of energy legislation (SPB 7202) that adds renewable energy factors into what must be considered when utility regulators review power companies' 10-year site plans, renews a sales tax exemption on renewable fuel materials, and renewable energy tax credits, among other issues. (Monday, 10 a.m., 110 Senate Office Building, The Capitol.)
PUBLIC HOSPITALS, LOCAL BIZ TAXES: A measure dealing with the sale of public hospitals to private sector buyers (SB 1568) is before the Senate Community Affairs Committee Monday, along with a bill (SB 760) that would repeal the law that allows local municipalities to levy a business tax. That same bill has stalled a bit in the House, but continues to move in the Senate. The committee has another measure that has drawn controversy, a proposed constitutional amendment (SJR 1070) that would create term limits for local county commissioners and constitutional officers. The committee also considers legislation (SB 1322) that seeks to end Miami-Dade County's dangerous dog law – a ban on owning pit bulls in that county. (Monday, 10 a.m., 412 Knott Building, The Capitol.)
SENATE RULES: A wide-ranging elections bill (SB 1596) goes before the Senate Rules Committee Monday. The measure repeals a ban on using certain addresses as a way to confirm a voter's legal residence, requires new disclosures on fundraiser tickets, and makes some technical changes to campaign treasury requirements. (Monday, 1 p.m., 110 Senate Office Building, The Capitol.)
FULL AGENDA FOR SENATE ED: The Senate Education PreK-12 Committee, takes up a number of bills, including: SB 756, which would require middle-school courses in career and education planning include "Florida's Career Clusters" and establish requirements for career high school diplomas; SB 1704, which would create the Sunshine Independent Athletic Association to govern private-school athletics; and SB 1852, which overhauls the state's charter school law to allow high-performing charter schools to create three new schools a year, up from one, and increase their size and the number of grade levels offered. (Monday, 3:30 p.m., 301 Senate Office Building, The Capitol)
BARKING UP THE RIGHT TREE (FROG) The Senate Environmental Preservation and Conservation Committee on Monday takes up a number of measures including a perennial issue for Sen. Steve Oelrich, R-Cross Creek, to name the barking tree frog the state's official amphibian. On a more serious note, the panel will take up the SB 2060, which allows the state to set numeric standards for water pollution levels. The panel also hears a couple of water bills. SB 1178 would extend the duration of consumptive use permits from 20 years to 30 years for alternative water sources, which include utilities and municipal sources. Another measure, SB 1858, would make it easier for the state to enter contracts with private landowners for water storage. The panel also takes up SB 604, which would restrict local governments from enforcing strict ordinances dealing with fertilizer application. (Monday, 3:30 p.m. 110 Senate Office Building, The Capitol.)
SNAPPING UP BETTER FOOD: The House Health & Human Services Access Subcommittee will consider a proposal (HB 1401) that would put more restrictions on food purchases by beneficiaries of the Supplemental Nutrition Assistance Program. So-called SNAP funds could not be used, for example, to buy soda, candy, doughnuts, pretzels and potato chips. (Monday, 2 p.m., 212 Knott Building, the Capitol.)
EXCESS PROFITS: The House Insurance and Banking Subcommittee takes up a measure to allow workers' compensation insurers to keep excess profits they received from premiums paid by businesses. Since 2003, workers' compensation insurers have returned $200 million in excess profits to businesses. The measure, HB 4169, would allow them to keep it. The committee also takes up HB 1065, which expands disclosure requirements when annuities are sold to consumers. The panels also takes on fraud in the check cashing industry with HB 1277, which boosts enforcement and reporting requirements for more than 1,000 check cashing facilities. (Monday, 2 p.m., 404 House Office Building, the Capitol.)
TOUGHER PENALTIES FOR CHILD KILLERS: Penalties would be tougher for those convicted of murdering someone under age 17 regardless of whether killer knew the age of the victim under a bill (HB 583) in the Justice Appropriations Subcommittee in the House on Monday. The panel also considers a bill aimed at keeping the law one step ahead of the drug users in the arms race of the drug war. Last year, lawmakers added certain synthetic marijuana compounds and bath salts to the list of controlled substances. But just since last year, new formulas of synthetic canabinoids and bath salts have been developed that use chemicals not covered in the law. The bill (HB 1175) adds them. (Monday, 2 p.m., 17 House Office Building, The Capitol.)
HOUSE SPECIAL ORDER CALENDAR SET: The House Rules and Calendar Committee meets briefly Monday afternoon to set the special order calendar for the week. (Monday, 5 p.m., 404 House Office Building, The Capitol.)
NCAA PRES SPEAKS IN TALLAHASSEE: National Collegiate Athletic Association (NCAA) President Mark A. Emmert, Ph.D., will speak to the Economic Club of Florida on Monday in Tallahassee. The topic: "Are College Sports Broken?" Emmert is the fifth president of the NCAA and has held the post since October 2010. He is the former president of the University of Washington and chancellor at Louisiana State University. (Monday, 12:10 p.m., lunch at 11:30 a.m., Tallahassee Civic Center, 505 W. Pensacola St., Tallahassee.)
SOUTHERLAND TO PUSH STATE WATER STANDARDS: U.S. Rep. Steve Southerland hosts a news conference in Tallahassee Monday to roll out legislation to make clear that Florida officials, not federal officials, have the power to set numeric nutrient standards for state waters. He'll be joined by Associated Industries President Tom Feeney, Florida Chamber of Commerce President Mark Wilson and others. (Monday, 2 p.m., Front steps of Old Capitol, Tallahassee.)
PRESIDENTIAL PRIMARY: Four Republican candidates are contesting Tuesday's primary election in Florida, seeking the state's 50 delegates, half what they normally would get from the state because it moved its primary up in the calendar drawing a penalty from the national GOP. Mitt Romney is the front runner – having polled in a statistical dead heat with Newt Gingrich last week, but opening up a 38 percent to 29 percent lead on Gingrich in a Quinnipiac University poll out Friday. Romney performed well in Florida in 2008 — getting 31 percent of the vote but losing to U.S. Sen. John McCain — and has used his fundraising advantage to saturate airwaves in critical central Florida. Gingrich is considered to still have a chance, but it appeared to be dwindling heading into the weekend. Three other polls released this week, robopolls from Rasmussen Reports and InsiderAdvantage and one from Monmouth University, showed Romney up by at least seven percentage points. It's also thought to be critical for Romney to do well in Florida after having lost South Carolina to Gingrich and having Iowa removed from his win column this past week. Former Pennsylvania Sen. Rick Santorum, has appeared unable to ride his after-the-fact Iowa win to lasting success and he and Ron Paul are simply trying to remain factors in the race. Paul, whose foreign policy views don't mesh well with a large number of military veterans and active military Republicans in Florida has all but conceded the state to focus on later contests. Florida's primary is winner take-all. Nearly a half million Florida voters have already cast ballots. (Tuesday.)
SLOTS VOTES IN PANHANDLE: Voters in Gadsden and Washington counties decide Tuesday whether to allow slots at pari-mutuel facilities. There's a question of whether a favorable vote will result in a slots license, but that's likely a matter to be decided in court later. Gadsden County, just west of Tallahassee, has a barrel horse racing facility in Gretna that plans to seek a slots permit if voters say yes. In Washington County, just north of Panama City, the greyhound track in tiny Ebro is awaiting the results, and its owners have said they'd build a hotel and expand their operation if it passes. (Tuesday.)
MORE HHS BUDGET TALK: The Senate Health and Human Services Appropriations Subcommittee will continue discussions about 2012-13 budget issues and take public testimony. Chairman Joe Negron, R-Stuart, is working on a budget proposal that he said will involve about $850 million in cuts. (Tuesday, 8 a.m., 110 Senate Office Building, the Capitol.)
JUSTICE BUDGET: The Senate continues to review law enforcement agency budgets, and takes up legislation asking voters to raise the constitutional retirement age for judges and justices (SJR 408) and a bill (SB 488) that sets out required charges for certain animal control and cruelty violations at the local level with the money going for spay and neuter programs. (Tuesday, 8 a.m., 37 Senate Office Building, The Capitol.)
SENATE ED FUNDING COMMITTEE TAKES UP CONCUSSIONS (POSSIBLY) Sen. Anitere Flores' attempt to reduce school sports head injuries continues with a bill (SB 256) requiring parents and coaches get more information about the dangers and requiring athletes be pulled after suspected head injuries until they can be checked out is back on the agenda for the Senate Budget Subcommittee on Education PreK-12. The measure was temporarily postponed at the last meeting. The committee is also set to discuss budget issues. (Tuesday, 8 a.m., 412 Knott Building, The Capitol.)
HIGHER ED FUNDING: The Senate Budget Subcommittee on Higher Education Appropriations hears about higher education outcome statistics and discusses budget issues. (Tuesday, 10 a.m., 412 Knott Building, The Capitol)
SENATE IN SESSION – PRISON PRIVATIZATION, SCHOOL PRAYER: The proposal (SB 2038) to require the Department of Corrections to privatize about 30 facilities in 18 Florida counties is on the calendar for discussion on the Senate floor on Tuesday. The Senate also could take up SB 98, which, authorizing district school boards to adopt resolutions that allow inspirational messages, including, but not limited to, prayers of invocation or benediction, at secondary school events. (Tuesday, 1 p.m., Senate Chamber, The Capitol.)
IMMIGRANT TUITION BILL IN SENATE HIGHER ED: The Senate Higher Education Committee takes up SB 1018, which would allow Floridians who are the children of undocumented immigrants to pay in-state tuition at Florida colleges and universities. Among the other items on the agenda: a bill (SB 878) making the performance evaluations of Florida college presidents public records. (Tuesday, 3:30 p.m., 301 Senate Office Building, The Capitol)
DISCHARGING SEPTIC SYSTEM LAW: The Senate Health Regulation Committee will consider a bill (SB 820) that would repeal a law that requires septic-tank inspections. The committee also will consider several other bills, including a proposal (SB 1516) that would make wide-ranging changes in Agency for Persons with Disabilities programs. (Tuesday, 3:30 p.m., 412 Knott, the Capitol.)
LIMITS ON FOOD ASSISTANCE: Convicted felons would find themselves ineligible for food assistance or temporary cash assistance under legislation (SB 1128) before the Senate Children and Families Committee. A measure (SB 320) backing off a bit on new background screening requirements for certain people who work with mental health patients – such as their own family members – is also in the committee. (Tuesday, 3:30 p.m., 401 Senate Office Building, The Capitol.)
HUMAN TRAFFICKING: Increased penalties would come into play for those convicted of human trafficking under a bill (SB 1880) before Senate Criminal Justice. (Tuesday, 3:30 p.m., 37 Senate Office Building, The Capitol.)
OTHER SENATE COMMITTEES:
Senate General Government Appropriations: (8 a.m., 401 Senate Office Building, The Capitol.)
Senate Transportation Appropriations: (10 a.m., 110 Senate Office Building, The Capitol.)
Senate Judiciary: (3:30 p.m., 110 Senate Office Building, The Capitol.)
PUBLIC HOSPITAL SALES REVIEWED: The House Civil Justice Subcommittee will consider a bill (HB 711) that could lead to circuit judges reviewing the sales or leases of public hospitals. Also, the panel is scheduled to take up two controversial abortion bills (HB 839 and HB 1327). (Tuesday, 8 a.m., 404 House Office Building, the Capitol.)
BEES AND BEACHES: The House Agriculture & Natural Resources Appropriations Subcommittee takes up a number or water and permitting issues. HB 663 would double the permit period for qualified solid waste facilities to 20 years. Another measure, HB 1389 tries to make it easier for regional water officials to work with private landowners on water storage issues while another, HB 691, makes it easier to obtain permits for construction and reconstruction along the coastline. Honey bees also get a break. Under HB 1197, the critters get added to the list of bona fide farm animals that can be protected from urban encroachment. (Tuesday, 9 a.m., 102 House Office Building, the Capitol.)
HOUSE COMMUNITY & MILITARY AFFAIRS: Proposed constitutional amendments adding new limits on assessment increases and a new homestead exemption, and a bill (HB 1443) that would make it easier for local governments to shut down pain clinics by declaring them a public nuisance are among several measures before the House Community and Military Affairs Committee. (Tuesday, 9 a.m., 212 Knott Building, The Capitol.)
HOUSE GOVERNMENT OPERATIONS SUBCOMMITTEE: The panel has a lengthy list of bills that include a number of local issues. One of statewide import is HB 337, which sets up guidelines for the creation of public/private partnerships in the construction of public buildings and utilities by private companies. The panel will also hear a measure to reduce the age limit for vesting in the Florida Retirement System for law enforcement and employees in other high risk jobs. The bill would drop the eligible retirement age from 60 years old and 30 years of service to 55 years of age or 25 years of service. The bill attempts to undo what lawmakers passed last year. (Tuesday, 9 a.m. 306 House Office Building, the Capitol.)
COMPETITIVENESS SUBCOMMITEE ON ATHLETICS, EARLY LEARNING: The House K-20 Competitiveness considers HB 1403, a measure that doubles the maximum size of private schools whose students can participate in public high-school athletics, allows charter schools, virtual schools and home-school cooperatives to join the Florida High School Athletics Association and eases the transfer rules for student-athletes. The panel also takes up a proposed committee bill (KCOS 12-01) that would require the auditor general to audit early-learning coalitions while repealing credential requirements for VPK instructors and the section of law creating the Florida Early Learning Advisory Council. (Tuesday, 9 a.m., 17 House Office Building, The Capitol)
HOUSE PREK-12 APPROPS HAS SWEEPING EDUCATION MEASURE: The House PreK-12 Appropriations Committee takes up a bill (HB 7059) that would allow students who have completed 24 credits to graduate early and receive Bright Futures; would tie funding for must-pass courses to student performance on tests in those subjects; and would set or clarify eligibility rules for Advanced Placement and dual-enrollment programs. Another measure on the agenda (HB 465) would give school districts more flexibility on the length of and payment plans for bonds. (Tuesday, 12:30 p.m., 17 House Office Buildings, The Capitol)
HEALTH CARE REGULATIONS EYED: The House Health & Human Services Quality Subcommittee will take up two bills (HB 787 and HB 1419) that include a series of changes for nursing homes and other types of health-care facilities. (Tuesday, 12:30 p.m., Reed Hall, the Capitol.)
HOUSE CRIMINAL JUSTICE: The House Criminal Justice Sub has a long list of bills available, including legislation dealing with sexual predators (HB 1097), parole for juveniles (HB 5), offenses against unborn children (HB 137), and expunction of juvenile records (HB 497). (Tuesday, 12:30 p.m., 404 House Office Building, The Capitol.)
HOUSE ENERGY AND UTILITIES: The House Energy & Utilities Sub on Tuesday considers a bill (HB 743) providing that a portion of the money from a local government infrastructure surtax could be used for loans, grants and rebates to homeowners who make energy efficiency improvements. The panel also tries to bring the communications services tax law up to date by changing "cable service" to "video service" – envisioning more Internet television – and making other changes (HB 809). (Tuesday, 12:30 p.m., 404 House Office Building, The Capitol.)
HOUSE EDUCATION INNOVATION MEETING: The House K-20 Innovation Subcommittee meets to consider a measure (HB 903) that would toughen standards on charter schools, including requiring the sponsor of a charter school to terminate its charter if the school receives an "F" grade in two of three years and order the education commissioner to review "high-performing" charter schools' eligibility for the designation. Also on the agenda: A proposed constitutional amendment (HJR 931) that would allow the governor to appoint the student representative to the Board of Governors, instead of automatically giving that selection an organization that doesn't include Florida State University, and a bill (HB 1465) making the performance evaluations of Florida college presidents public records. (Tuesday, 3:30 p.m., 404 House Office Building, The Capitol.)
DOGS AND ZOOS : The House Agriculture and Natural Resources Committee takes up a measure, HB 997, that would abolish Miami-Dade County's dangerous dog ordinance and replace it with a more restrictive statewide standard enacted in 1990. Another bill, HB 1117 would allows accredited zoos to use state-owned land for research, breeding and other activities. Following up on legislation from last year the panel takes up HB 1383, which transfers responsibilities to the Fish and Wildlife Conservation Commission as part of a reorganization approved last year by lawmakers in 2011. (Tuesday 3:30 pm. 102 House Office Building, the Capitol.)
FISH: Local tourist development tax dollars could be used to build a new aquarium or to help maintain any of the state's 25 aquariums under a bill (HB 1015) before the House Business and Consumer Affairs Committee. (Tuesday, 3:30 p.m., 12 House Office Building, The Capitol.)
CITIZENS BILL UP IN HOUSE BUDGET SUB: A measure to change the way losses are paid in the event of a major hurricane comes up before the House Government Operations Appropriations Subcommittee. The measure, HB 1127 would reduce or eliminate some assessments for Citizens Property Insurance Corp. policyholders and shift the repayment of losses by expanding the pool of policyholders who pay. The committee also takes up a pair of bills, HB 887 and HB 221, to make it easier for veterans to start a business or get back on the civilian feet. (Tuesday, 3:30 p.m., 17 House Office Building, the Capitol.)
GETTING PHYSICAL: The House Health Care Appropriations Subcommittee will take up a proposal (HB 799) that would allow the Board of Physical Therapy to grant temporary permits to people who have graduated from programs for physical therapists or physical therapist assistants. (Tuesday, 3:30 p.m., 212 Knott Building, the Capitol.)
TRANSPORTATION: An omnibus transportation bill (HB 1399) is among the measures to be heard Tuesday by the House Transportation Committee. The panel also works on a committee bill (HB 681) dealing with ignition interlock devices that keep habitual drunk drivers from starting a car. (Tuesday, 3:35 p.m., 306 House Office Building, The Capitol.)
Other House committees Tuesday:
Transportation Appropriations: 12:30 p.m., 306 House Office Building, The Capitol.
CHILDREN'S WEEK: FIRST LADY'S BREAKFAST RECEPTION: First Lady Ann Scott hosts a breakfast reception in honor of Children's Week. (Tuesday, 8 a.m., The Governor's Mansion, Tallahassee.)
CHILDREN'S WEEK: Gov. Rick Scott and Department of Children and Families Secretary David Wilkins will hold a news conference to mark Children's Week at the Capitol. (Tuesday, 12 p.m., Courtyard, The Capitol.)
WEDNESDAY, FEB. 1, 2012
FULL SENATE BUDGET COMMITTEE: With no budget allocations yet, the Senate Budget Committee still doesn't have a spending bill to work through. The panel continues to work through individual pieces of legislation with fiscal impacts. It has several mostly non-controversial measures on an expedited consideration calendar. (Wednesday, 9 a.m., 412 Knott Building, The Capitol.,)
OLDER JUDGES: Judges and justices could be a little older if voters are given the chance to change the constitution. The proposed amendment (SJR 408) is in the Senate Criminal and Civil Justice Budget Sub on Wednesday. (Wednesday, 10:15 a.m., 37 Senate Office Building, The Capitol.)
SCHOOL MONEY: The Senate Budget Subcommittee on Education PreK-12 discusses budget issues. (Wednesday, 10:15 a.m., 412 Knott Building, The Capitol)
COLLEGE MONEY: The Senate Budget Subcommittee on Higher Education Appropriations discusses budget issues. (Wednesday, 11:30 a.m., 412 Knott Building, The Capitol)
SENATE IN SESSION: After criticism that it's rushing toward passing a controversial prison privatization proposal, it seems unlikely the Senate will waive its own rules and vote Tuesday on the bill (SB 2038) instead of waiting the customary day between bringing it to the floor and taking a vote, which would set the vote for Wednesday. The school prayer bill (SB 98) also is likely to be taken up for a vote mid-week. (Wednesday, 1:30 p.m., Senate Chamber, The Capitol.)
PUBLIC MEETINGS: The Senate bill (SB 206) that would require that members of the public be given a reasonable opportunity to be heard before a board or commission takes official action on an item of significant interest to the public is before the Senate Gov Oversight Committee on Wednesday. The panel is waiting on a number of other measures that could arrive, including a bill (SB 1358) that would allow, though not require, state agencies to conduct random drug testing of employees. (Wednesday, 3:30 p.m., 110 Senate Office Building, The Capitol.)
Other Senate committees Wednesday:
Finance & Tax: (10:15 a.m., 301 Senate Office Building, The Capitol.)
Gen Govt. Approps: (10:15 a.m., 401 Senate Office Building, The Capitol.)
HHS Approps: (10:15 a.m., 110 Senate Office Building, The Capitol.)
Transportation Approps: (11:30 a.m., 110 Senate Office Building, The Capitol.)
Military Affairs: (3:30 p.m., 37 Senate Office Building, The Capitol.)
HOUSE APPROPRIATIONS TAKES UP BUDGET: The full House Appropriations Committee is scheduled to consider the budget, increasing the pressure on the Senate to move more quickly on its spending plan. House leaders want to finish the session on time, but Senate leaders are more cautious about acting on revenue estimates that would be more than five months old when the new fiscal year begins. (Wednesday, 11 a.m., 212 Knott Building, The Capitol)
THURSDAY, FEB. 2, 2012
HOUSE TACKLES REDISTRICTING: House leaders have scheduled 10 hours of floor time to begin weighing redistricting plans for the House, Senate and the state's congressional districts. Republicans should have the votes to repel any major amendments to the plans, even if Democrats were inclined to offer them after largely allowing the majority party to run the redistricting process. (Thursday, 1 p.m., House Chamber, The Capitol)
FRIDAY, FEB. 3, 2012
HOUSE VOTES ON REDISTRICTING: The House votes on the final maps in the once-in-a-decade redistricting process, with only a final Senate vote standing between the maps and their respective destinations — the legislative plan heading to the Florida Supreme Court and the congressional map going to Gov. Rick Scott for his signature. (Friday, 1 p.m., House Chamber, The Capitol.)
Peter Schorsch
Peter Schorsch is the President of Extensive Enterprises and is the publisher of some of Florida's most influential new media websites, including SaintPetersBlog.com, FloridaPolitics.com, ContextFlorida.com, and Sunburn, the morning read of what's hot in Florida politics. SaintPetersBlog has for three years running been ranked by the Washington Post as the best state-based blog in Florida. In addition to his publishing efforts, Peter is a political consultant to several of the state's largest governmental affairs and public relations firms. Peter lives in St. Petersburg with his wife, Michelle, and their daughter, Ella.
The end for SaintPetersBlog
Rick Baker, Rick Kriseman reload campaign coffers for general election
Takeaways from Tallahassee — FSU takes on campus names, markers
Critical Puerto Rico infrastructure contractor lacks history of results
Receive Peter Schorsch's agenda-setting read of what's hot in Florida politics.
Peter's Latest
Sunburn — The morning read of what's hot in Florida politics — 10.5.17
Exclusive: Major Puerto Rico power restoration project awarded to small, untested vendor
Previous Story Previous post: In response to stories about city not utilizing surveillance cameras, Karl Nurse asking City Council and Mayor to develop plan
Next Story Next post: Here's what Tampa Bay's State House seats look like under the plan passed Friday
All rights reserved. Digital Notices, LLC.


text:
FashionCultureGroomingWatchesGQ HypeLifestyleMen of the Year
EditionBritainChevron
Introducing the Bremont H-4 Hercules Limited-Edition Chronometer
By Bill Prince 20 November 2019
One giant's ill-fated flight has inspired one great watch – and in keeping with its earlier tribute timepieces, Bremont's latest limited-edition aviation watch contains elements of fuselage taken from the legendary 'Spruce Goose'
Often cited as reclusive billionaire and aviation pioneer Howard Hughes' grand folly, the H-4 Hercules military aircraft (dubbed the "Spruce Goose" despite its birchwood construction) was a far-sighted solution to an obstacle the US had found itself facing in supplying aid to war-torn Europe – U-boats in the North Atlantic. Sadly, commissioned too late to make a contribution, it flew once – in 1947 – after which the largest aircraft by dimension ever built was maintained until Hughes' death, then mothballed in Long Beach, California, in 1980.
© Granger/Shutterstock
An aero enthusiast bought it in 1991, took it apart and reassembled it at the Evergreen Aviation & Space Museum in Oregon, where it resides today, intact in all its glory apart from a small hole in its fuselage to allow access to awestruck aviation nuts. The small incision gave up enough of the Spruce Goose's history-making materials to allow Bremont to produce a further limited edition in its famed aeronautical tributes (last year, it marked the 50th anniversary of Concorde's debut flight in similar fashion).
"If you're an aviation bod, which we are, it's in the top handful of aeroplanes," explains Bremont cofounder Nick English of the brand's decision to honour an aircraft with an otherwise ignominious history. It's all about its size: "You cannot quite fathom the scale. [At the museum] there's a DC3 sitting beside it and it looks tiny. It takes a drone 30 seconds to fly from wing tip to wing tip. And it's all made from birch."
In addition to birch, the Bremont H-4 Hercules Limited-Edition Chronometer includes cloth from the fuselage, while scraps of the beach balls that filled each wing in case of ditching (despite it being a seaplane) are used in the packaging.
Three hundred models in black stainless steel will be available, with 75 each of rose-gold and platinum versions. However, in this instance, the choice of metals is beside the point: fly with your Bremont Hercules H-4 and you'll be responsible for returning to the skies a true icon of aviation.
From £9,495. bremont.com
Introducing the new Armed Forces collection from Bremont
The most innovative watches that are keeping the industry ahead of its time
How to buy an heirloom watch
WatchesBremont
Everyone we know is in the insane cast of the new Spider-Man 3
By Thomas Barrie 11 December 2020
The ten hottest new gadgets of 2021
By Michael Sawh 15 January 2021
FacebookInstagramTwitterVeroYouTube
CN TravellerGlamourHouse & GardenJohansensLOVETatlerVanity FairVogueWiredWorld of Interiors

redpajama_set_name: RedPajamaCommonCrawl


the championship, and that was a big turn of fortune for us over past years.
"Overall, everything just came together.
2013 Grand-Am DP drivers' title earned by Max Angelelli and Jordan Taylor certainly had a whiff of that. Five wins anchored their campaign – but aside from a second-place at the season-opening Rolex 24, the duo didn't take another podium all season.
With four Grand-Am DP drivers' titles in the five seasons before 2013, including three straight from 2010-' 12, Ganassi's Scott Pruett and Memo Rojas are a sports car dynasty. Winning the final DP title was sweet enough for Max Angelelli and Jordan Taylor, but dethroning the kings to do it was added luster.
year of the Corvette bodywork, which happened very late for us," says Taylor.
"Quite honestly, at the start of the season we had serious issues with the car. But toward the end of the year we started getting our heads around it and won the last race.
final impetus to seal the deal.
(FAR LEFT) The No. 10 heads to its first of five wins, at Barber. (LEFT) Wayne Taylor rocks out with son Jordan and Max Angelelli at Kansas. (ABOVE) A win in Detroit was sweet for the Chevy-powered team.


Cisco Global Cloud Index: Marketing Spin Or Cloud Fact?
When you compete in a crowded market, you need to find a creative way to rise above the noise. In Cisco Systems' case, the networking giant has launched the Cisco Global Cloud Index. But what exactly is the index — and what need does it potentially fill for cloud services providers (CSPs) and their customers?
Using the index, Cisco claims that global cloud computing traffic will reach 1.6 zettabytes in 2015 and global cloud traffic will exceed one-third of all data center traffic by 2015. Or put another way: Global cloud computing traffic will have a 66 percent compound annual growth rate from 2011 to 2015, Cisco claims.
Naturally, Cisco hopes customers connect the dots between the Global Cloud Index and IT spending — especially if the index can drive demand for Cisco's Unified Computing System (UCS). Moreover, Cisco is seeking to drive demand for its cloud partner program — which is designed for cloud resellers, cloud builders and cloud services providers.
I'm always skeptical of vendor-produced research. But Cisco's methodology seems pretty darn intensive.


Situated on an award-winning golf resort on the Costa Blanca, these 3 bedroom 3 bathroom villas are a perfect investment, replete with an on-site restaurant, sushi bar, supermarket, tennis courts and more. There are over 20 golf courses within 30 minutes and there are a large number of marinas nearby. The resort is 4.5km from the coast and 40 minutes from Alicante airport. It is extremely well connected by road, air and train. There is also a beach club for which residents have exclusive access.


All of our bar stock is precision cast producing even thicknesses and widths.
High resistance to abrasion and impact.
Resistant to many chemical compounds.
Broad hardness ranging from 10 shore A to 95 shore D.Red, natural, and black are the standard and other colors are available upon request. Urethane is abrasion and cut resistant. Urethane is chemical and oil resistant. Urethane is machineable and resilient .Urethane has a lower tooling cost, has a high load bearing capacity and has elastic memory.
These tolerances cover all stocked products except where noted. Please advise factory if a closer tolerance is required.
Polyurethane Bar is often used as a replacement for rubber components and provides an obvious upgrade over the traditional material. Polyurethane has a much improved resistance to wear and can out last other materials by as much as four times.
Another advantage is the performance during load and compression, Polyurethane will out perform rubber which will often permanently deform much sooner resulting in the associated components, often vehicle suspension parts becoming loose and causing lack of control and often expensive damage. Its resistance to aging or perishing, rubber will often degrade over sometimes a short period of time, but this can often be accelerated in UV exposure and the contact with oils and fuels.
Polyurethane Bar is also much more resistant to cutting with sharp edges as well as much more impact resistant.
Urethane square bar stock can be used as a substitute spacer for wood, plastic, or metal. The urethane offers flexibility and different hardness. Polyurethane bar stock can also be cut into smaller parts, pads, and bumpers. Using our urethane square bar stock for small volume parts avoids investment in a costly mold or tool.
Urethanes have better abrasion and tear resistance than rubbers, while offering higher load bearing capacity.
Compared to plastics, urethanes offer superior impact resistance, while offering excellent wear properties and elastic memory.
Urethanes have replaced metals in sleeve bearings, wear plates, sprockets, rollers, and various other parts, with benefits such as weight reduction, noise abatement, and wear improvements being realized.
Urethane Stock, a subsidiary of Universal Urethane Products, is a leading manufacturer polyurethane round rod stock, polyurethane flat sheet stock and polyurethane square bar stock. Offering many sizes, colors, and the availability of having custom options as well, you'll be sure Urethane Stock is able to find the right polyurethane solution for you.


text:
#include "InternalIsaIo.h"

//
// Module Variables
//
EFI_ISA_IO_PROTOCOL mIsaIoInterface = {
  {
    IsaIoMemRead,
    IsaIoMemWrite
  },
  {
    IsaIoIoRead,
    IsaIoIoWrite
  },
  IsaIoCopyMem,
  IsaIoMap,
  IsaIoUnmap,
  IsaIoAllocateBuffer,
  IsaIoFreeBuffer,
  IsaIoFlush,
  NULL,
  0,
  NULL
};

EFI_ISA_DMA_REGISTERS  mDmaRegisters[8] = {
  {
    0x00,
    0x87,
    0x01
  },
  {
    0x02,
    0x83,
    0x03
  },
  {
    0x04,
    0x81,
    0x05
  },
  {
    0x06,
    0x82,
    0x07
  },
  {
    0x00,
    0x00,
    0x00
  },  // Channel 4 is invalid
  {
    0xC4,
    0x8B,
    0xC6
  },
  {
    0xC8,
    0x89,
    0xCA
  },
  {
    0xCC,
    0x8A,
    0xCE
  },
};

/**
  Initializes an ISA I/O Instance

  @param[in] IsaIoDevice            The iso device to be initialized.
  @param[in] IsaDeviceResourceList  The resource list.

**/
VOID
InitializeIsaIoInstance (
  IN ISA_IO_DEVICE               *IsaIoDevice,
  IN EFI_ISA_ACPI_RESOURCE_LIST  *IsaDeviceResourceList
  )
{
  //
  // Use the ISA IO Protocol structure template to initialize the ISA IO instance
  //
  CopyMem (
    &IsaIoDevice->IsaIo,
    &mIsaIoInterface,
    sizeof (EFI_ISA_IO_PROTOCOL)
    );

  IsaIoDevice->IsaIo.ResourceList = IsaDeviceResourceList;
}

/**
  Performs an ISA I/O Read Cycle

  @param[in]  This              A pointer to the EFI_ISA_IO_PROTOCOL instance.
  @param[in]  Width             Specifies the width of the I/O operation.
  @param[in]  Offset            The offset in ISA I/O space to start the I/O operation.
  @param[in]  Count             The number of I/O operations to perform.
  @param[out] Buffer            The destination buffer to store the results

  @retval EFI_SUCCESS           The data was read from the device sucessfully.
  @retval EFI_UNSUPPORTED       The Offset is not valid for this device.
  @retval EFI_INVALID_PARAMETER Width or Count, or both, were invalid.
  @retval EFI_OUT_OF_RESOURCES  The request could not be completed due to a lack of resources.
**/
EFI_STATUS
EFIAPI
IsaIoIoRead (
  IN  EFI_ISA_IO_PROTOCOL        *This,
  IN  EFI_ISA_IO_PROTOCOL_WIDTH  Width,
  IN  UINT32                     Offset,
  IN  UINTN                      Count,
  OUT VOID                       *Buffer
  )
{
  EFI_STATUS    Status;
  ISA_IO_DEVICE *IsaIoDevice;

  IsaIoDevice = ISA_IO_DEVICE_FROM_ISA_IO_THIS (This);

  //
  // Verify Isa IO Access
  //
  Status = IsaIoVerifyAccess (
             IsaIoDevice,
             IsaAccessTypeIo,
             Width,
             Count,
             Offset
             );
  if (EFI_ERROR (Status)) {
    return Status;
  }

  Status = IsaIoDevice->PciIo->Io.Read (
                                    IsaIoDevice->PciIo,
                                    (EFI_PCI_IO_PROTOCOL_WIDTH) Width,
                                    EFI_PCI_IO_PASS_THROUGH_BAR,
                                    Offset,
                                    Count,
                                    Buffer
                                    );

  if (EFI_ERROR (Status)) {
    REPORT_STATUS_CODE (
      EFI_ERROR_CODE | EFI_ERROR_MINOR,
      EFI_IO_BUS_LPC | EFI_IOB_EC_CONTROLLER_ERROR
      );
  }

  return Status;
}

/**
  Performs an ISA I/O Write Cycle

  @param[in] This                A pointer to the EFI_ISA_IO_PROTOCOL instance.
  @param[in] Width               Specifies the width of the I/O operation.
  @param[in] Offset              The offset in ISA I/O space to start the I/O operation.
  @param[in] Count               The number of I/O operations to perform.
  @param[in] Buffer              The source buffer to write data from

  @retval EFI_SUCCESS            The data was writen to the device sucessfully.
  @retval EFI_UNSUPPORTED        The Offset is not valid for this device.
  @retval EFI_INVALID_PARAMETER  Width or Count, or both, were invalid.
  @retval EFI_OUT_OF_RESOURCES   The request could not be completed due to a lack of resources.
**/
EFI_STATUS
EFIAPI
IsaIoIoWrite (
  IN EFI_ISA_IO_PROTOCOL        *This,
  IN EFI_ISA_IO_PROTOCOL_WIDTH  Width,
  IN UINT32                     Offset,
  IN UINTN                      Count,
  IN VOID                       *Buffer
  )
{
  EFI_STATUS    Status;
  ISA_IO_DEVICE *IsaIoDevice;

  IsaIoDevice = ISA_IO_DEVICE_FROM_ISA_IO_THIS (This);

  //
  // Verify Isa IO Access
  //
  Status = IsaIoVerifyAccess (
             IsaIoDevice,
             IsaAccessTypeIo,
             Width,
             Count,
             Offset
             );
  if (EFI_ERROR (Status)) {
    return Status;
  }

  Status = IsaIoDevice->PciIo->Io.Write (
                                    IsaIoDevice->PciIo,
                                    (EFI_PCI_IO_PROTOCOL_WIDTH) Width,
                                    EFI_PCI_IO_PASS_THROUGH_BAR,
                                    Offset,
                                    Count,
                                    Buffer
                                    );

  if (EFI_ERROR (Status)) {
    REPORT_STATUS_CODE (
      EFI_ERROR_CODE | EFI_ERROR_MINOR,
      EFI_IO_BUS_LPC | EFI_IOB_EC_CONTROLLER_ERROR
      );
  }

  return Status;
}

/**
  Writes an 8-bit I/O Port

  @param[in] This                A pointer to the EFI_ISA_IO_PROTOCOL instance.
  @param[in] Offset              The offset in ISA IO space to start the IO operation.
  @param[in] Value               The data to write port.

  @retval EFI_SUCCESS            Success.
  @retval EFI_INVALID_PARAMETER  Parameter is invalid.
  @retval EFI_UNSUPPORTED        The address range specified by Offset is not valid.
  @retval EFI_OUT_OF_RESOURCES   The request could not be completed due to a lack of resources.
**/
EFI_STATUS
WritePort (
  IN EFI_ISA_IO_PROTOCOL  *This,
  IN UINT32               Offset,
  IN UINT8                Value
  )
{
  EFI_STATUS    Status;
  ISA_IO_DEVICE *IsaIoDevice;

  IsaIoDevice = ISA_IO_DEVICE_FROM_ISA_IO_THIS (This);

  Status = IsaIoDevice->PciIo->Io.Write (
                                    IsaIoDevice->PciIo,
                                    EfiPciIoWidthUint8,
                                    EFI_PCI_IO_PASS_THROUGH_BAR,
                                    Offset,
                                    1,
                                    &Value
                                    );
  if (EFI_ERROR (Status)) {
    REPORT_STATUS_CODE (
      EFI_ERROR_CODE | EFI_ERROR_MINOR,
      EFI_IO_BUS_LPC | EFI_IOB_EC_CONTROLLER_ERROR
      );
    return Status;
  }

  gBS->Stall (50);

  return EFI_SUCCESS;
}

/**
  Writes I/O operation base address and count number to a 8 bit I/O Port.

  @param[in] This                A pointer to the EFI_ISA_IO_PROTOCOL instance.
  @param[in] AddrOffset          The address' offset.
  @param[in] PageOffset          The page's offest.
  @param[in] CountOffset         The count's offset.
  @param[in] BaseAddress         The base address.
  @param[in] Count               The number of I/O operations to perform.

  @retval EFI_SUCCESS            Success.
  @retval EFI_INVALID_PARAMETER  Parameter is invalid.
  @retval EFI_UNSUPPORTED        The address range specified by these Offsets and Count is not valid.
  @retval EFI_OUT_OF_RESOURCES   The request could not be completed due to a lack of resources.
**/
EFI_STATUS
WriteDmaPort (
  IN EFI_ISA_IO_PROTOCOL  *This,
  IN UINT32               AddrOffset,
  IN UINT32               PageOffset,
  IN UINT32               CountOffset,
  IN UINT32               BaseAddress,
  IN UINT16               Count
  )
{
  EFI_STATUS  Status;

  Status = WritePort (This, AddrOffset, (UINT8) (BaseAddress & 0xff));
  if (EFI_ERROR (Status)) {
    return Status;
  }

  Status = WritePort (This, AddrOffset, (UINT8) ((BaseAddress >> 8) & 0xff));
  if (EFI_ERROR (Status)) {
    return Status;
  }

  Status = WritePort (This, PageOffset, (UINT8) ((BaseAddress >> 16) & 0xff));
  if (EFI_ERROR (Status)) {
    return Status;
  }

  Status = WritePort (This, CountOffset, (UINT8) (Count & 0xff));
  if (EFI_ERROR (Status)) {
    return Status;
  }

  Status = WritePort (This, CountOffset, (UINT8) ((Count >> 8) & 0xff));
  return Status;
}

/**
  Unmaps a memory region for DMA

  @param[in] This           A pointer to the EFI_ISA_IO_PROTOCOL instance.
  @param[in] Mapping        The mapping value returned from EFI_ISA_IO.Map().

  @retval EFI_SUCCESS       The range was unmapped.
  @retval EFI_DEVICE_ERROR  The data was not committed to the target system memory.
**/
EFI_STATUS
EFIAPI
IsaIoUnmap (
  IN EFI_ISA_IO_PROTOCOL  *This,
  IN VOID                 *Mapping
  )
{
  ISA_MAP_INFO  *IsaMapInfo;

  //
  // Check if DMA is supported.
  //
  if ((PcdGet8 (PcdIsaBusSupportedFeatures) & PCD_ISA_BUS_SUPPORT_DMA) == 0) {
    return EFI_UNSUPPORTED;
  }

  //
  // See if the Map() operation associated with this Unmap() required a mapping
  // buffer.If a mapping buffer was not required, then this function simply
  // returns EFI_SUCCESS.
  //
  if (Mapping != NULL) {
    //
    // Get the MAP_INFO structure from Mapping
    //
    IsaMapInfo = (ISA_MAP_INFO *) Mapping;

    //
    // If this is a write operation from the Agent's point of view,
    // then copy the contents of the mapped buffer into the real buffer
    // so the processor can read the contents of the real buffer.
    //
    if (IsaMapInfo->Operation == EfiIsaIoOperationBusMasterWrite) {
      CopyMem (
        (VOID *) (UINTN) IsaMapInfo->HostAddress,
        (VOID *) (UINTN) IsaMapInfo->MappedHostAddress,
        IsaMapInfo->NumberOfBytes
        );
    }
    //
    // Free the mapped buffer and the MAP_INFO structure.
    //
    gBS->FreePages (IsaMapInfo->MappedHostAddress, IsaMapInfo->NumberOfPages);
    FreePool (IsaMapInfo);
  }

  return EFI_SUCCESS;
}

/**
  Flushes any posted write data to the system memory.

  @param[in] This             A pointer to the EFI_ISA_IO_PROTOCOL instance.

  @retval  EFI_SUCCESS        The buffers were flushed.
  @retval  EFI_DEVICE_ERROR   The buffers were not flushed due to a hardware error.
**/
EFI_STATUS
EFIAPI
IsaIoFlush (
  IN EFI_ISA_IO_PROTOCOL  *This
  )
{
  EFI_STATUS    Status;
  ISA_IO_DEVICE *IsaIoDevice;

  IsaIoDevice = ISA_IO_DEVICE_FROM_ISA_IO_THIS (This);

  Status = IsaIoDevice->PciIo->Flush (IsaIoDevice->PciIo);

  if (EFI_ERROR (Status)) {
    REPORT_STATUS_CODE (
      EFI_ERROR_CODE | EFI_ERROR_MINOR,
      EFI_IO_BUS_LPC | EFI_IOB_EC_CONTROLLER_ERROR
      );
  }

  return Status;
}

/**
  Verifies access to an ISA device

  @param[in] IsaIoDevice         The ISA device to be verified.
  @param[in] Type                The Access type. The input must be either IsaAccessTypeMem or IsaAccessTypeIo.
  @param[in] Width               The width of the memory operation.
  @param[in] Count               The number of memory operations to perform.
  @param[in] Offset              The offset in ISA memory space to start the memory operation.

  @retval EFI_SUCCESS            Verify success.
  @retval EFI_INVALID_PARAMETER  One of the parameters has an invalid value.
  @retval EFI_UNSUPPORTED        The device ont support the access type.
**/
EFI_STATUS
IsaIoVerifyAccess (
  IN ISA_IO_DEVICE              *IsaIoDevice,
  IN ISA_ACCESS_TYPE            Type,
  IN EFI_ISA_IO_PROTOCOL_WIDTH  Width,
  IN UINTN                      Count,
  IN UINT32                     Offset
  )
{
  EFI_ISA_ACPI_RESOURCE *Item;
  EFI_STATUS            Status;

  if (Width < EfiIsaIoWidthUint8 ||
      Width >= EfiIsaIoWidthMaximum ||
      Width == EfiIsaIoWidthReserved ||
      Width == EfiIsaIoWidthFifoReserved ||
      Width == EfiIsaIoWidthFillReserved
      ) {
    return EFI_INVALID_PARAMETER;
  }

  //
  // If Width is EfiIsaIoWidthFifoUintX then convert to EfiIsaIoWidthUintX
  // If Width is EfiIsaIoWidthFillUintX then convert to EfiIsaIoWidthUintX
  //
  if (Width >= EfiIsaIoWidthFifoUint8 && Width < EfiIsaIoWidthFifoReserved) {
    Count = 1;
  }

  Width = (EFI_ISA_IO_PROTOCOL_WIDTH) (Width & 0x03);

  Status  = EFI_UNSUPPORTED;
  Item    = IsaIoDevice->IsaIo.ResourceList->ResourceItem;
  while (Item->Type != EfiIsaAcpiResourceEndOfList) {
    if ((Type == IsaAccessTypeMem && Item->Type == EfiIsaAcpiResourceMemory) ||
        (Type == IsaAccessTypeIo && Item->Type == EfiIsaAcpiResourceIo)) {
      if (Offset >= Item->StartRange && (Offset + Count * (UINT32)(1 << Width)) - 1 <= Item->EndRange) {
        return EFI_SUCCESS;
      }

      if (Offset >= Item->StartRange && Offset <= Item->EndRange) {
        Status = EFI_INVALID_PARAMETER;
      }
    }

    Item++;
  }

  return Status;
}

/**
  Performs an ISA Memory Read Cycle

  @param[in]  This               A pointer to the EFI_ISA_IO_PROTOCOL instance.
  @param[in]  Width              Specifies the width of the memory operation.
  @param[in]  Offset             The offset in ISA memory space to start the memory operation.
  @param[in]  Count              The number of memory operations to perform.
  @param[out] Buffer             The destination buffer to store the results

  @retval EFI_SUCCESS            The data was read from the device successfully.
  @retval EFI_UNSUPPORTED        The Offset is not valid for this device.
  @retval EFI_INVALID_PARAMETER  Width or Count, or both, were invalid.
  @retval EFI_OUT_OF_RESOURCES   The request could not be completed due to a lack of resources.
**/
EFI_STATUS
EFIAPI
IsaIoMemRead (
  IN  EFI_ISA_IO_PROTOCOL        *This,
  IN  EFI_ISA_IO_PROTOCOL_WIDTH  Width,
  IN  UINT32                     Offset,
  IN  UINTN                      Count,
  OUT VOID                       *Buffer
  )
{
  EFI_STATUS    Status;
  ISA_IO_DEVICE *IsaIoDevice;

  //
  // Check if ISA memory is supported.
  //
  if ((PcdGet8 (PcdIsaBusSupportedFeatures) & PCD_ISA_BUS_SUPPORT_ISA_MEMORY) == 0) {
    return EFI_UNSUPPORTED;
  }

  IsaIoDevice = ISA_IO_DEVICE_FROM_ISA_IO_THIS (This);

  //
  // Verify the Isa Io Access
  //
  Status = IsaIoVerifyAccess (
             IsaIoDevice,
             IsaAccessTypeMem,
             Width,
             Count,
             Offset
             );
  if (EFI_ERROR (Status)) {
    return Status;
  }

  Status = IsaIoDevice->PciIo->Mem.Read (
                                     IsaIoDevice->PciIo,
                                     (EFI_PCI_IO_PROTOCOL_WIDTH) Width,
                                     EFI_PCI_IO_PASS_THROUGH_BAR,
                                     Offset,
                                     Count,
                                     Buffer
                                     );

  if (EFI_ERROR (Status)) {
    REPORT_STATUS_CODE (
      EFI_ERROR_CODE | EFI_ERROR_MINOR,
      EFI_IO_BUS_LPC | EFI_IOB_EC_CONTROLLER_ERROR
      );
  }

  return Status;
}

/**
  Performs an ISA Memory Write Cycle

  @param[in] This                A pointer to the EFI_ISA_IO_PROTOCOL instance.
  @param[in] Width               Specifies the width of the memory operation.
  @param[in] Offset              The offset in ISA memory space to start the memory operation.
  @param[in] Count               The number of memory operations to perform.
  @param[in] Buffer              The source buffer to write data from

  @retval EFI_SUCCESS            The data was written to the device sucessfully.
  @retval EFI_UNSUPPORTED        The Offset is not valid for this device.
  @retval EFI_INVALID_PARAMETER  Width or Count, or both, were invalid.
  @retval EFI_OUT_OF_RESOURCES   The request could not be completed due to a lack of resources.
**/
EFI_STATUS
EFIAPI
IsaIoMemWrite (
  IN EFI_ISA_IO_PROTOCOL        *This,
  IN EFI_ISA_IO_PROTOCOL_WIDTH  Width,
  IN UINT32                     Offset,
  IN UINTN                      Count,
  IN VOID                       *Buffer
  )
{
  EFI_STATUS    Status;
  ISA_IO_DEVICE *IsaIoDevice;

  //
  // Check if ISA memory is supported.
  //
  if ((PcdGet8 (PcdIsaBusSupportedFeatures) & PCD_ISA_BUS_SUPPORT_ISA_MEMORY) == 0) {
    return EFI_UNSUPPORTED;
  }

  IsaIoDevice = ISA_IO_DEVICE_FROM_ISA_IO_THIS (This);

  //
  // Verify Isa IO Access
  //
  Status = IsaIoVerifyAccess (
             IsaIoDevice,
             IsaAccessTypeMem,
             Width,
             Count,
             Offset
             );
  if (EFI_ERROR (Status)) {
    return Status;
  }

  Status = IsaIoDevice->PciIo->Mem.Write (
                                     IsaIoDevice->PciIo,
                                     (EFI_PCI_IO_PROTOCOL_WIDTH) Width,
                                     EFI_PCI_IO_PASS_THROUGH_BAR,
                                     Offset,
                                     Count,
                                     Buffer
                                     );

  if (EFI_ERROR (Status)) {
    REPORT_STATUS_CODE (
      EFI_ERROR_CODE | EFI_ERROR_MINOR,
      EFI_IO_BUS_LPC | EFI_IOB_EC_CONTROLLER_ERROR
      );
  }

  return Status;
}

/**
  Copy one region of ISA memory space to another region of ISA memory space on the ISA controller.

  @param[in]  This               A pointer to the EFI_ISA_IO_PROTOCOL instance.
  @param[in]  Width              Specifies the width of the memory copy operation.
  @param[in]  DestOffset         The offset of the destination
  @param[in]  SrcOffset          The offset of the source
  @param[in]  Count              The number of memory copy  operations to perform

  @retval EFI_SUCCESS            The data was copied sucessfully.
  @retval EFI_UNSUPPORTED        The DestOffset or SrcOffset is not valid for this device.
  @retval EFI_INVALID_PARAMETER  Width or Count, or both, were invalid.
  @retval EFI_OUT_OF_RESOURCES   The request could not be completed due to a lack of resources.
**/
EFI_STATUS
EFIAPI
IsaIoCopyMem (
  IN EFI_ISA_IO_PROTOCOL        *This,
  IN EFI_ISA_IO_PROTOCOL_WIDTH  Width,
  IN UINT32                     DestOffset,
  IN UINT32                     SrcOffset,
  IN UINTN                      Count
  )
{
  EFI_STATUS    Status;
  ISA_IO_DEVICE *IsaIoDevice;

  //
  // Check if ISA memory is supported.
  //
  if ((PcdGet8 (PcdIsaBusSupportedFeatures) & PCD_ISA_BUS_SUPPORT_ISA_MEMORY) == 0) {
    return EFI_UNSUPPORTED;
  }

  IsaIoDevice = ISA_IO_DEVICE_FROM_ISA_IO_THIS (This);

  //
  // Verify Isa IO Access for destination and source
  //
  Status = IsaIoVerifyAccess (
             IsaIoDevice,
             IsaAccessTypeMem,
             Width,
             Count,
             DestOffset
             );
  if (EFI_ERROR (Status)) {
    return Status;
  }

  Status = IsaIoVerifyAccess (
             IsaIoDevice,
             IsaAccessTypeMem,
             Width,
             Count,
             SrcOffset
             );
  if (EFI_ERROR (Status)) {
    return Status;
  }

  Status = IsaIoDevice->PciIo->CopyMem (
                                 IsaIoDevice->PciIo,
                                 (EFI_PCI_IO_PROTOCOL_WIDTH) Width,
                                 EFI_PCI_IO_PASS_THROUGH_BAR,
                                 DestOffset,
                                 EFI_PCI_IO_PASS_THROUGH_BAR,
                                 SrcOffset,
                                 Count
                                 );

  if (EFI_ERROR (Status)) {
    REPORT_STATUS_CODE (
      EFI_ERROR_CODE | EFI_ERROR_MINOR,
      EFI_IO_BUS_LPC | EFI_IOB_EC_CONTROLLER_ERROR
      );
  }

  return Status;
}

/**
  Maps a memory region for DMA, note this implementation
  only supports slave read/write operation to save code size.

  @param This                    A pointer to the EFI_ISA_IO_PROTOCOL instance.
  @param Operation               Indicates the type of DMA (slave or bus master), and if
                                 the DMA operation is going to read or write to system memory.
  @param ChannelNumber           The slave channel number to use for this DMA operation.
                                 If Operation and ChannelAttributes shows that this device
                                 performs bus mastering DMA, then this field is ignored.
                                 The legal range for this field is 0..7.
  @param ChannelAttributes       The attributes of the DMA channel to use for this DMA operation
  @param HostAddress             The system memory address to map to the device.
  @param NumberOfBytes           On input the number of bytes to map.  On output the number
                                 of bytes that were mapped.
  @param DeviceAddress           The resulting map address for the bus master device to use
                                 to access the hosts HostAddress.
  @param Mapping                 A resulting value to pass to EFI_ISA_IO.Unmap().

  @retval EFI_SUCCESS            The range was mapped for the returned NumberOfBytes.
  @retval EFI_INVALID_PARAMETER  The Operation or HostAddress is undefined.
  @retval EFI_UNSUPPORTED        The HostAddress can not be mapped as a common buffer.
  @retval EFI_DEVICE_ERROR       The system hardware could not map the requested address.
  @retval EFI_OUT_OF_RESOURCES   The memory pages could not be allocated.
**/
EFI_STATUS
IsaIoMapOnlySupportSlaveReadWrite (
  IN     EFI_ISA_IO_PROTOCOL            *This,
  IN     EFI_ISA_IO_PROTOCOL_OPERATION  Operation,
  IN     UINT8                          ChannelNumber  OPTIONAL,
  IN     UINT32                         ChannelAttributes,
  IN     VOID                           *HostAddress,
  IN OUT UINTN                          *NumberOfBytes,
  OUT    EFI_PHYSICAL_ADDRESS           *DeviceAddress,
  OUT    VOID                           **Mapping
  )
{
  EFI_STATUS            Status;
  EFI_PHYSICAL_ADDRESS  PhysicalAddress;
  ISA_MAP_INFO          *IsaMapInfo;
  UINT8                 DmaMode;
  UINTN                 MaxNumberOfBytes;
  UINT32                BaseAddress;
  UINT16                Count;
  UINT8                 DmaMask;
  UINT8                 DmaClear;
  UINT8                 DmaChannelMode;

  if ((NULL == This) ||
      (NULL == HostAddress) ||
      (NULL == NumberOfBytes) ||
      (NULL == DeviceAddress) ||
      (NULL == Mapping)
      ) {
    return EFI_INVALID_PARAMETER;
  }

  //
  // Initialize the return values to their defaults
  //
  *Mapping = NULL;

  //
  // Make sure the Operation parameter is valid.
  // Light IsaIo only supports two operations.
  //
  if (!(Operation == EfiIsaIoOperationSlaveRead ||
        Operation == EfiIsaIoOperationSlaveWrite)) {
    return EFI_INVALID_PARAMETER;
  }

  if (ChannelNumber >= 4) {
    //
    // The Light IsaIo doesn't support channelNumber larger than 4.
    //
    return EFI_INVALID_PARAMETER;
  }

  //
  // Map the HostAddress to a DeviceAddress.
  //
  PhysicalAddress = (EFI_PHYSICAL_ADDRESS) (UINTN) HostAddress;
  if ((PhysicalAddress + *NumberOfBytes) > ISA_MAX_MEMORY_ADDRESS) {
    //
    // Common Buffer operations can not be remapped.  If the common buffer
    // is above 16MB, then it is not possible to generate a mapping, so return
    // an error.
    //
    if (Operation == EfiIsaIoOperationBusMasterCommonBuffer) {
      return EFI_UNSUPPORTED;
    }
    //
    // Allocate an ISA_MAP_INFO structure to remember the mapping when Unmap()
    // is called later.
    //
    IsaMapInfo = AllocatePool (sizeof (ISA_MAP_INFO));
    if (IsaMapInfo == NULL) {
      *NumberOfBytes = 0;
      return EFI_OUT_OF_RESOURCES;
    }
    //
    // Return a pointer to the MAP_INFO structure in Mapping
    //
    *Mapping = IsaMapInfo;

    //
    // Initialize the MAP_INFO structure
    //
    IsaMapInfo->Operation         = Operation;
    IsaMapInfo->NumberOfBytes     = *NumberOfBytes;
    IsaMapInfo->NumberOfPages     = EFI_SIZE_TO_PAGES (*NumberOfBytes);
    IsaMapInfo->HostAddress       = PhysicalAddress;
    IsaMapInfo->MappedHostAddress = ISA_MAX_MEMORY_ADDRESS - 1;

    //
    // Allocate a buffer below 16MB to map the transfer to.
    //
    Status = gBS->AllocatePages (
                    AllocateMaxAddress,
                    EfiBootServicesData,
                    IsaMapInfo->NumberOfPages,
                    &IsaMapInfo->MappedHostAddress
                    );
    if (EFI_ERROR (Status)) {
      FreePool (IsaMapInfo);
      *NumberOfBytes  = 0;
      *Mapping        = NULL;
      return Status;
    }
    //
    // If this is a read operation from the DMA agents's point of view,
    // then copy the contents of the real buffer into the mapped buffer
    // so the DMA agent can read the contents of the real buffer.
    //
    if (Operation == EfiIsaIoOperationSlaveRead) {
      CopyMem (
        (VOID *) (UINTN) IsaMapInfo->MappedHostAddress,
        (VOID *) (UINTN) IsaMapInfo->HostAddress,
        IsaMapInfo->NumberOfBytes
        );
    }
    //
    // The DeviceAddress is the address of the maped buffer below 16 MB
    //
    *DeviceAddress = IsaMapInfo->MappedHostAddress;
  } else {
    //
    // The transfer is below 16 MB, so the DeviceAddress is simply the
    // HostAddress
    //
    *DeviceAddress = PhysicalAddress;
  }

  //
  // Figure out what to program into the DMA Channel Mode Register
  //
  DmaMode = (UINT8) (B_8237_DMA_CHMODE_INCREMENT | (ChannelNumber & 0x03));
  if (Operation == EfiIsaIoOperationSlaveRead) {
    DmaMode |= V_8237_DMA_CHMODE_MEM2IO;
  } else {
    DmaMode |= V_8237_DMA_CHMODE_IO2MEM;
  }
  //
  // We only support EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SINGLE_MODE in simplified IsaIo
  //
  DmaMode |= V_8237_DMA_CHMODE_SINGLE;

  //
  // A Slave DMA transfer can not cross a 64K boundary.
  // Compute *NumberOfBytes based on this restriction.
  //
  MaxNumberOfBytes = 0x10000 - ((UINT32) (*DeviceAddress) & 0xffff);
  if (*NumberOfBytes > MaxNumberOfBytes) {
    *NumberOfBytes = MaxNumberOfBytes;
  }
  //
  // Compute the values to program into the BaseAddress and Count registers
  // of the Slave DMA controller
  //
  BaseAddress = (UINT32) (*DeviceAddress);
  Count       = (UINT16) (*NumberOfBytes - 1);
  //
  // Program the DMA Write Single Mask Register for ChannelNumber
  // Clear the DMA Byte Pointer Register
  //
  DmaMask         = R_8237_DMA_WRSMSK_CH0_3;
  DmaClear        = R_8237_DMA_CBPR_CH0_3;
  DmaChannelMode  = R_8237_DMA_CHMODE_CH0_3;

  Status = WritePort (
             This,
             DmaMask,
             (UINT8) (B_8237_DMA_WRSMSK_CMS | (ChannelNumber & 0x03))
             );
  if (EFI_ERROR (Status)) {
    return Status;
  }

  Status = WritePort (
             This,
             DmaClear,
             (UINT8) (B_8237_DMA_WRSMSK_CMS | (ChannelNumber & 0x03))
             );
  if (EFI_ERROR (Status)) {
    return Status;
  }

  Status = WritePort (This, DmaChannelMode, DmaMode);
  if (EFI_ERROR (Status)) {
    return Status;
  }

  Status = WriteDmaPort (
             This,
             mDmaRegisters[ChannelNumber].Address,
             mDmaRegisters[ChannelNumber].Page,
             mDmaRegisters[ChannelNumber].Count,
             BaseAddress,
             Count
             );
  if (EFI_ERROR (Status)) {
    return Status;
  }

  Status = WritePort (
             This,
             DmaMask,
             (UINT8) (ChannelNumber & 0x03)
             );
  if (EFI_ERROR (Status)) {
    return Status;
  }

  return EFI_SUCCESS;
}

/**
  Maps a memory region for DMA. This implementation implement the
  the full mapping support.

  @param This                    A pointer to the EFI_ISA_IO_PROTOCOL instance.
  @param Operation               Indicates the type of DMA (slave or bus master), and if
                                 the DMA operation is going to read or write to system memory.
  @param ChannelNumber           The slave channel number to use for this DMA operation.
                                 If Operation and ChannelAttributes shows that this device
                                 performs bus mastering DMA, then this field is ignored.
                                 The legal range for this field is 0..7.
  @param ChannelAttributes       The attributes of the DMA channel to use for this DMA operation
  @param HostAddress             The system memory address to map to the device.
  @param NumberOfBytes           On input the number of bytes to map.  On output the number
                                 of bytes that were mapped.
  @param DeviceAddress           The resulting map address for the bus master device to use
                                 to access the hosts HostAddress.
  @param Mapping                 A resulting value to pass to EFI_ISA_IO.Unmap().

  @retval EFI_SUCCESS           - The range was mapped for the returned NumberOfBytes.
  @retval EFI_INVALID_PARAMETER - The Operation or HostAddress is undefined.
  @retval EFI_UNSUPPORTED       - The HostAddress can not be mapped as a common buffer.
  @retval EFI_DEVICE_ERROR      - The system hardware could not map the requested address.
  @retval EFI_OUT_OF_RESOURCES  - The memory pages could not be allocated.
**/
EFI_STATUS
IsaIoMapFullSupport (
  IN     EFI_ISA_IO_PROTOCOL                                  *This,
  IN     EFI_ISA_IO_PROTOCOL_OPERATION                        Operation,
  IN     UINT8                                                ChannelNumber         OPTIONAL,
  IN     UINT32                                               ChannelAttributes,
  IN     VOID                                                 *HostAddress,
  IN OUT UINTN                                                *NumberOfBytes,
  OUT    EFI_PHYSICAL_ADDRESS                                 *DeviceAddress,
  OUT    VOID                                                 **Mapping
  )
{
  EFI_STATUS            Status;
  BOOLEAN               Master;
  BOOLEAN               Read;
  EFI_PHYSICAL_ADDRESS  PhysicalAddress;
  ISA_MAP_INFO          *IsaMapInfo;
  UINT8                 DmaMode;
  UINTN                 MaxNumberOfBytes;
  UINT32                BaseAddress;
  UINT16                Count;
  UINT8                 DmaMask;
  UINT8                 DmaClear;
  UINT8                 DmaChannelMode;

  if ((NULL == This) ||
      (NULL == HostAddress) ||
      (NULL == NumberOfBytes) ||
      (NULL == DeviceAddress) ||
      (NULL == Mapping)
      ) {
    return EFI_INVALID_PARAMETER;
  }

  //
  // Initialize the return values to their defaults
  //
  *Mapping = NULL;

  //
  // Make sure the Operation parameter is valid
  //
  if (Operation < 0 || Operation >= EfiIsaIoOperationMaximum) {
    return EFI_INVALID_PARAMETER;
  }

  if (ChannelNumber >= 8) {
    return EFI_INVALID_PARAMETER;
  }

  //
  // See if this is a Slave DMA Operation
  //
  Master  = TRUE;
  Read    = FALSE;
  if (Operation == EfiIsaIoOperationSlaveRead) {
    Operation = EfiIsaIoOperationBusMasterRead;
    Master    = FALSE;
    Read      = TRUE;
  }

  if (Operation == EfiIsaIoOperationSlaveWrite) {
    Operation = EfiIsaIoOperationBusMasterWrite;
    Master    = FALSE;
    Read      = FALSE;
  }

  if (!Master) {
    //
    // Make sure that ChannelNumber is a valid channel number
    // Channel 4 is used to cascade, so it is illegal.
    //
    if (ChannelNumber == 4 || ChannelNumber > 7) {
      return EFI_INVALID_PARAMETER;
    }
    //
    // This implementation only support COMPATIBLE DMA Transfers
    //
    if ((ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_COMPATIBLE) == 0) {
      return EFI_INVALID_PARAMETER;
    }

    if ((ChannelAttributes &
         (EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_A |
          EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_B |
          EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_C)) != 0) {
      return EFI_INVALID_PARAMETER;
    }

    if (ChannelNumber < 4) {
      //
      // If this is Channel 0..3, then the width must be 8 bit
      //
      if (((ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_WIDTH_8) == 0) ||
          ((ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_WIDTH_16) != 0)
          ) {
        return EFI_INVALID_PARAMETER;
      }
    } else {
      //
      // If this is Channel 4..7, then the width must be 16 bit
      //
      if (((ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_WIDTH_8) != 0) ||
          ((ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_WIDTH_16) == 0)) {
        return EFI_INVALID_PARAMETER;
      }
    }
    //
    // Either Demand Mode or Single Mode must be selected, but not both
    //
    if ((ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SINGLE_MODE) != 0) {
      if ((ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_DEMAND_MODE) != 0) {
        return EFI_INVALID_PARAMETER;
      }
    } else {
      if ((ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_DEMAND_MODE) == 0) {
        return EFI_INVALID_PARAMETER;
      }
    }
  }
  //
  // Map the HostAddress to a DeviceAddress.
  //
  PhysicalAddress = (EFI_PHYSICAL_ADDRESS) (UINTN) HostAddress;
  if ((PhysicalAddress +*NumberOfBytes) > ISA_MAX_MEMORY_ADDRESS) {
    //
    // Common Buffer operations can not be remapped.  If the common buffer
    // is above 16MB, then it is not possible to generate a mapping, so return
    // an error.
    //
    if (Operation == EfiIsaIoOperationBusMasterCommonBuffer) {
      return EFI_UNSUPPORTED;
    }
    //
    // Allocate an ISA_MAP_INFO structure to remember the mapping when Unmap()
    // is called later.
    //
    IsaMapInfo = AllocatePool (sizeof (ISA_MAP_INFO));
    if (IsaMapInfo == NULL) {
      *NumberOfBytes = 0;
      return EFI_OUT_OF_RESOURCES;
    }
    //
    // Return a pointer to the MAP_INFO structure in Mapping
    //
    *Mapping = IsaMapInfo;

    //
    // Initialize the MAP_INFO structure
    //
    IsaMapInfo->Operation         = Operation;
    IsaMapInfo->NumberOfBytes     = *NumberOfBytes;
    IsaMapInfo->NumberOfPages     = EFI_SIZE_TO_PAGES (*NumberOfBytes);
    IsaMapInfo->HostAddress       = PhysicalAddress;
    IsaMapInfo->MappedHostAddress = ISA_MAX_MEMORY_ADDRESS - 1;

    //
    // Allocate a buffer below 16MB to map the transfer to.
    //
    Status = gBS->AllocatePages (
                    AllocateMaxAddress,
                    EfiBootServicesData,
                    IsaMapInfo->NumberOfPages,
                    &IsaMapInfo->MappedHostAddress
                    );
    if (EFI_ERROR (Status)) {
      FreePool (IsaMapInfo);
      *NumberOfBytes  = 0;
      *Mapping        = NULL;
      return Status;
    }
    //
    // If this is a read operation from the DMA agents's point of view,
    // then copy the contents of the real buffer into the mapped buffer
    // so the DMA agent can read the contents of the real buffer.
    //
    if (Operation == EfiIsaIoOperationBusMasterRead) {
      CopyMem (
        (VOID *) (UINTN) IsaMapInfo->MappedHostAddress,
        (VOID *) (UINTN) IsaMapInfo->HostAddress,
        IsaMapInfo->NumberOfBytes
        );
    }
    //
    // The DeviceAddress is the address of the maped buffer below 16 MB
    //
    *DeviceAddress = IsaMapInfo->MappedHostAddress;
  } else {
    //
    // The transfer is below 16 MB, so the DeviceAddress is simply the
    // HostAddress
    //
    *DeviceAddress = PhysicalAddress;
  }
  //
  // If this is a Bus Master operation then return
  //
  if (Master) {
    return EFI_SUCCESS;
  }
  //
  // Figure out what to program into the DMA Channel Mode Register
  //
  DmaMode = (UINT8) (B_8237_DMA_CHMODE_INCREMENT | (ChannelNumber & 0x03));
  if (Read) {
    DmaMode |= V_8237_DMA_CHMODE_MEM2IO;
  } else {
    DmaMode |= V_8237_DMA_CHMODE_IO2MEM;
  }

  if ((ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_AUTO_INITIALIZE) != 0) {
    DmaMode |= B_8237_DMA_CHMODE_AE;
  }

  if ((ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_DEMAND_MODE) != 0) {
    DmaMode |= V_8237_DMA_CHMODE_DEMAND;
  }

  if ((ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SINGLE_MODE) != 0) {
    DmaMode |= V_8237_DMA_CHMODE_SINGLE;
  }
  //
  // A Slave DMA transfer can not cross a 64K boundary.
  // Compute *NumberOfBytes based on this restriction.
  //
  MaxNumberOfBytes = 0x10000 - ((UINT32) (*DeviceAddress) & 0xffff);
  if (*NumberOfBytes > MaxNumberOfBytes) {
    *NumberOfBytes = MaxNumberOfBytes;
  }
  //
  // Compute the values to program into the BaseAddress and Count registers
  // of the Slave DMA controller
  //
  if (ChannelNumber < 4) {
    BaseAddress = (UINT32) (*DeviceAddress);
    Count       = (UINT16) (*NumberOfBytes - 1);
  } else {
    BaseAddress = (UINT32) (((UINT32) (*DeviceAddress) & 0xff0000) | (((UINT32) (*DeviceAddress) & 0xffff) >> 1));
    Count       = (UINT16) ((*NumberOfBytes - 1) >> 1);
  }
  //
  // Program the DMA Write Single Mask Register for ChannelNumber
  // Clear the DMA Byte Pointer Register
  //
  if (ChannelNumber < 4) {
    DmaMask         = R_8237_DMA_WRSMSK_CH0_3;
    DmaClear        = R_8237_DMA_CBPR_CH0_3;
    DmaChannelMode  = R_8237_DMA_CHMODE_CH0_3;
  } else {
    DmaMask         = R_8237_DMA_WRSMSK_CH4_7;
    DmaClear        = R_8237_DMA_CBPR_CH4_7;
    DmaChannelMode  = R_8237_DMA_CHMODE_CH4_7;
  }

  Status = WritePort (
             This,
             DmaMask,
             (UINT8) (B_8237_DMA_WRSMSK_CMS | (ChannelNumber & 0x03))
             );
  if (EFI_ERROR (Status)) {
    return Status;
  }

  Status = WritePort (
             This,
             DmaClear,
             (UINT8) (B_8237_DMA_WRSMSK_CMS | (ChannelNumber & 0x03))
             );
  if (EFI_ERROR (Status)) {
    return Status;
  }

  Status = WritePort (This, DmaChannelMode, DmaMode);
  if (EFI_ERROR (Status)) {
    return Status;
  }

  Status = WriteDmaPort (
             This,
             mDmaRegisters[ChannelNumber].Address,
             mDmaRegisters[ChannelNumber].Page,
             mDmaRegisters[ChannelNumber].Count,
             BaseAddress,
             Count
             );
  if (EFI_ERROR (Status)) {
    return Status;
  }

  Status = WritePort (
             This,
             DmaMask,
             (UINT8) (ChannelNumber & 0x03)
             );
  if (EFI_ERROR (Status)) {
    return Status;
  }

  return EFI_SUCCESS;
}

/**
  Maps a memory region for DMA

  @param This                    A pointer to the EFI_ISA_IO_PROTOCOL instance.
  @param Operation               Indicates the type of DMA (slave or bus master), and if
                                 the DMA operation is going to read or write to system memory.
  @param ChannelNumber           The slave channel number to use for this DMA operation.
                                 If Operation and ChannelAttributes shows that this device
                                 performs bus mastering DMA, then this field is ignored.
                                 The legal range for this field is 0..7.
  @param ChannelAttributes       The attributes of the DMA channel to use for this DMA operation
  @param HostAddress             The system memory address to map to the device.
  @param NumberOfBytes           On input the number of bytes to map.  On output the number
                                 of bytes that were mapped.
  @param DeviceAddress           The resulting map address for the bus master device to use
                                 to access the hosts HostAddress.
  @param Mapping                 A resulting value to pass to EFI_ISA_IO.Unmap().

  @retval EFI_SUCCESS            The range was mapped for the returned NumberOfBytes.
  @retval EFI_INVALID_PARAMETER  The Operation or HostAddress is undefined.
  @retval EFI_UNSUPPORTED        The HostAddress can not be mapped as a common buffer.
  @retval EFI_DEVICE_ERROR       The system hardware could not map the requested address.
  @retval EFI_OUT_OF_RESOURCES   The memory pages could not be allocated.
**/
EFI_STATUS
EFIAPI
IsaIoMap (
  IN     EFI_ISA_IO_PROTOCOL            *This,
  IN     EFI_ISA_IO_PROTOCOL_OPERATION  Operation,
  IN     UINT8                          ChannelNumber  OPTIONAL,
  IN     UINT32                         ChannelAttributes,
  IN     VOID                           *HostAddress,
  IN OUT UINTN                          *NumberOfBytes,
  OUT    EFI_PHYSICAL_ADDRESS           *DeviceAddress,
  OUT    VOID                           **Mapping
  )
{
  //
  // Check if DMA is supported.
  //
  if ((PcdGet8 (PcdIsaBusSupportedFeatures) & PCD_ISA_BUS_SUPPORT_DMA) == 0) {
    return EFI_UNSUPPORTED;
  }
  //
  // Set Feature Flag PcdIsaBusSupportBusMaster to FALSE to disable support for
  // ISA Bus Master.
  //
  // So we just return EFI_UNSUPPORTED for these functions.
  //
  if ((PcdGet8 (PcdIsaBusSupportedFeatures) & PCD_ISA_BUS_ONLY_SUPPORT_SLAVE_DMA) != 0) {
    return IsaIoMapOnlySupportSlaveReadWrite (
             This,
             Operation,
             ChannelNumber,
             ChannelAttributes,
             HostAddress,
             NumberOfBytes,
             DeviceAddress,
             Mapping
             );

  } else {
    return IsaIoMapFullSupport (
             This,
             Operation,
             ChannelNumber,
             ChannelAttributes,
             HostAddress,
             NumberOfBytes,
             DeviceAddress,
             Mapping
             );
  }
}

/**
  Allocates pages that are suitable for an EfiIsaIoOperationBusMasterCommonBuffer mapping.

  @param[in]  This               A pointer to the EFI_ISA_IO_PROTOCOL instance.
  @param[in]  Type               The type allocation to perform.
  @param[in]  MemoryType         The type of memory to allocate.
  @param[in]  Pages              The number of pages to allocate.
  @param[out] HostAddress        A pointer to store the base address of the allocated range.
  @param[in]  Attributes         The requested bit mask of attributes for the allocated range.

  @retval EFI_SUCCESS            The requested memory pages were allocated.
  @retval EFI_INVALID_PARAMETER  Type is invalid or MemoryType is invalid or HostAddress is NULL
  @retval EFI_UNSUPPORTED        Attributes is unsupported or the memory range specified
                                 by HostAddress, Pages, and Type is not available for common buffer use.
  @retval EFI_OUT_OF_RESOURCES   The memory pages could not be allocated.
**/
EFI_STATUS
EFIAPI
IsaIoAllocateBuffer (
  IN  EFI_ISA_IO_PROTOCOL  *This,
  IN  EFI_ALLOCATE_TYPE    Type,
  IN  EFI_MEMORY_TYPE      MemoryType,
  IN  UINTN                Pages,
  OUT VOID                 **HostAddress,
  IN  UINT64               Attributes
  )
{
  EFI_STATUS            Status;
  EFI_PHYSICAL_ADDRESS  PhysicalAddress;

  //
  // Set Feature Flag PcdIsaBusOnlySupportSlaveDma to FALSE to disable support for
  // ISA Bus Master.
  // Or unset Feature Flag PcdIsaBusSupportDma to disable support for ISA DMA.
  //
  if (((PcdGet8 (PcdIsaBusSupportedFeatures) & PCD_ISA_BUS_SUPPORT_DMA) == 0) ||
      ((PcdGet8 (PcdIsaBusSupportedFeatures) & PCD_ISA_BUS_ONLY_SUPPORT_SLAVE_DMA) != 0)) {
    return EFI_UNSUPPORTED;
  }

  if (HostAddress == NULL) {
    return EFI_INVALID_PARAMETER;
  }

  if (Type < AllocateAnyPages || Type >= MaxAllocateType) {
    return EFI_INVALID_PARAMETER;
  }
  //
  // The only valid memory types are EfiBootServicesData and EfiRuntimeServicesData
  //
  if (MemoryType != EfiBootServicesData && MemoryType != EfiRuntimeServicesData) {
    return EFI_INVALID_PARAMETER;
  }

  if ((Attributes & ~(EFI_ISA_IO_ATTRIBUTE_MEMORY_WRITE_COMBINE | EFI_ISA_IO_ATTRIBUTE_MEMORY_CACHED)) != 0) {
    return EFI_UNSUPPORTED;
  }

  PhysicalAddress = (EFI_PHYSICAL_ADDRESS) (UINTN) (ISA_MAX_MEMORY_ADDRESS - 1);
  if (Type == AllocateAddress) {
    if ((UINTN) (*HostAddress) >= ISA_MAX_MEMORY_ADDRESS) {
      return EFI_UNSUPPORTED;
    } else {
      PhysicalAddress = (UINTN) (*HostAddress);
    }
  }

  if (Type == AllocateAnyPages) {
    Type = AllocateMaxAddress;
  }

  Status = gBS->AllocatePages (Type, MemoryType, Pages, &PhysicalAddress);
  if (EFI_ERROR (Status)) {
    REPORT_STATUS_CODE (
      EFI_ERROR_CODE | EFI_ERROR_MINOR,
      EFI_IO_BUS_LPC | EFI_IOB_EC_CONTROLLER_ERROR
      );
    return Status;
  }

  *HostAddress = (VOID *) (UINTN) PhysicalAddress;
  return Status;
}

/**
  Frees memory that was allocated with EFI_ISA_IO.AllocateBuffer().

  @param[in] This                A pointer to the EFI_ISA_IO_PROTOCOL instance.
  @param[in] Pages               The number of pages to free.
  @param[in] HostAddress         The base address of the allocated range.

  @retval EFI_SUCCESS            The requested memory pages were freed.
  @retval EFI_INVALID_PARAMETER  The memory was not allocated with EFI_ISA_IO.AllocateBufer().
**/
EFI_STATUS
EFIAPI
IsaIoFreeBuffer (
  IN EFI_ISA_IO_PROTOCOL  *This,
  IN UINTN                Pages,
  IN VOID                 *HostAddress
  )
{
  EFI_STATUS  Status;

  //
  // Set Feature Flag PcdIsaBusOnlySupportSlaveDma to FALSE to disable support for
  // ISA Bus Master.
  // Or unset Feature Flag PcdIsaBusSupportDma to disable support for ISA DMA.
  //
  if (((PcdGet8 (PcdIsaBusSupportedFeatures) & PCD_ISA_BUS_SUPPORT_DMA) == 0) ||
      ((PcdGet8 (PcdIsaBusSupportedFeatures) & PCD_ISA_BUS_ONLY_SUPPORT_SLAVE_DMA) != 0)) {
    return EFI_UNSUPPORTED;
  }

  Status = gBS->FreePages (
                  (EFI_PHYSICAL_ADDRESS) (UINTN) HostAddress,
                  Pages
                  );
  if (EFI_ERROR (Status)) {
    REPORT_STATUS_CODE (
      EFI_ERROR_CODE | EFI_ERROR_MINOR,
      EFI_IO_BUS_LPC | EFI_IOB_EC_CONTROLLER_ERROR
      );
  }

  return Status;
}

redpajama_set_name: RedPajamaGithub


text:
Q: Angular Momentum and Kepler's Second Law Let me preface by saying that I get the gist of the conservation of angular momentum, at least qualitatively. To better illustrate my question, I will consider the case of a planet orbiting a star.
If we assume that the equation for angular momentum is the following:
$$   L = m * r * v$$
Where:
$m$ = is the combined mass of the star-planet system
$r$ = the orbital distance (semi-major axis) of the planet
$v$ = the orbital velocity of the planet
Now, since the mass is more or less constant, we will ignore that. Also, per Kepler's 2nd law, the planet must orbit faster as it is closer to its host star and vice versa. Here is what I don't understand:
If we decrease $r$ by a certain amount, doesn't this mean that
$v$ must also increase by the same amount for the total angular momentum to be conserved? If this is true, then why doesn't it appear to be the case in practice? That is, it's quite obvious to me that a planet's orbital velocity doesn't increase by the same amount by which its orbital distance has decreased.
I hope this is clear. I'm trying to understand the relationship between r and v in terms of how they compensate for each other in order to conserve L. Intuitively, one must increase by the same amount the other was decreased, yet somehow this doesn't strike me as a realistic scenario. What am I misunderstanding?
EDIT: Thanks to Bill N's comment below, I believe my misunderstanding stems from the fact that I had assumed the increases and decreases are additive, where in fact they are multiplicative. Please feel to free to add more relevant comments, otherwise consider this question answered.

A: The angular momentum of planetary and satellite orbital motion remains constant to first order because the gravitational force exerts no torque on the system. That means that at each point of the satellite's orbit, measured relative to the center of force (the star, or possibly a planet in the case of a moon or man-made satellite) is $L=\mu v r \sin\theta$, where $\mu$ is the reduced mass of the system. Because the torque is zero and $\mu$ is constant, $vr\sin\theta$ must be constant. The angle $\theta$ is the angle between the position vector, $\vec{r}$ from the force center to the satellite and the velocity vector, $\vec{v}$.
Let's compare two orbital points, the periapsis (closest approach, $\vec{r}_p$) and apapsis (most distant point, $\vec{r}_a$), of the elliptical orbit. The center of force will be at a focus of the ellipse.  At both of these points, $\theta=90^o$, so
$$v_pr_p = v_ar_a.$$
Because $r_a>r_p$ we quickly see that
$$v_p=v_a\frac{r_a}{r_p} > v_a$$
or, in words, the speed at the periapsis is faster than the speed at the apapsis by a ratio of $\frac{r_a}{r_p}$.  At points in between, $\sin\theta$ is less than 1, but never goes to zero. The slowest speed is at the apapsis, and the speed increases continually and predictably, but non-linearly until the periapsis. The actual acceleration magnitude depends on the eccentricity of the ellipse as well as the semi-major axis.  More details can be found in any collegiate intermediate mechanics book.

redpajama_set_name: RedPajamaStackExchange


Take the guess-work out of selecting complementary tables and barstools by choosing this Lancaster Table & Seating 30" round reversible walnut / oak bar height dining set! This bar height table comes complete with everything you need to quickly and easily assemble a classic 4-top table. From the strong, sturdy cast iron base plate and spider, to the sleek black column and durable laminated table top, this table is an all-in-one addition to any establishment.


text:
Die Bredtsche Regel ist eine empirische Regel in der Organischen Chemie. Zuerst formulierte sie der deutsche Chemiker Julius Bredt im Jahre 1924. Sie besagt, dass in kleinen bicyclischen Kohlenwasserstoffen aufgrund der Ringspannung keine Doppelbindung an einem Brückenkopfatom liegen kann.

Inzwischen wurde die Bredtsche Regel präzisiert. Demnach sind nur solche Bicyclo[x.y.z]alk-1-ene stabil, in denen die Summe S der Brückenglieder die folgende Forderung erfüllt: S = x + y + z ≥ 7.

Einige instabile bicyclische Kohlenwasserstoffe mit S = 5 oder 6 konnten jedoch durch Folgereaktionen indirekt nachgewiesen werden.

Bildlich kann man sich vorstellen, dass eine Doppelbindung am Brückenkopf einer trans-Doppelbindung entspräche, die aufgrund der entstehenden Ringspannung für Ringsysteme mit weniger als acht Gliedern kaum auftritt. Infolge der Geometrie wäre die Überlappung der an der Bindung beteiligten p-Orbitale der sp2-hybridisierten Kohlenstoffatome zu gering, um eine stabile Bindung zu gewährleisten.
Analog zu trans-Doppelbindungen in cyclischen Kohlenwasserstoffen treten Doppelbindungen am Brückenkopf von bicyclischen Verbindungen erst ab einer Größe von acht Ringatomen auf.

Daneben gibt es einige Verbindungen, die nicht der Bredtschen Regel folgen. Diese werden auch als anti-Bredt-Verbindungen bezeichnet. Ein Beispiel ist das durch Philip E. Eaton und Karl L. Hoffmann synthetisierte 1(9)-Homocuben, wobei der Begriff des Olefins hier laut theoretischer Studien nur begrenzt angewendet werden kann – aufgrund der starken Verdrehung der p-Orbitale, welche die π-Bindung realisieren. Das 1(9)-Homocuben gilt zurzeit als das Olefin mit der stärksten Verdrillung.

Einzelnachweise

Chemische Bindung
Isomerie
Reaktionsregel

redpajama_set_name: RedPajamaWikipedia


After Nicosia, the capital of Cyprus, Limassol holds the reins of the second largest city. Its castle is the main attraction, as well as the medieval museum, also it's the public garden, a small zoo and an archaeological museum. It's music scene is relatively busy, from bouzouki taverns to jazz places, along with its coastal coffee houses, that make this city very interesting.
The coastal region to the east is scenic. Between Limassol and Amathus to the east, many fine hotels are spread in the cast line. Nearby are the 13th-century Kolossi, the beach at Dhassoudi, the Ayios Georgios Convent and the Greco-Roman archaeological site of Curium, as well as its ancient theatre, where plays and concerts are performed every summer. Regional vineyards and wineries abound! Use Limassol as a base and visit Troodos mountain villages.


text:
Q: Single row selection - UITableView Good Afternoon,
I'm trying to deploy my application in the selection of a single line in UITableView, but when I select another row, the previous line is not clear. I'm using images to represent the selection of the lines. I've tried to make each user's selection table rows stay with the image of deselection, but got no success.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  {

    static NSString *EditCellIdentifier = @"EditCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:EditCellIdentifier];

    if (cell == nil) {

        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:EditCellIdentifier] autorelease];

        UILabel *label = [[UILabel alloc] initWithFrame:kLabelRect];
        label.tag = kCellLabelTag;
        [cell.contentView addSubview:label];
        [label release];

        UIImageView *imageView = [[UIImageView alloc] initWithImage:unselectedImage];
        imageView.frame = CGRectMake(5.0, 10.0, 23.0, 23.0);
        [cell.contentView addSubview:imageView];
        imageView.hidden = !inPseudoEditMode;
        imageView.tag = kCellImageViewTag;
        [imageView release];
    }

    [UIView beginAnimations:@"cell shift" context:nil];

    UIImageView *imageView = (UIImageView *)[cell.contentView viewWithTag:kCellImageViewTag];
    NSNumber *selected = [selectedArray objectAtIndex:[indexPath row]];
    imageView.image = ([selected boolValue]) ? selectedImage : unselectedImage;
    imageView.hidden = !inPseudoEditMode;
    [UIView commitAnimations];

    UILabel *label = (UILabel *)[cell.contentView viewWithTag:kCellLabelTag];
    label.text =[listOfItems objectAtIndex:[indexPath row]];
    label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;
    label.opaque = NO;

    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

[tv deselectRowAtIndexPath:indexPath animated:YES];

    if (inPseudoEditMode) {

        BOOL selected = [[selectedArray objectAtIndex:[indexPath row]] boolValue];
        [selectedArray replaceObjectAtIndex:[indexPath row] withObject:[NSNumber numberWithBool:!selected]];
        [tv reloadData];
    }
}

A: I guess you want to allow only one row selected at a time.
Here is what I suggest in tableView: didSelectRowAtIndexPath::
Mark all row as not selected:
for (int i = 0; i < [selectedArray count]; i++) {
    [selectedArray replaceObjectAtIndex:i withObject:[NSNumber numberWithBool:NO]];
}

Then, mark the current row as selected:
[selectedArray replaceObjectAtIndex:[indexPath row] withObject:[NSNumber numberWithBool:YES]];

OR, do it all in the same for loop:
for (int i = 0; i < [selectedArray count]; i++) {
    NSNumber rowSelected = [NSNumber numberWithBool:(indexPath.row == i)];
    [selectedArray replaceObjectAtIndex:i withObject:rowSelected];
}

Hope this is what you want!

A: Shortest way which i use

for (int i = 0; i < [selectedArray count]; i++) {
    [selectedArray replaceObjectAtIndex:i withObject:[NSNumber numberWithBool:i==indexpath.row?YES:NO]];
}


Who Qualifies as a Senior?
Home » Who Qualifies as a Senior?
Some of us duck the label of "senior" at all costs. We don't want to be labeled, don't want to think of ourselves as "old." There's a perception to being a senior and even if the words attached to senior sound great (think "golden years," "positive aging" or "young at heart") the fact remains that many of us just don't want to associate with being a senior. Yet – avoiding the label at all costs actually costs you! There are plenty of benefits to being an "older adult" including cost savings, so at Amintro, we invite you to think of the positives of aging, like being able to ask for the seniors discount or even better, accessing resources like ours – for free!
But first – the question remains, who qualifies as a senior? Our research suggests that "senior" is a rather free-flowing term encompassing anyone from age 45 to 105! That's quite the age gap. Zoomer, a magazine for seniors, defined their target audience at a recent trade show as anyone 45+. Yikes! That means I too could be considered a senior yet personally, I barely identify as middle-aged! Some retail outlets offer "seniors discounts" to those over 50, others at 55+ and the Canadian government says you can start collecting your pension early, at age 60. However, 65+ still remains the most common determinant of senior status.
So it appears that figuring out what makes a senior, "senior" has nothing to do with age. It probably has a whole lot more to do with attitude. As with any stage of life, how we approach the world has a much more significant impact on our attitudes and behaviours than our actual numerical age. Yoga after 70? You bet! In fact yoga has been shown to help significantly with everything from joint pain to alleviating fine lines and wrinkles! Travelling as a senior? Take advantage of the many discounts offered to seniors by airlines, bus tours, restaurants and more. With the ability to travel "off-peak" season you can save even more money. Alternatively, many people are choosing to work beyond age 65 or to work part time as a way to keep healthy, active, engaged and stay mentally fit. It doesn't surprise us then that the whole definition of what constitutes a senior has changed as well. Frankly, the way we see it, if you're asked for ID the next time you hit the drug store or your local diner – take it as a compliment and take the discount too!
At Amintro – we offer a free service helping older adults to connect with like-minded people across the street or across town. If you're 50+ join Amintro today and make a new friend – someone who can tag along on all your adventures!


You're invited to Valueguyz's Pune Meetup 2017!
Watch the video above before reading further.
You are not put on Earth to do a lousy job everyday to keep up with the bills.
You are here to experience life and live the way you like.
This can be achieved if you can isolate your financial success from life choices ie, you keep aside money matters n start doing things irrespective of if it pays or loses money. apne dil ko follow karo n do passionate things in your life.
Well dost I will help you to decode n uncomplecate life as I am coming to your city.
Learn to retire in just 8 yrs.
How Investing in the Stock Market can create passive income.
How small investments with the help of compounding can create substantial wealth.
Have questions on finance or investing ? Get answers right away, build confidence.
Meet like-minded Valueguyz leading same path as you.
Build your immunity against sattebaaji.
Success stories of valueguyz. Hear yourself n get inspired.


An innovative promotional clothing, workwear and embroidery and printing supplier, Shiny is a leading company for uniforms and decoration in the southern hemisphere. One of the largest employers in the industry, its stellar reputation has been built over 24 years, with an unwavering commitment to exceptional customer service and quality products.
Established in 2004 Elk is proudly based in Preston, Australia. Winner of the 2017 Telstra Victorian Medium Business Award, Elk has an incredible global reach with products available in over 1,200 independent retailers across 20 different countries. The label designs original, contemporary fashion, accessories, hand crafted leather goods and footwear defined by an aesthetic of stylish simplicity.
Stainless Services offer end-to-end tailored solutions for all kinds of stainless steel applications predominantly in the food and beverage industry. Think storage and processing tanks, platforms, work areas, railings and guards, trolleys and conveyors, along with the smarts required to draw them all together for streamlined, sustainable and economical practices for manufacturers of tomorrow - that's our speciality.
Nationwide Connect (NWC) P/L is a recycling company based in Epping Victoria which undertakes recycling of post consumer PVC from the building, construction and demolition industries. The principal plastic recycled is in the form of rigid PVC pipe. NWC P/L is creating an environment for the recycling of all PVC pipes waste to be eliminated from landfill, allowing the plastic industry to create new PVC products though reuse and assist in reducing our carbon footprint. Waste PVC materials are recovered recycled and returned back into non pressured pipe.


A superb opportunity has arisen for someone to join am impressive business in Central Guildford. You will need experience in finance, and as this is a small finance team you will also need to be a hands on and "happy to help" person.
This is a great opportunity to join an impressive business and really form part of a team. A lovely team environment and a great culture you will be an integral part of the finance function. You will need to have experience in finance and ideally have used Sage previously but you must have good excel skills.


For more than 600 years the magnificent spectacle of Lumley Castle has dominated the County Durham landscape. Set within nine acres of parkland overlooking the River Wear, Lumley Castle Hotel is a fairytale place to get married. We invite you to hold your wedding ceremony, reception and evening celebrations in our unique surroundings. Whether you are planning an intimate wedding reception or larger celebration, we are sure that our magnificent state rooms and sumptuously decorated intimate dining rooms will not fail to impress. An exciting blend of heritage and splendour, superb food and outstanding service will make your day one to cherish and remember forever. We do, however realise that your special day should be as unique as you are and therefore would be delighted to discuss your individual requirements and budgets in order to ensure that Lumley Castle is your first choice of wedding venue in Durham & the North East.
Congratulations on your upcoming wedding! We are delighted that you are considering Lumley Castle Hotel for your wedding venue! Here at Lumley Castle Hotel we have an array of packages available to suit your every requirement as we know each wedding is unique in its own way. We would love to show you around Lumley Castle Hotel and hear all about your exciting wedding plans. Please do get in touch to arrange an appointment. We look forward to helping you plan your magical wedding day!
A fabulous day made by a beautiful venue and the most brilliant staff! No issues no stress and the hotel were happy to help with anything!
3.30 pm until 6 pm. Come and see our wedding rooms how they could look on your special day and meet with our wedding planners and trusted suppliers. Entry is free and we would love for you to come!
Here at Lumley Castle Hotel we have some fantastic enhancements available, the most popular being our Candy, Cookie or Savory Cart!